fixed <pre> handling
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@11246 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
7a0166faad
commit
83c9da455a
@ -31,6 +31,38 @@
|
||||
|
||||
FORCE_LINK_ME(m_pre)
|
||||
|
||||
// replaces '\t', ' ' and '\n' with HTML markup:
|
||||
static wxString HtmlizeWhitespaces(const wxString& str)
|
||||
{
|
||||
wxString out;
|
||||
size_t i = 0, len = str.Len();
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
switch (str[i])
|
||||
{
|
||||
case wxT('<'):
|
||||
while (i < len && str[i] != wxT('>'))
|
||||
out << str[i++];
|
||||
out << wxT('>');
|
||||
break;
|
||||
case wxT(' '):
|
||||
out << wxT(" ");
|
||||
break;
|
||||
case wxT('\n'):
|
||||
out << wxT("<br>");
|
||||
break;
|
||||
case wxT('\t'):
|
||||
for (size_t j = 8 - i%8; j > 0; j--) out << wxT(" ");
|
||||
break;
|
||||
default:
|
||||
out << str[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// The list handler:
|
||||
//-----------------------------------------------------------------------------
|
||||
@ -63,13 +95,9 @@ TAG_HANDLER_BEGIN(PRE, "PRE")
|
||||
wxString srcMid =
|
||||
m_WParser->GetSource()->Mid(tag.GetBeginPos(),
|
||||
tag.GetEndPos1() - tag.GetBeginPos());
|
||||
srcMid.Replace(wxT("\t"), wxT(" "));
|
||||
srcMid.Replace(wxT(" "), wxT(" "));
|
||||
srcMid.Replace(wxT("\n"), wxT("<br>"));
|
||||
|
||||
// It is safe to temporarily change the source being parsed,
|
||||
// provided we restore the state back after parsing
|
||||
m_Parser->SetSourceAndSaveState(srcMid);
|
||||
m_Parser->SetSourceAndSaveState(HtmlizeWhitespaces(srcMid));
|
||||
m_Parser->DoParsing();
|
||||
m_Parser->RestoreState();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user