]> git.saurik.com Git - wxWidgets.git/commitdiff
added ParseInnerSource() to make <pre>-like parsing easier
authorVáclav Slavík <vslavik@fastmail.fm>
Mon, 3 Apr 2006 19:34:21 +0000 (19:34 +0000)
committerVáclav Slavík <vslavik@fastmail.fm>
Mon, 3 Apr 2006 19:34:21 +0000 (19:34 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@38535 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/html/htmlpars.h
src/html/htmlpars.cpp
src/html/m_pre.cpp

index d102b6c8dd782661edf2a51ce22533c455d4f5d2..7a7951b3e8de83acba30af49ba22f4d6117018a7 100644 (file)
@@ -116,6 +116,10 @@ public:
     // empty
     virtual bool RestoreState();
 
+    // Returns HTML source inside the element (i.e. between the starting
+    // and ending tag)
+    wxString GetInnerSource(const wxHtmlTag& tag);
+
     // Parses HTML string 'markup' and extracts charset info from <meta> tag
     // if present. Returns empty string if the tag is missing.
     // For wxHTML's internal use.
@@ -224,6 +228,12 @@ protected:
     void ParseInner(const wxHtmlTag& tag)
         { m_Parser->DoParsing(tag.GetBeginPos(), tag.GetEndPos1()); }
 
+    // Parses given source as if it was tag's inner code (see
+    // wxHtmlParser::GetInnerSource).  Unlike ParseInner(), this method lets
+    // you specify the source code to parse. This is useful when you need to
+    // modify the inner text before parsing.
+    void ParseInnerSource(const wxString& source);
+
     wxHtmlParser *m_Parser;
 
     DECLARE_NO_COPY_CLASS(wxHtmlTagHandler)
index b1da8c92df2ccaf088f9f28d7259cdd891d49981..ea7f38d865fa4f1f76613f21ecb0ed0556f958c1 100644 (file)
@@ -432,12 +432,27 @@ bool wxHtmlParser::RestoreState()
     return true;
 }
 
+wxString wxHtmlParser::GetInnerSource(const wxHtmlTag& tag)
+{
+    return GetSource()->Mid(tag.GetBeginPos(),
+                            tag.GetEndPos1() - tag.GetBeginPos());
+}
+
 //-----------------------------------------------------------------------------
 // wxHtmlTagHandler
 //-----------------------------------------------------------------------------
 
 IMPLEMENT_ABSTRACT_CLASS(wxHtmlTagHandler,wxObject)
 
+void wxHtmlTagHandler::ParseInnerSource(const wxString& source)
+{
+    // It is safe to temporarily change the source being parsed,
+    // provided we restore the state back after parsing
+    m_Parser->SetSourceAndSaveState(source);
+    m_Parser->DoParsing();
+    m_Parser->RestoreState();
+}
+
 
 //-----------------------------------------------------------------------------
 // wxHtmlEntitiesParser
index f522512994122253a8bc1547f0e84f826cba0005..4b5a71c7aa547e13bddf4a6fa0f0469d5d3ceb82 100644 (file)
@@ -104,14 +104,8 @@ TAG_HANDLER_BEGIN(PRE, "PRE")
         c->SetAlignHor(wxHTML_ALIGN_LEFT);
         c->SetIndent(m_WParser->GetCharHeight(), wxHTML_INDENT_TOP);
 
-        wxString srcMid =
-            m_WParser->GetSource()->Mid(tag.GetBeginPos(),
-                                        tag.GetEndPos1() - tag.GetBeginPos());
-        // It is safe to temporarily change the source being parsed,
-        // provided we restore the state back after parsing
-        m_Parser->SetSourceAndSaveState(HtmlizeWhitespaces(srcMid));
-        m_Parser->DoParsing();
-        m_Parser->RestoreState();
+        wxString srcMid = m_WParser->GetInnerSource(tag);
+        ParseInnerSource(HtmlizeWhitespaces(srcMid));
 
         m_WParser->CloseContainer();
         m_WParser->CloseContainer();