X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8907154c1a8a6882c6797d1f16393ddfb23e7f3a..a236aa2058ccf3d36e9cafc20fa7375080c4be50:/include/wx/html/htmlpars.h diff --git a/include/wx/html/htmlpars.h b/include/wx/html/htmlpars.h index 446fa3cba2..2f769eadab 100644 --- a/include/wx/html/htmlpars.h +++ b/include/wx/html/htmlpars.h @@ -18,10 +18,10 @@ #include "wx/hash.h" #include "wx/fontenc.h" -class WXDLLIMPEXP_BASE wxMBConv; -class WXDLLIMPEXP_HTML wxHtmlParser; -class WXDLLIMPEXP_HTML wxHtmlTagHandler; -class WXDLLIMPEXP_HTML wxHtmlEntitiesParser; +class WXDLLIMPEXP_FWD_BASE wxMBConv; +class WXDLLIMPEXP_FWD_HTML wxHtmlParser; +class WXDLLIMPEXP_FWD_HTML wxHtmlTagHandler; +class WXDLLIMPEXP_FWD_HTML wxHtmlEntitiesParser; class wxHtmlTextPieces; class wxHtmlParserState; @@ -35,7 +35,7 @@ enum wxHtmlURLType }; // This class handles generic parsing of HTML document : it scans -// the document and divide it into blocks of tags (where one block +// the document and divides it into blocks of tags (where one block // consists of starting and ending tag and of text between these // 2 tags. class WXDLLIMPEXP_HTML wxHtmlParser : public wxObject @@ -59,7 +59,7 @@ public: // This method does these things: // 1. call InitParser(source); // 2. call DoParsing(); - // 3. call GetProduct(); (it's return value is then returned) + // 3. call GetProduct(); (its return value is then returned) // 4. call DoneParser(); wxObject* Parse(const wxString& source); @@ -96,10 +96,10 @@ public: // // // This last it has different meaning, we don't want it to be parsed by myitems handler! - // handler can handle only 'myitems' (e.g. it's GetSupportedTags returns "MYITEMS") + // handler can handle only 'myitems' (e.g. its GetSupportedTags returns "MYITEMS") // you can call PushTagHandler(handler, "IT") when you find // and call PopTagHandler() when you find - void PushTagHandler(wxHtmlTagHandler *handler, wxString tags); + void PushTagHandler(wxHtmlTagHandler *handler, const wxString& tags); // Restores state before last call to PushTagHandler void PopTagHandler(); @@ -107,7 +107,7 @@ public: wxString* GetSource() {return &m_Source;} void SetSource(const wxString& src); - // Sets HTML source and remebers current parser's state so that it can + // Sets HTML source and remembers current parser's state so that it can // later be restored. This is useful for on-line modifications of // HTML source (for example,
 handler replaces spaces with  
     // and newlines with 
) @@ -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 tag // if present. Returns empty string if the tag is missing. // For wxHTML's internal use. @@ -124,6 +128,13 @@ public: // Returns entity parser object, used to substitute HTML &entities; wxHtmlEntitiesParser *GetEntitiesParser() const { return m_entitiesParser; } + // Returns true if the tag starting at the given position is a comment tag + // + // p should point to '<' character and is modified to point to the closing + // '>' of the end comment tag if this is indeed a comment + static bool + SkipCommentTag(wxString::const_iterator& p, wxString::const_iterator end); + protected: // DOM structure void CreateDOMTree(); @@ -134,10 +145,9 @@ protected: // Adds text to the output. // This is called from Parse() and must be overriden in derived classes. - // txt is not guaranteed to be only one word. It is largest continuous part of text - // (= not broken by tags) - // NOTE : using char* because of speed improvements - virtual void AddText(const wxChar* txt) = 0; + // txt is not guaranteed to be only one word. It is largest continuous part + // of text (= not broken by tags) + virtual void AddText(const wxString& txt) = 0; // Adds tag and proceeds it. Parse() may (and usually is) called from this method. // This is called from Parse() and may be overriden. @@ -189,7 +199,7 @@ protected: // Each recognized tag is passed to handler which is capable // of handling it. Each tag is handled in 3 steps: // 1. Handler will modifies state of parser -// (using it's public methods) +// (using its public methods) // 2. Parser parses source between starting and ending tag // 3. Handler restores original state of the parser class WXDLLIMPEXP_HTML wxHtmlTagHandler : public wxObject @@ -224,6 +234,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)