added ParseInnerSource() to make <pre>-like parsing easier
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@38535 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
47eb93d02d
commit
e7feeafa56
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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();
|
||||
|
Loading…
Reference in New Issue
Block a user