From 48f576604b229255e221cdcd587f532b2bd014d6 Mon Sep 17 00:00:00 2001
From: Ralph Amissah <ralph@amissah.com>
Date: Sat, 13 Oct 2007 11:26:57 +0100
Subject: underscore exception requires additional tweaking of regexes,
 solution not optimal (sisu_markup as basic test)

---
 lib/sisu/v0/html_tune.rb        | 4 +++-
 lib/sisu/v0/manpage.rb          | 4 +++-
 lib/sisu/v0/odf.rb              | 5 ++---
 lib/sisu/v0/plaintext.rb        | 3 ++-
 lib/sisu/v0/shared_html_lite.rb | 4 +++-
 lib/sisu/v0/shared_xml.rb       | 3 ++-
 6 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/lib/sisu/v0/html_tune.rb b/lib/sisu/v0/html_tune.rb
index 82183a02..ab37abb2 100644
--- a/lib/sisu/v0/html_tune.rb
+++ b/lib/sisu/v0/html_tune.rb
@@ -333,7 +333,9 @@ module SiSU_Tune
             end
             para.gsub!(/<a href="\.\.\//,%{<a href="#{@vz.url_site}/})
           end
-        else para.gsub!(/(?=^|[^}])_</m,'&lt;'); para.gsub!(/(?=^|[^}])_>/m,'&gt;') #code-block: angle brackets special characters
+        else
+          para.gsub!(/(^|[^}])_</m,'\1&lt;'); para.gsub!(/(^|[^}])_>/m,'\1&gt;') #code-block: angle brackets special characters
+          para.gsub!(/(^|[^}])_</m,'\1&lt;'); para.gsub!(/(^|[^}])_>/m,'\1&gt;')
         end
         @tuned_file << para
       end
diff --git a/lib/sisu/v0/manpage.rb b/lib/sisu/v0/manpage.rb
index 10480b90..8de98bde 100644
--- a/lib/sisu/v0/manpage.rb
+++ b/lib/sisu/v0/manpage.rb
@@ -339,7 +339,9 @@ WOK
           para.gsub!(/&#126;/,'~') if para #manpages use this
           if para =~/<:(?:group|verse|alt|code)(?:-end)?>(?:\s+<~(\d+);(?:\w|[0-6]:)\d+;\w\d+><#@dp:#@dp>)?/
             if para =~/<:code>/ #code-block: angle brackets special characters
-              para.gsub!(/(?=^|[^}])_</m,'<'); para.gsub!(/(?=^|[^}])_>/m,'>')
+              para.gsub!(/(^|[^}])_([<>])/m,'\1\2') # _> _<
+              para.gsub!(/(^|[^}])_([<>])/m,'\1\2') # _<_<
+              #para.gsub!(/(?![}])_([<>])/m,'\1') # _> _<                        }_<
             end
             para.gsub!(/<br(?: \/)?>/,"\n\n.P\n\n")                                   # watch
             para.gsub!(/<:(?:group|verse|alt)(?:\\-end)?>(?:\s+<~(\d+);(?:\w|[0-6]:)\d+;\w\d+><#@dp:#@dp>)?/,'')
diff --git a/lib/sisu/v0/odf.rb b/lib/sisu/v0/odf.rb
index 171372a9..4884c33a 100644
--- a/lib/sisu/v0/odf.rb
+++ b/lib/sisu/v0/odf.rb
@@ -474,10 +474,9 @@ module SiSU_ODF
             para=para.strip
           end
           if para =~/<:code>/ #code-block: angle brackets special characters
-            para.gsub!(/(?=^|[^}])_</m,'&lt;'); para.gsub!(/(?=^|[^}])_>/m,'&gt;')
+            para.gsub!(/(^|[^}])_</m,'\1&lt;'); para.gsub!(/(^|[^}])_>/m,'\1&gt;')
+            para.gsub!(/(^|[^}])_</m,'\1&lt;'); para.gsub!(/(^|[^}])_>/m,'\1&gt;')
           end
-          ##para.gsub!(/_</m,'&lt;'); para.gsub!(/([^_])_>/m,'\1&gt;') #code-block: angle brackets special characters
-          #para.gsub!(/_</m,'&lt;'); para.gsub!(/_>/m,'&gt;') #code-block: angle brackets special characters
           para.gsub!(/^(<:i[1-9]>\s+)?_\*\s+/,'\1<draw:frame draw:style-name="gr1" text:anchor-type="as-char" svg:width="0.22cm" svg:height="0.22cm" draw:z-index="2"><draw:image xlink:href="Pictures/bullet_09.png" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad"/></draw:frame> ') # bullet_09.png
           #para.gsub!(/^(<:i[1-9]>\s+)?_\*\s+/,'\1<text:span text:style-name="T6">●</text:span> ')     #bullet
           #para.gsub!(/^(<:i[1-9]>\s+)?_\*\s+/,'\1● ') # bullet utf8, make smaller if used
diff --git a/lib/sisu/v0/plaintext.rb b/lib/sisu/v0/plaintext.rb
index 361624e1..d6284613 100644
--- a/lib/sisu/v0/plaintext.rb
+++ b/lib/sisu/v0/plaintext.rb
@@ -336,7 +336,8 @@ WOK
           end
           if para =~/<:(?:group|verse|alt|code)(?:-end)?>(?:\s+<~(\d+);(?:\w|[0-6]:)\d+;\w\d+><#@dp:#@dp>)?/
             if para =~/<:code>/ #code-block: angle brackets special characters
-              para.gsub!(/(?=^|[^}])_</m,'<'); para.gsub!(/(?=^|[^}])_>/m,'>')
+              para.gsub!(/(^|[^}])_([<>])/m,'\1\2') # _> _<
+              para.gsub!(/(^|[^}])_([<>])/m,'\1\2') # _<_<
             end
             para.gsub!(/<br(?: \/)?>/,"\n")                                   # watch
             para.gsub!(/<:(?:group|verse|alt|code)(?:-end)?>(?:\s+<~(\d+);(?:\w|[0-6]:)\d+;\w\d+><#@dp:#@dp>)?/,'')
diff --git a/lib/sisu/v0/shared_html_lite.rb b/lib/sisu/v0/shared_html_lite.rb
index d63f4cef..730bf00d 100644
--- a/lib/sisu/v0/shared_html_lite.rb
+++ b/lib/sisu/v0/shared_html_lite.rb
@@ -133,7 +133,9 @@ module SiSU_Format_Shared
         para.gsub!(/\b[_\\]((?:https?|file|ftp):\/\/\S+?\.[^'"><\s]+?)([;.,]?(?:\s|$))/,'<a href="\1" target="_top">\1</a>\2') #http ftp matches escaped, no decoration
         para.gsub!(/((?:^|\s)[}])((?:https?|file|ftp):\/\/\S+?\.[^'"><\s]+?)([;.,]?(?:\s|$))/,'\1<a href="\2" target="_top">\2</a>\3') #special case \{ e.g. \}http://url
         para.gsub!(/(^|\s)((?:https?|file|ftp):\/\/\S+?\.[^'"><\s]+?)([;.,]?(?=\s|$))/,%{\\1#{@url_brace.xml_open}<a href="\\2" target="_top">\\2</a>#{@url_brace.xml_close}\\3}) #http ftp matches with decoration
-      else para.gsub!(/(?=^|[^}])_</m,'&lt;'); para.gsub!(/(?=^|[^}])_>/m,'&gt;') #code-block: angle brackets special characters
+      else
+        para.gsub!(/(^|[^}])_</m,'\1&lt;'); para.gsub!(/(^|[^}])_>/m,'\1&gt;') #code-block: angle brackets special characters
+        para.gsub!(/(^|[^}])_</m,'\1&lt;'); para.gsub!(/(^|[^}])_>/m,'\1&gt;')
       end
       para
     end
diff --git a/lib/sisu/v0/shared_xml.rb b/lib/sisu/v0/shared_xml.rb
index 62e8b5ca..7f9cdc83 100644
--- a/lib/sisu/v0/shared_xml.rb
+++ b/lib/sisu/v0/shared_xml.rb
@@ -365,7 +365,8 @@ module SiSU_XML_munge
         para.gsub!(/&nbsp;/,'&#160;')
         #para.gsub!(/&nbsp;/,' ') #clean
       else
-        para.gsub!(/(?=^|[^}])_</m,'&lt;'); para.gsub!(/(?=^|[^}])_>/m,'&gt;') #code-block: angle brackets special characters
+        para.gsub!(/(^|[^}])_</m,'\1&lt;'); para.gsub!(/(^|[^}])_>/m,'\1&gt;') #code-block: angle brackets special characters
+        para.gsub!(/(^|[^}])_</m,'\1&lt;'); para.gsub!(/(^|[^}])_>/m,'\1&gt;')
         para.gsub!(/&nbsp;/,'&#160;')
       end
       para
-- 
cgit v1.2.3