chiark / gitweb /
m.code: add ZWNJ before ANSI colored squares.
authorVladimír Vondruš <mosra@centrum.cz>
Tue, 30 Apr 2019 21:30:25 +0000 (23:30 +0200)
committerVladimír Vondruš <mosra@centrum.cz>
Tue, 30 Apr 2019 21:44:05 +0000 (23:44 +0200)
Otherwise it wasn't wrapping even with .m-console-wrap. Not sure why,
<wbr/> didn't work either.

documentation/test_doxygen/contents_code_language/ansi.html
plugins/ansilexer.py
plugins/m/test/code/page.html

index 4457075d3f6abf38f2633927ebab899cc194cb14..d5aa5488174dcf77c159cb4fcd7076fa1fc5e1a3 100644 (file)
         <h1>
           ANSI color escape code highlighting
         </h1>
-<pre class="m-console">!<span class="g g-AnsiBlue">[</span><span class="g g-AnsiBrightWhite">mosra@don-perverzo </span><span class="g g-AnsiWhite">m.css</span><span class="g g-AnsiBlue">]</span><span class="g g-AnsiBrightCyan">$ </span></pre><pre class="m-console"><span style="color: #dcdcdc; background-color: #dcdcdc">██</span> <span style="color: #a5c9ea; background-color: #a5c9ea">██</span> <span style="color: #3bd267; background-color: #3bd267">██</span> <span style="color: #c7cf2f; background-color: #c7cf2f">██</span> <span style="color: #cd3431; background-color: #cd3431">██</span> <span style="color: #2f83cc; background-color: #2f83cc">▓▓</span> <span style="color: #747474; background-color: #747474">▒▒</span>
+<pre class="m-console">!<span class="g g-AnsiBlue">[</span><span class="g g-AnsiBrightWhite">mosra@don-perverzo </span><span class="g g-AnsiWhite">m.css</span><span class="g g-AnsiBlue">]</span><span class="g g-AnsiBrightCyan">$ </span></pre><pre class="m-console"><span style="color: #dcdcdc; background-color: #dcdcdc">&zwnj;██</span> <span style="color: #a5c9ea; background-color: #a5c9ea">&zwnj;██</span> <span style="color: #3bd267; background-color: #3bd267">&zwnj;██</span> <span style="color: #c7cf2f; background-color: #c7cf2f">&zwnj;██</span> <span style="color: #cd3431; background-color: #cd3431">&zwnj;██</span> <span style="color: #2f83cc; background-color: #2f83cc">&zwnj;▓▓</span> <span style="color: #747474; background-color: #747474">&zwnj;▒▒</span>
 
-<span style="color: #3bd267">  </span> <span style="color: #3bd267">  </span> <span style="color: #3bd267">░░</span> <span style="color: #3bd267">▒▒</span> <span style="color: #3bd267">▓▓</span> <span style="color: #3bd267; background-color: #3bd267">██</span></pre>
+Leading zeros: <span style="color: #0f7403; background-color: #0f7403">&zwnj;▒▒</span> <span style="color: #0f7403">&zwnj;▒▒</span>
+
+<span style="color: #3bd267">&zwnj;  </span> <span style="color: #3bd267">&zwnj;  </span> <span style="color: #3bd267">&zwnj;░░</span> <span style="color: #3bd267">&zwnj;▒▒</span> <span style="color: #3bd267">&zwnj;▓▓</span> <span style="color: #3bd267; background-color: #3bd267">&zwnj;██</span></pre>
       </div>
     </div>
   </div>
index d9d12e393644d3c89291e53685c81d1351e3075a..e22686b7c22379881f9919baab662b85a0e3b648 100644 (file)
@@ -86,8 +86,8 @@ class AnsiLexer(RegexLexer):
             ('\x1b\\[(\\d+)(;\\d+)?m([^\x1b]*)', callback)]
     }
 
-_ansi_fg_color_re = re.compile('class="g g-AnsiForegroundColor([0-9a-f]{6})"')
-_ansi_fg_bg_color_re = re.compile('class="g g-AnsiForegroundBackgroundColor([0-9a-f]{6})"')
+_ansi_fg_color_re = re.compile('class="g g-AnsiForegroundColor([0-9a-f]{6})">')
+_ansi_fg_bg_color_re = re.compile('class="g g-AnsiForegroundBackgroundColor([0-9a-f]{6})">')
 
 class HtmlAnsiFormatter(HtmlFormatter):
     def wrap(self, source, outfile):
@@ -96,7 +96,12 @@ class HtmlAnsiFormatter(HtmlFormatter):
     def _wrap_code(self, source):
         for i, t in source:
             if i == 1: # it's a line of formatted code
-                t = _ansi_fg_bg_color_re.sub('style="color: #\\1; background-color: #\\1"', t)
-                t = _ansi_fg_color_re.sub('style="color: #\\1"', t)
+                # Add ZWNJ for before each character because otherwise it's
+                # somehow impossible to wrap even with word-break: break-all.
+                # Not sure why (and not sure if this is the best solution), but
+                # had to ship a thing so there it is. Adding <wbr/> did not
+                # help.
+                t = _ansi_fg_bg_color_re.sub('style="color: #\\1; background-color: #\\1">&zwnj;', t)
+                t = _ansi_fg_color_re.sub('style="color: #\\1">&zwnj;', t)
                 #t += 'H'
             yield i, t
index 7d50e3862c5c45c06d05afcb92cd6257e98810a4..55d108804cce047f3d2bb4bf13998c7739e5c6a7 100644 (file)
@@ -35,11 +35,11 @@ rendered as plain monospace text: <code>code</code>.</p>
 CONTRIBUTING.rst  CREDITS.rst  <span class="g g-AnsiBrightBlue">doc</span>            <span class="g g-AnsiBrightBlue">plugins</span>        README.rst
 COPYING           <span class="g g-AnsiBrightBlue">css</span>          <span class="g g-AnsiBrightBlue">documentation</span>  <span class="g g-AnsiBrightBlue">pelican-theme</span>  <span class="g g-AnsiBrightBlue">site</span></pre>
 <p>Console colors:</p>
-<pre class="m-console"><span style="color: #dcdcdc; background-color: #dcdcdc">██</span> <span style="color: #a5c9ea; background-color: #a5c9ea">██</span> <span style="color: #3bd267; background-color: #3bd267">██</span> <span style="color: #c7cf2f; background-color: #c7cf2f">██</span> <span style="color: #cd3431; background-color: #cd3431">██</span> <span style="color: #2f83cc; background-color: #2f83cc">▓▓</span> <span style="color: #747474; background-color: #747474">▒▒</span>
+<pre class="m-console"><span style="color: #dcdcdc; background-color: #dcdcdc">&zwnj;██</span> <span style="color: #a5c9ea; background-color: #a5c9ea">&zwnj;██</span> <span style="color: #3bd267; background-color: #3bd267">&zwnj;██</span> <span style="color: #c7cf2f; background-color: #c7cf2f">&zwnj;██</span> <span style="color: #cd3431; background-color: #cd3431">&zwnj;██</span> <span style="color: #2f83cc; background-color: #2f83cc">&zwnj;▓▓</span> <span style="color: #747474; background-color: #747474">&zwnj;▒▒</span>
 
-Leading zeros: <span style="color: #0f7403; background-color: #0f7403">▒▒</span> <span style="color: #0f7403">▒▒</span>
+Leading zeros: <span style="color: #0f7403; background-color: #0f7403">&zwnj;▒▒</span> <span style="color: #0f7403">&zwnj;▒▒</span>
 
-<span style="color: #3bd267">  </span> <span style="color: #3bd267">  </span> <span style="color: #3bd267">░░</span> <span style="color: #3bd267">▒▒</span> <span style="color: #3bd267">▓▓</span> <span style="color: #3bd267; background-color: #3bd267">██</span></pre>
+<span style="color: #3bd267">&zwnj;  </span> <span style="color: #3bd267">&zwnj;  </span> <span style="color: #3bd267">&zwnj;░░</span> <span style="color: #3bd267">&zwnj;▒▒</span> <span style="color: #3bd267">&zwnj;▓▓</span> <span style="color: #3bd267; background-color: #3bd267">&zwnj;██</span></pre>
 <pre class="m-code">// this language is not highlighted</pre>
 <p>Properly preserve backslashes: <code class="m-code"><span class="k">\frac</span><span class="nb">{</span>a<span class="nb">}{</span>b<span class="nb">}</span></code></p>
 <p>Don't trim leading spaces in blocks:</p>