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)
|
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:
|
// The list handler:
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
@ -63,13 +95,9 @@ TAG_HANDLER_BEGIN(PRE, "PRE")
|
|||||||
wxString srcMid =
|
wxString srcMid =
|
||||||
m_WParser->GetSource()->Mid(tag.GetBeginPos(),
|
m_WParser->GetSource()->Mid(tag.GetBeginPos(),
|
||||||
tag.GetEndPos1() - 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,
|
// It is safe to temporarily change the source being parsed,
|
||||||
// provided we restore the state back after parsing
|
// provided we restore the state back after parsing
|
||||||
m_Parser->SetSourceAndSaveState(srcMid);
|
m_Parser->SetSourceAndSaveState(HtmlizeWhitespaces(srcMid));
|
||||||
m_Parser->DoParsing();
|
m_Parser->DoParsing();
|
||||||
m_Parser->RestoreState();
|
m_Parser->RestoreState();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user