From 83c9da455abe6143dee521104d4ca08b26996702 Mon Sep 17 00:00:00 2001 From: =?utf8?q?V=C3=A1clav=20Slav=C3=ADk?= Date: Wed, 1 Aug 2001 22:56:02 +0000 Subject: [PATCH] fixed
 handling

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@11246 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
---
 src/html/m_pre.cpp | 38 +++++++++++++++++++++++++++++++++-----
 1 file changed, 33 insertions(+), 5 deletions(-)

diff --git a/src/html/m_pre.cpp b/src/html/m_pre.cpp
index e6e26c6c85..043bc266a0 100644
--- a/src/html/m_pre.cpp
+++ b/src/html/m_pre.cpp
@@ -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("
"); + 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("
")); - // 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(); -- 2.45.2