X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3919d5306a6d0059675c971e21ff770079030666..80a779275ae04443c568dca919adb26cf6f5002c:/src/html/htmlpars.cpp?ds=sidebyside diff --git a/src/html/htmlpars.cpp b/src/html/htmlpars.cpp index b9ef2b9f76..7efb69af34 100644 --- a/src/html/htmlpars.cpp +++ b/src/html/htmlpars.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: htmlpars.cpp +// Name: src/html/htmlpars.cpp // Purpose: wxHtmlParser class (generic parser) // Author: Vaclav Slavik // RCS-ID: $Id$ @@ -9,16 +9,17 @@ #include "wx/wxprec.h" -#include "wx/defs.h" -#if wxUSE_HTML && wxUSE_STREAMS - #ifdef __BORLANDC__ -#pragma hdrstop + #pragma hdrstop #endif +#if wxUSE_HTML && wxUSE_STREAMS + #ifndef WXPRECOMP + #include "wx/dynarray.h" #include "wx/log.h" #include "wx/intl.h" + #include "wx/app.h" #endif #include "wx/tokenzr.h" @@ -27,7 +28,6 @@ #include "wx/fontmap.h" #include "wx/html/htmldefs.h" #include "wx/html/htmlpars.h" -#include "wx/dynarray.h" #include "wx/arrimpl.cpp" #ifdef __WXWINCE__ @@ -35,7 +35,6 @@ #endif // DLL options compatibility check: -#include "wx/app.h" WX_CHECK_BUILD_OPTIONS("wxHTML") const wxChar *wxTRACE_HTML_DEBUG = _T("htmldebug"); @@ -135,7 +134,7 @@ void wxHtmlParser::CreateDOMTree() { wxHtmlTagsCache cache(m_Source); m_TextPieces = new wxHtmlTextPieces; - CreateDOMSubTree(NULL, 0, m_Source.Length(), &cache); + CreateDOMSubTree(NULL, 0, m_Source.length(), &cache); m_CurTextPiece = 0; } @@ -272,7 +271,7 @@ void wxHtmlParser::DoParsing() { m_CurTag = m_Tags; m_CurTextPiece = 0; - DoParsing(0, m_Source.Length()); + DoParsing(0, m_Source.length()); } void wxHtmlParser::DoParsing(int begin_pos, int end_pos) @@ -432,12 +431,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 @@ -491,7 +505,8 @@ wxString wxHtmlEntitiesParser::Parse(const wxString& input) { if (c - last > 0) output.append(last, c - last); - if (++c == wxT('\0')) break; + if ( *++c == wxT('\0') ) + break; wxString entity; const wxChar *ent_s = c;