mirror of
https://github.com/evennia/evennia.git
synced 2026-03-31 21:17:17 +02:00
458 lines
No EOL
60 KiB
HTML
458 lines
No EOL
60 KiB
HTML
|
|
<!DOCTYPE html>
|
|
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<title>evennia.utils.text2html — Evennia 1.0-dev documentation</title>
|
|
<link rel="stylesheet" href="../../../_static/nature.css" type="text/css" />
|
|
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
|
|
<script id="documentation_options" data-url_root="../../../" src="../../../_static/documentation_options.js"></script>
|
|
<script src="../../../_static/jquery.js"></script>
|
|
<script src="../../../_static/underscore.js"></script>
|
|
<script src="../../../_static/doctools.js"></script>
|
|
<script src="../../../_static/language_data.js"></script>
|
|
<link rel="shortcut icon" href="../../../_static/favicon.ico"/>
|
|
<link rel="index" title="Index" href="../../../genindex.html" />
|
|
<link rel="search" title="Search" href="../../../search.html" />
|
|
</head><body>
|
|
<div class="related" role="navigation" aria-label="related navigation">
|
|
<h3>Navigation</h3>
|
|
<ul>
|
|
<li class="right" style="margin-right: 10px">
|
|
<a href="../../../genindex.html" title="General Index"
|
|
accesskey="I">index</a></li>
|
|
<li class="right" >
|
|
<a href="../../../py-modindex.html" title="Python Module Index"
|
|
>modules</a> |</li>
|
|
<li class="nav-item nav-item-0"><a href="../../../index.html">Evennia 1.0-dev documentation</a> »</li>
|
|
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> »</li>
|
|
<li class="nav-item nav-item-2"><a href="../../evennia.html" accesskey="U">evennia</a> »</li>
|
|
</ul>
|
|
</div>
|
|
|
|
<div class="document">
|
|
<div class="documentwrapper">
|
|
<div class="bodywrapper">
|
|
<div class="body" role="main">
|
|
|
|
<h1>Source code for evennia.utils.text2html</h1><div class="highlight"><pre>
|
|
<span></span><span class="sd">"""</span>
|
|
<span class="sd">ANSI -> html converter</span>
|
|
|
|
<span class="sd">Credit for original idea and implementation</span>
|
|
<span class="sd">goes to Muhammad Alkarouri and his</span>
|
|
<span class="sd">snippet #577349 on http://code.activestate.com.</span>
|
|
|
|
<span class="sd">(extensively modified by Griatch 2010)</span>
|
|
<span class="sd">"""</span>
|
|
|
|
<span class="kn">import</span> <span class="nn">re</span>
|
|
<span class="kn">from</span> <span class="nn">html</span> <span class="k">import</span> <span class="n">escape</span> <span class="k">as</span> <span class="n">html_escape</span>
|
|
<span class="kn">from</span> <span class="nn">.ansi</span> <span class="k">import</span> <span class="o">*</span>
|
|
|
|
|
|
<span class="c1"># All xterm256 RGB equivalents</span>
|
|
|
|
<span class="n">XTERM256_FG</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\033</span><span class="s2">[38;5;</span><span class="si">%s</span><span class="s2">m"</span>
|
|
<span class="n">XTERM256_BG</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\033</span><span class="s2">[48;5;</span><span class="si">%s</span><span class="s2">m"</span>
|
|
|
|
|
|
<div class="viewcode-block" id="TextToHTMLparser"><a class="viewcode-back" href="../../../api/evennia.utils.html#evennia.utils.text2html.TextToHTMLparser">[docs]</a><span class="k">class</span> <span class="nc">TextToHTMLparser</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> This class describes a parser for converting from ANSI to html.</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">tabstop</span> <span class="o">=</span> <span class="mi">4</span>
|
|
<span class="c1"># mapping html color name <-> ansi code.</span>
|
|
<span class="n">hilite</span> <span class="o">=</span> <span class="n">ANSI_HILITE</span>
|
|
<span class="n">unhilite</span> <span class="o">=</span> <span class="n">ANSI_UNHILITE</span> <span class="c1"># this will be stripped - there is no css equivalent.</span>
|
|
<span class="n">normal</span> <span class="o">=</span> <span class="n">ANSI_NORMAL</span> <span class="c1"># "</span>
|
|
<span class="n">underline</span> <span class="o">=</span> <span class="n">ANSI_UNDERLINE</span>
|
|
<span class="n">blink</span> <span class="o">=</span> <span class="n">ANSI_BLINK</span>
|
|
<span class="n">inverse</span> <span class="o">=</span> <span class="n">ANSI_INVERSE</span> <span class="c1"># this will produce an outline; no obvious css equivalent?</span>
|
|
<span class="n">colorcodes</span> <span class="o">=</span> <span class="p">[</span>
|
|
<span class="p">(</span><span class="s2">"color-000"</span><span class="p">,</span> <span class="n">unhilite</span> <span class="o">+</span> <span class="n">ANSI_BLACK</span><span class="p">),</span> <span class="c1"># pure black</span>
|
|
<span class="p">(</span><span class="s2">"color-001"</span><span class="p">,</span> <span class="n">unhilite</span> <span class="o">+</span> <span class="n">ANSI_RED</span><span class="p">),</span>
|
|
<span class="p">(</span><span class="s2">"color-002"</span><span class="p">,</span> <span class="n">unhilite</span> <span class="o">+</span> <span class="n">ANSI_GREEN</span><span class="p">),</span>
|
|
<span class="p">(</span><span class="s2">"color-003"</span><span class="p">,</span> <span class="n">unhilite</span> <span class="o">+</span> <span class="n">ANSI_YELLOW</span><span class="p">),</span>
|
|
<span class="p">(</span><span class="s2">"color-004"</span><span class="p">,</span> <span class="n">unhilite</span> <span class="o">+</span> <span class="n">ANSI_BLUE</span><span class="p">),</span>
|
|
<span class="p">(</span><span class="s2">"color-005"</span><span class="p">,</span> <span class="n">unhilite</span> <span class="o">+</span> <span class="n">ANSI_MAGENTA</span><span class="p">),</span>
|
|
<span class="p">(</span><span class="s2">"color-006"</span><span class="p">,</span> <span class="n">unhilite</span> <span class="o">+</span> <span class="n">ANSI_CYAN</span><span class="p">),</span>
|
|
<span class="p">(</span><span class="s2">"color-007"</span><span class="p">,</span> <span class="n">unhilite</span> <span class="o">+</span> <span class="n">ANSI_WHITE</span><span class="p">),</span> <span class="c1"># light grey</span>
|
|
<span class="p">(</span><span class="s2">"color-008"</span><span class="p">,</span> <span class="n">hilite</span> <span class="o">+</span> <span class="n">ANSI_BLACK</span><span class="p">),</span> <span class="c1"># dark grey</span>
|
|
<span class="p">(</span><span class="s2">"color-009"</span><span class="p">,</span> <span class="n">hilite</span> <span class="o">+</span> <span class="n">ANSI_RED</span><span class="p">),</span>
|
|
<span class="p">(</span><span class="s2">"color-010"</span><span class="p">,</span> <span class="n">hilite</span> <span class="o">+</span> <span class="n">ANSI_GREEN</span><span class="p">),</span>
|
|
<span class="p">(</span><span class="s2">"color-011"</span><span class="p">,</span> <span class="n">hilite</span> <span class="o">+</span> <span class="n">ANSI_YELLOW</span><span class="p">),</span>
|
|
<span class="p">(</span><span class="s2">"color-012"</span><span class="p">,</span> <span class="n">hilite</span> <span class="o">+</span> <span class="n">ANSI_BLUE</span><span class="p">),</span>
|
|
<span class="p">(</span><span class="s2">"color-013"</span><span class="p">,</span> <span class="n">hilite</span> <span class="o">+</span> <span class="n">ANSI_MAGENTA</span><span class="p">),</span>
|
|
<span class="p">(</span><span class="s2">"color-014"</span><span class="p">,</span> <span class="n">hilite</span> <span class="o">+</span> <span class="n">ANSI_CYAN</span><span class="p">),</span>
|
|
<span class="p">(</span><span class="s2">"color-015"</span><span class="p">,</span> <span class="n">hilite</span> <span class="o">+</span> <span class="n">ANSI_WHITE</span><span class="p">),</span> <span class="c1"># pure white</span>
|
|
<span class="p">]</span> <span class="o">+</span> <span class="p">[(</span><span class="s2">"color-</span><span class="si">%03i</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">i</span> <span class="o">+</span> <span class="mi">16</span><span class="p">),</span> <span class="n">XTERM256_FG</span> <span class="o">%</span> <span class="p">(</span><span class="s2">"</span><span class="si">%i</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">i</span> <span class="o">+</span> <span class="mi">16</span><span class="p">)))</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">240</span><span class="p">)]</span>
|
|
|
|
<span class="n">colorback</span> <span class="o">=</span> <span class="p">[</span>
|
|
<span class="p">(</span><span class="s2">"bgcolor-000"</span><span class="p">,</span> <span class="n">ANSI_BACK_BLACK</span><span class="p">),</span> <span class="c1"># pure black</span>
|
|
<span class="p">(</span><span class="s2">"bgcolor-001"</span><span class="p">,</span> <span class="n">ANSI_BACK_RED</span><span class="p">),</span>
|
|
<span class="p">(</span><span class="s2">"bgcolor-002"</span><span class="p">,</span> <span class="n">ANSI_BACK_GREEN</span><span class="p">),</span>
|
|
<span class="p">(</span><span class="s2">"bgcolor-003"</span><span class="p">,</span> <span class="n">ANSI_BACK_YELLOW</span><span class="p">),</span>
|
|
<span class="p">(</span><span class="s2">"bgcolor-004"</span><span class="p">,</span> <span class="n">ANSI_BACK_BLUE</span><span class="p">),</span>
|
|
<span class="p">(</span><span class="s2">"bgcolor-005"</span><span class="p">,</span> <span class="n">ANSI_BACK_MAGENTA</span><span class="p">),</span>
|
|
<span class="p">(</span><span class="s2">"bgcolor-006"</span><span class="p">,</span> <span class="n">ANSI_BACK_CYAN</span><span class="p">),</span>
|
|
<span class="p">(</span><span class="s2">"bgcolor-007"</span><span class="p">,</span> <span class="n">ANSI_BACK_WHITE</span><span class="p">),</span> <span class="c1"># light grey</span>
|
|
<span class="p">(</span><span class="s2">"bgcolor-008"</span><span class="p">,</span> <span class="n">hilite</span> <span class="o">+</span> <span class="n">ANSI_BACK_BLACK</span><span class="p">),</span> <span class="c1"># dark grey</span>
|
|
<span class="p">(</span><span class="s2">"bgcolor-009"</span><span class="p">,</span> <span class="n">hilite</span> <span class="o">+</span> <span class="n">ANSI_BACK_RED</span><span class="p">),</span>
|
|
<span class="p">(</span><span class="s2">"bgcolor-010"</span><span class="p">,</span> <span class="n">hilite</span> <span class="o">+</span> <span class="n">ANSI_BACK_GREEN</span><span class="p">),</span>
|
|
<span class="p">(</span><span class="s2">"bgcolor-011"</span><span class="p">,</span> <span class="n">hilite</span> <span class="o">+</span> <span class="n">ANSI_BACK_YELLOW</span><span class="p">),</span>
|
|
<span class="p">(</span><span class="s2">"bgcolor-012"</span><span class="p">,</span> <span class="n">hilite</span> <span class="o">+</span> <span class="n">ANSI_BACK_BLUE</span><span class="p">),</span>
|
|
<span class="p">(</span><span class="s2">"bgcolor-013"</span><span class="p">,</span> <span class="n">hilite</span> <span class="o">+</span> <span class="n">ANSI_BACK_MAGENTA</span><span class="p">),</span>
|
|
<span class="p">(</span><span class="s2">"bgcolor-014"</span><span class="p">,</span> <span class="n">hilite</span> <span class="o">+</span> <span class="n">ANSI_BACK_CYAN</span><span class="p">),</span>
|
|
<span class="p">(</span><span class="s2">"bgcolor-015"</span><span class="p">,</span> <span class="n">hilite</span> <span class="o">+</span> <span class="n">ANSI_BACK_WHITE</span><span class="p">),</span> <span class="c1"># pure white</span>
|
|
<span class="p">]</span> <span class="o">+</span> <span class="p">[(</span><span class="s2">"bgcolor-</span><span class="si">%03i</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">i</span> <span class="o">+</span> <span class="mi">16</span><span class="p">),</span> <span class="n">XTERM256_BG</span> <span class="o">%</span> <span class="p">(</span><span class="s2">"</span><span class="si">%i</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">i</span> <span class="o">+</span> <span class="mi">16</span><span class="p">)))</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">240</span><span class="p">)]</span>
|
|
|
|
<span class="c1"># make sure to escape [</span>
|
|
<span class="c1"># colorcodes = [(c, code.replace("[", r"\[")) for c, code in colorcodes]</span>
|
|
<span class="c1"># colorback = [(c, code.replace("[", r"\[")) for c, code in colorback]</span>
|
|
<span class="n">fg_colormap</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">((</span><span class="n">code</span><span class="p">,</span> <span class="n">clr</span><span class="p">)</span> <span class="k">for</span> <span class="n">clr</span><span class="p">,</span> <span class="n">code</span> <span class="ow">in</span> <span class="n">colorcodes</span><span class="p">)</span>
|
|
<span class="n">bg_colormap</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">((</span><span class="n">code</span><span class="p">,</span> <span class="n">clr</span><span class="p">)</span> <span class="k">for</span> <span class="n">clr</span><span class="p">,</span> <span class="n">code</span> <span class="ow">in</span> <span class="n">colorback</span><span class="p">)</span>
|
|
|
|
<span class="c1"># create stop markers</span>
|
|
<span class="n">fgstop</span> <span class="o">=</span> <span class="s2">"(?:</span><span class="se">\033</span><span class="s2">\[1m|</span><span class="se">\033</span><span class="s2">\[22m){0,1}</span><span class="se">\033</span><span class="s2">\[3[0-8].*?m|</span><span class="se">\033</span><span class="s2">\[0m|$"</span>
|
|
<span class="n">bgstop</span> <span class="o">=</span> <span class="s2">"(?:</span><span class="se">\033</span><span class="s2">\[1m|</span><span class="se">\033</span><span class="s2">\[22m){0,1}</span><span class="se">\033</span><span class="s2">\[4[0-8].*?m|</span><span class="se">\033</span><span class="s2">\[0m|$"</span>
|
|
<span class="n">bgfgstop</span> <span class="o">=</span> <span class="n">bgstop</span><span class="p">[:</span><span class="o">-</span><span class="mi">2</span><span class="p">]</span> <span class="o">+</span> <span class="sa">r</span><span class="s2">"(\s*)"</span> <span class="o">+</span> <span class="n">fgstop</span>
|
|
|
|
<span class="n">fgstart</span> <span class="o">=</span> <span class="s2">"((?:</span><span class="se">\033</span><span class="s2">\[1m|</span><span class="se">\033</span><span class="s2">\[22m){0,1}</span><span class="se">\033</span><span class="s2">\[3[0-8].*?m)"</span>
|
|
<span class="n">bgstart</span> <span class="o">=</span> <span class="s2">"((?:</span><span class="se">\033</span><span class="s2">\[1m|</span><span class="se">\033</span><span class="s2">\[22m){0,1}</span><span class="se">\033</span><span class="s2">\[4[0-8].*?m)"</span>
|
|
<span class="n">bgfgstart</span> <span class="o">=</span> <span class="n">bgstart</span> <span class="o">+</span> <span class="sa">r</span><span class="s2">"(\s*)"</span> <span class="o">+</span> <span class="s2">"((?:</span><span class="se">\033</span><span class="s2">\[1m|</span><span class="se">\033</span><span class="s2">\[22m){0,1}</span><span class="se">\033</span><span class="s2">\[[3-4][0-8].*?m){0,1}"</span>
|
|
|
|
<span class="c1"># extract color markers, tagging the start marker and the text marked</span>
|
|
<span class="n">re_fgs</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="n">fgstart</span> <span class="o">+</span> <span class="s2">"(.*?)(?="</span> <span class="o">+</span> <span class="n">fgstop</span> <span class="o">+</span> <span class="s2">")"</span><span class="p">)</span>
|
|
<span class="n">re_bgs</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="n">bgstart</span> <span class="o">+</span> <span class="s2">"(.*?)(?="</span> <span class="o">+</span> <span class="n">bgstop</span> <span class="o">+</span> <span class="s2">")"</span><span class="p">)</span>
|
|
<span class="n">re_bgfg</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="n">bgfgstart</span> <span class="o">+</span> <span class="s2">"(.*?)(?="</span> <span class="o">+</span> <span class="n">bgfgstop</span> <span class="o">+</span> <span class="s2">")"</span><span class="p">)</span>
|
|
|
|
<span class="n">re_normal</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="n">normal</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"["</span><span class="p">,</span> <span class="sa">r</span><span class="s2">"\["</span><span class="p">))</span>
|
|
<span class="n">re_hilite</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s2">"(?:</span><span class="si">%s</span><span class="s2">)(.*)(?=</span><span class="si">%s</span><span class="s2">|</span><span class="si">%s</span><span class="s2">)"</span> <span class="o">%</span> <span class="p">(</span><span class="n">hilite</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"["</span><span class="p">,</span> <span class="sa">r</span><span class="s2">"\["</span><span class="p">),</span> <span class="n">fgstop</span><span class="p">,</span> <span class="n">bgstop</span><span class="p">))</span>
|
|
<span class="n">re_unhilite</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s2">"(?:</span><span class="si">%s</span><span class="s2">)(.*)(?=</span><span class="si">%s</span><span class="s2">|</span><span class="si">%s</span><span class="s2">)"</span> <span class="o">%</span> <span class="p">(</span><span class="n">unhilite</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"["</span><span class="p">,</span> <span class="sa">r</span><span class="s2">"\["</span><span class="p">),</span> <span class="n">fgstop</span><span class="p">,</span> <span class="n">bgstop</span><span class="p">))</span>
|
|
<span class="n">re_uline</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s2">"(?:</span><span class="si">%s</span><span class="s2">)(.*?)(?=</span><span class="si">%s</span><span class="s2">|</span><span class="si">%s</span><span class="s2">)"</span> <span class="o">%</span> <span class="p">(</span><span class="n">underline</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"["</span><span class="p">,</span> <span class="sa">r</span><span class="s2">"\["</span><span class="p">),</span> <span class="n">fgstop</span><span class="p">,</span> <span class="n">bgstop</span><span class="p">))</span>
|
|
<span class="n">re_blink</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s2">"(?:</span><span class="si">%s</span><span class="s2">)(.*?)(?=</span><span class="si">%s</span><span class="s2">|</span><span class="si">%s</span><span class="s2">)"</span> <span class="o">%</span> <span class="p">(</span><span class="n">blink</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"["</span><span class="p">,</span> <span class="sa">r</span><span class="s2">"\["</span><span class="p">),</span> <span class="n">fgstop</span><span class="p">,</span> <span class="n">bgstop</span><span class="p">))</span>
|
|
<span class="n">re_inverse</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s2">"(?:</span><span class="si">%s</span><span class="s2">)(.*?)(?=</span><span class="si">%s</span><span class="s2">|</span><span class="si">%s</span><span class="s2">)"</span> <span class="o">%</span> <span class="p">(</span><span class="n">inverse</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"["</span><span class="p">,</span> <span class="sa">r</span><span class="s2">"\["</span><span class="p">),</span> <span class="n">fgstop</span><span class="p">,</span> <span class="n">bgstop</span><span class="p">))</span>
|
|
<span class="n">re_string</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span>
|
|
<span class="sa">r</span><span class="s2">"(?P<htmlchars>[<&>])|(?P<firstspace>(?<=\S) )|(?P<space> [ \t]+)|"</span>
|
|
<span class="sa">r</span><span class="s2">"(?P<spacestart>^ )|(?P<lineend>\r\n|\r|\n)"</span><span class="p">,</span>
|
|
<span class="n">re</span><span class="o">.</span><span class="n">S</span> <span class="o">|</span> <span class="n">re</span><span class="o">.</span><span class="n">M</span> <span class="o">|</span> <span class="n">re</span><span class="o">.</span><span class="n">I</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
<span class="n">re_dblspace</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">r</span><span class="s2">" {2,}"</span><span class="p">,</span> <span class="n">re</span><span class="o">.</span><span class="n">M</span><span class="p">)</span>
|
|
<span class="n">re_url</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span>
|
|
<span class="sa">r</span><span class="s1">'((?:ftp|www|https?)\W+(?:(?!\.(?:\s|$)|&\w+;)[^"</span><span class="se">\'</span><span class="s1">,;$*^</span><span class="se">\\</span><span class="s1">()</span><span class="si">{}</span><span class="s1"><>\[\]\s])+)(\.(?:\s|$)|&\w+;|)'</span>
|
|
<span class="p">)</span>
|
|
<span class="n">re_mxplink</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">r</span><span class="s2">"\|lc(.*?)\|lt(.*?)\|le"</span><span class="p">,</span> <span class="n">re</span><span class="o">.</span><span class="n">DOTALL</span><span class="p">)</span>
|
|
|
|
<div class="viewcode-block" id="TextToHTMLparser._sub_bgfg"><a class="viewcode-back" href="../../../api/evennia.utils.html#evennia.utils.text2html.TextToHTMLparser._sub_bgfg">[docs]</a> <span class="k">def</span> <span class="nf">_sub_bgfg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">colormatch</span><span class="p">):</span>
|
|
<span class="c1"># print("colormatch.groups()", colormatch.groups())</span>
|
|
<span class="n">bgcode</span><span class="p">,</span> <span class="n">prespace</span><span class="p">,</span> <span class="n">fgcode</span><span class="p">,</span> <span class="n">text</span><span class="p">,</span> <span class="n">postspace</span> <span class="o">=</span> <span class="n">colormatch</span><span class="o">.</span><span class="n">groups</span><span class="p">()</span>
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">fgcode</span><span class="p">:</span>
|
|
<span class="n">ret</span> <span class="o">=</span> <span class="sa">r</span><span class="s2">"""<span class="</span><span class="si">%s</span><span class="s2">"></span><span class="si">%s%s%s</span><span class="s2"></span>"""</span> <span class="o">%</span> <span class="p">(</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">bg_colormap</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">bgcode</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">fg_colormap</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">bgcode</span><span class="p">,</span> <span class="s2">"err"</span><span class="p">)),</span>
|
|
<span class="n">prespace</span> <span class="ow">and</span> <span class="s2">"&nbsp;"</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">prespace</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">""</span><span class="p">,</span>
|
|
<span class="n">postspace</span> <span class="ow">and</span> <span class="s2">"&nbsp;"</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">postspace</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">""</span><span class="p">,</span>
|
|
<span class="n">text</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">ret</span> <span class="o">=</span> <span class="sa">r</span><span class="s2">"""<span class="</span><span class="si">%s</span><span class="s2">"><span class="</span><span class="si">%s</span><span class="s2">"></span><span class="si">%s%s%s</span><span class="s2"></span></span>"""</span> <span class="o">%</span> <span class="p">(</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">bg_colormap</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">bgcode</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">fg_colormap</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">bgcode</span><span class="p">,</span> <span class="s2">"err"</span><span class="p">)),</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">fg_colormap</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">fgcode</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">bg_colormap</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">fgcode</span><span class="p">,</span> <span class="s2">"err"</span><span class="p">)),</span>
|
|
<span class="n">prespace</span> <span class="ow">and</span> <span class="s2">"&nbsp;"</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">prespace</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">""</span><span class="p">,</span>
|
|
<span class="n">postspace</span> <span class="ow">and</span> <span class="s2">"&nbsp;"</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">postspace</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">""</span><span class="p">,</span>
|
|
<span class="n">text</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">ret</span></div>
|
|
|
|
<div class="viewcode-block" id="TextToHTMLparser._sub_fg"><a class="viewcode-back" href="../../../api/evennia.utils.html#evennia.utils.text2html.TextToHTMLparser._sub_fg">[docs]</a> <span class="k">def</span> <span class="nf">_sub_fg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">colormatch</span><span class="p">):</span>
|
|
<span class="n">code</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span> <span class="n">colormatch</span><span class="o">.</span><span class="n">groups</span><span class="p">()</span>
|
|
<span class="k">return</span> <span class="sa">r</span><span class="s2">"""<span class="</span><span class="si">%s</span><span class="s2">"></span><span class="si">%s</span><span class="s2"></span>"""</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fg_colormap</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">code</span><span class="p">,</span> <span class="s2">"err"</span><span class="p">),</span> <span class="n">text</span><span class="p">)</span></div>
|
|
|
|
<div class="viewcode-block" id="TextToHTMLparser._sub_bg"><a class="viewcode-back" href="../../../api/evennia.utils.html#evennia.utils.text2html.TextToHTMLparser._sub_bg">[docs]</a> <span class="k">def</span> <span class="nf">_sub_bg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">colormatch</span><span class="p">):</span>
|
|
<span class="n">code</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span> <span class="n">colormatch</span><span class="o">.</span><span class="n">groups</span><span class="p">()</span>
|
|
<span class="k">return</span> <span class="sa">r</span><span class="s2">"""<span class="</span><span class="si">%s</span><span class="s2">"></span><span class="si">%s</span><span class="s2"></span>"""</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">bg_colormap</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">code</span><span class="p">,</span> <span class="s2">"err"</span><span class="p">),</span> <span class="n">text</span><span class="p">)</span></div>
|
|
|
|
<div class="viewcode-block" id="TextToHTMLparser.re_color"><a class="viewcode-back" href="../../../api/evennia.utils.html#evennia.utils.text2html.TextToHTMLparser.re_color">[docs]</a> <span class="k">def</span> <span class="nf">re_color</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Replace ansi colors with html color class names. Let the</span>
|
|
<span class="sd"> client choose how it will display colors, if it wishes to.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> text (str): the string with color to replace.</span>
|
|
|
|
<span class="sd"> Returns:</span>
|
|
<span class="sd"> text (str): Re-colored text.</span>
|
|
|
|
<span class="sd"> """</span>
|
|
<span class="n">text</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">re_bgfg</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_sub_bgfg</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span>
|
|
<span class="n">text</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">re_fgs</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_sub_fg</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span>
|
|
<span class="n">text</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">re_bgs</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_sub_bg</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span>
|
|
<span class="n">text</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">re_normal</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="s2">""</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">text</span></div>
|
|
|
|
<div class="viewcode-block" id="TextToHTMLparser.re_bold"><a class="viewcode-back" href="../../../api/evennia.utils.html#evennia.utils.text2html.TextToHTMLparser.re_bold">[docs]</a> <span class="k">def</span> <span class="nf">re_bold</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Clean out superfluous hilights rather than set <strong>to make</span>
|
|
<span class="sd"> it match the look of telnet.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> text (str): Text to process.</span>
|
|
|
|
<span class="sd"> Returns:</span>
|
|
<span class="sd"> text (str): Processed text.</span>
|
|
|
|
<span class="sd"> """</span>
|
|
<span class="n">text</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">re_hilite</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="sa">r</span><span class="s2">"<strong>\1</strong>"</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">re_unhilite</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="sa">r</span><span class="s2">"\1"</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span> <span class="c1"># strip unhilite - there is no equivalent in css.</span></div>
|
|
|
|
<div class="viewcode-block" id="TextToHTMLparser.re_underline"><a class="viewcode-back" href="../../../api/evennia.utils.html#evennia.utils.text2html.TextToHTMLparser.re_underline">[docs]</a> <span class="k">def</span> <span class="nf">re_underline</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Replace ansi underline with html underline class name.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> text (str): Text to process.</span>
|
|
|
|
<span class="sd"> Returns:</span>
|
|
<span class="sd"> text (str): Processed text.</span>
|
|
|
|
<span class="sd"> """</span>
|
|
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">re_uline</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="sa">r</span><span class="s1">'<span class="underline">\1</span>'</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span></div>
|
|
|
|
<div class="viewcode-block" id="TextToHTMLparser.re_blinking"><a class="viewcode-back" href="../../../api/evennia.utils.html#evennia.utils.text2html.TextToHTMLparser.re_blinking">[docs]</a> <span class="k">def</span> <span class="nf">re_blinking</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Replace ansi blink with custom blink css class</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> text (str): Text to process.</span>
|
|
|
|
<span class="sd"> Returns:</span>
|
|
<span class="sd"> text (str): Processed text.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">re_blink</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="sa">r</span><span class="s1">'<span class="blink">\1</span>'</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span></div>
|
|
|
|
<div class="viewcode-block" id="TextToHTMLparser.re_inversing"><a class="viewcode-back" href="../../../api/evennia.utils.html#evennia.utils.text2html.TextToHTMLparser.re_inversing">[docs]</a> <span class="k">def</span> <span class="nf">re_inversing</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Replace ansi inverse with custom inverse css class</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> text (str): Text to process.</span>
|
|
|
|
<span class="sd"> Returns:</span>
|
|
<span class="sd"> text (str): Processed text.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">re_inverse</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="sa">r</span><span class="s1">'<span class="inverse">\1</span>'</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span></div>
|
|
|
|
<div class="viewcode-block" id="TextToHTMLparser.remove_bells"><a class="viewcode-back" href="../../../api/evennia.utils.html#evennia.utils.text2html.TextToHTMLparser.remove_bells">[docs]</a> <span class="k">def</span> <span class="nf">remove_bells</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Remove ansi specials</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> text (str): Text to process.</span>
|
|
|
|
<span class="sd"> Returns:</span>
|
|
<span class="sd"> text (str): Processed text.</span>
|
|
|
|
<span class="sd"> """</span>
|
|
<span class="k">return</span> <span class="n">text</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"</span><span class="se">\07</span><span class="s2">"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span></div>
|
|
|
|
<div class="viewcode-block" id="TextToHTMLparser.remove_backspaces"><a class="viewcode-back" href="../../../api/evennia.utils.html#evennia.utils.text2html.TextToHTMLparser.remove_backspaces">[docs]</a> <span class="k">def</span> <span class="nf">remove_backspaces</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Removes special escape sequences</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> text (str): Text to process.</span>
|
|
|
|
<span class="sd"> Returns:</span>
|
|
<span class="sd"> text (str): Processed text.</span>
|
|
|
|
<span class="sd"> """</span>
|
|
<span class="n">backspace_or_eol</span> <span class="o">=</span> <span class="sa">r</span><span class="s2">"(.\010)|(\033\[K)"</span>
|
|
<span class="n">n</span> <span class="o">=</span> <span class="mi">1</span>
|
|
<span class="k">while</span> <span class="n">n</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span>
|
|
<span class="n">text</span><span class="p">,</span> <span class="n">n</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">subn</span><span class="p">(</span><span class="n">backspace_or_eol</span><span class="p">,</span> <span class="s2">""</span><span class="p">,</span> <span class="n">text</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">text</span></div>
|
|
|
|
<div class="viewcode-block" id="TextToHTMLparser.convert_linebreaks"><a class="viewcode-back" href="../../../api/evennia.utils.html#evennia.utils.text2html.TextToHTMLparser.convert_linebreaks">[docs]</a> <span class="k">def</span> <span class="nf">convert_linebreaks</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Extra method for cleaning linebreaks</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> text (str): Text to process.</span>
|
|
|
|
<span class="sd"> Returns:</span>
|
|
<span class="sd"> text (str): Processed text.</span>
|
|
|
|
<span class="sd"> """</span>
|
|
<span class="k">return</span> <span class="n">text</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">,</span> <span class="sa">r</span><span class="s2">"<br>"</span><span class="p">)</span></div>
|
|
|
|
<div class="viewcode-block" id="TextToHTMLparser.convert_urls"><a class="viewcode-back" href="../../../api/evennia.utils.html#evennia.utils.text2html.TextToHTMLparser.convert_urls">[docs]</a> <span class="k">def</span> <span class="nf">convert_urls</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Replace urls (http://...) by valid HTML.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> text (str): Text to process.</span>
|
|
|
|
<span class="sd"> Returns:</span>
|
|
<span class="sd"> text (str): Processed text.</span>
|
|
|
|
<span class="sd"> """</span>
|
|
<span class="c1"># -> added target to output prevent the web browser from attempting to</span>
|
|
<span class="c1"># change pages (and losing our webclient session).</span>
|
|
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">re_url</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="sa">r</span><span class="s1">'<a href="\1" target="_blank">\1</a>\2'</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span></div>
|
|
|
|
<div class="viewcode-block" id="TextToHTMLparser.re_double_space"><a class="viewcode-back" href="../../../api/evennia.utils.html#evennia.utils.text2html.TextToHTMLparser.re_double_space">[docs]</a> <span class="k">def</span> <span class="nf">re_double_space</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> HTML will swallow any normal space after the first, so if any slipped</span>
|
|
<span class="sd"> through we must make sure to replace them with " &nbsp;"</span>
|
|
<span class="sd"> """</span>
|
|
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">re_dblspace</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sub_dblspace</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span></div>
|
|
|
|
<div class="viewcode-block" id="TextToHTMLparser.sub_mxp_links"><a class="viewcode-back" href="../../../api/evennia.utils.html#evennia.utils.text2html.TextToHTMLparser.sub_mxp_links">[docs]</a> <span class="k">def</span> <span class="nf">sub_mxp_links</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">match</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Helper method to be passed to re.sub,</span>
|
|
<span class="sd"> replaces MXP links with HTML code.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> match (re.Matchobject): Match for substitution.</span>
|
|
|
|
<span class="sd"> Returns:</span>
|
|
<span class="sd"> text (str): Processed text.</span>
|
|
|
|
<span class="sd"> """</span>
|
|
<span class="n">cmd</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span> <span class="p">[</span><span class="n">grp</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s1">'"'</span><span class="p">,</span> <span class="s2">"</span><span class="se">\\</span><span class="s2">&quot;"</span><span class="p">)</span> <span class="k">for</span> <span class="n">grp</span> <span class="ow">in</span> <span class="n">match</span><span class="o">.</span><span class="n">groups</span><span class="p">()]</span>
|
|
<span class="n">val</span> <span class="o">=</span> <span class="p">(</span>
|
|
<span class="sa">r</span><span class="sd">"""<a id="mxplink" href="#" """</span>
|
|
<span class="sd">"""onclick="Evennia.msg(&quot;text&quot;,[&quot;{cmd}&quot;],{{}});"""</span>
|
|
<span class="sd">"""return false;">{text}</a>"""</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">cmd</span><span class="o">=</span><span class="n">cmd</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="n">text</span><span class="p">)</span>
|
|
<span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">val</span></div>
|
|
|
|
<div class="viewcode-block" id="TextToHTMLparser.sub_text"><a class="viewcode-back" href="../../../api/evennia.utils.html#evennia.utils.text2html.TextToHTMLparser.sub_text">[docs]</a> <span class="k">def</span> <span class="nf">sub_text</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">match</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Helper method to be passed to re.sub,</span>
|
|
<span class="sd"> for handling all substitutions.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> match (re.Matchobject): Match for substitution.</span>
|
|
|
|
<span class="sd"> Returns:</span>
|
|
<span class="sd"> text (str): Processed text.</span>
|
|
|
|
<span class="sd"> """</span>
|
|
<span class="n">cdict</span> <span class="o">=</span> <span class="n">match</span><span class="o">.</span><span class="n">groupdict</span><span class="p">()</span>
|
|
<span class="k">if</span> <span class="n">cdict</span><span class="p">[</span><span class="s2">"htmlchars"</span><span class="p">]:</span>
|
|
<span class="k">return</span> <span class="n">html_escape</span><span class="p">(</span><span class="n">cdict</span><span class="p">[</span><span class="s2">"htmlchars"</span><span class="p">])</span>
|
|
<span class="k">elif</span> <span class="n">cdict</span><span class="p">[</span><span class="s2">"lineend"</span><span class="p">]:</span>
|
|
<span class="k">return</span> <span class="s2">"<br>"</span>
|
|
<span class="k">elif</span> <span class="n">cdict</span><span class="p">[</span><span class="s2">"firstspace"</span><span class="p">]:</span>
|
|
<span class="k">return</span> <span class="s2">" &nbsp;"</span>
|
|
<span class="k">elif</span> <span class="n">cdict</span><span class="p">[</span><span class="s2">"space"</span><span class="p">]</span> <span class="o">==</span> <span class="s2">"</span><span class="se">\t</span><span class="s2">"</span><span class="p">:</span>
|
|
<span class="k">return</span> <span class="s2">" "</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">tabstop</span> <span class="o">==</span> <span class="mi">1</span> <span class="k">else</span> <span class="s2">" "</span> <span class="o">+</span> <span class="s2">"&nbsp;"</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">tabstop</span>
|
|
<span class="k">elif</span> <span class="n">cdict</span><span class="p">[</span><span class="s2">"space"</span><span class="p">]</span> <span class="ow">or</span> <span class="n">cdict</span><span class="p">[</span><span class="s2">"spacestart"</span><span class="p">]:</span>
|
|
<span class="n">text</span> <span class="o">=</span> <span class="n">match</span><span class="o">.</span><span class="n">group</span><span class="p">()</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"</span><span class="se">\t</span><span class="s2">"</span><span class="p">,</span> <span class="s2">"&nbsp;"</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">tabstop</span><span class="p">)</span>
|
|
<span class="n">text</span> <span class="o">=</span> <span class="n">text</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">" "</span><span class="p">,</span> <span class="s2">"&nbsp;"</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">text</span>
|
|
<span class="k">return</span> <span class="kc">None</span></div>
|
|
|
|
<div class="viewcode-block" id="TextToHTMLparser.sub_dblspace"><a class="viewcode-back" href="../../../api/evennia.utils.html#evennia.utils.text2html.TextToHTMLparser.sub_dblspace">[docs]</a> <span class="k">def</span> <span class="nf">sub_dblspace</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">match</span><span class="p">):</span>
|
|
<span class="s2">"clean up double-spaces"</span>
|
|
<span class="k">return</span> <span class="s2">" "</span> <span class="o">+</span> <span class="s2">"&nbsp;"</span> <span class="o">*</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">match</span><span class="o">.</span><span class="n">group</span><span class="p">())</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span></div>
|
|
|
|
<div class="viewcode-block" id="TextToHTMLparser.parse"><a class="viewcode-back" href="../../../api/evennia.utils.html#evennia.utils.text2html.TextToHTMLparser.parse">[docs]</a> <span class="k">def</span> <span class="nf">parse</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="p">,</span> <span class="n">strip_ansi</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Main access function, converts a text containing ANSI codes</span>
|
|
<span class="sd"> into html statements.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> text (str): Text to process.</span>
|
|
<span class="sd"> strip_ansi (bool, optional):</span>
|
|
|
|
<span class="sd"> Returns:</span>
|
|
<span class="sd"> text (str): Parsed text.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="c1"># parse everything to ansi first</span>
|
|
<span class="n">text</span> <span class="o">=</span> <span class="n">parse_ansi</span><span class="p">(</span><span class="n">text</span><span class="p">,</span> <span class="n">strip_ansi</span><span class="o">=</span><span class="n">strip_ansi</span><span class="p">,</span> <span class="n">xterm256</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">mxp</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
<span class="c1"># convert all ansi to html</span>
|
|
<span class="n">result</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">re_string</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">sub_text</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span>
|
|
<span class="n">result</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">re_mxplink</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">sub_mxp_links</span><span class="p">,</span> <span class="n">result</span><span class="p">)</span>
|
|
<span class="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">re_color</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
|
|
<span class="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">re_bold</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
|
|
<span class="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">re_underline</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
|
|
<span class="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">re_blinking</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
|
|
<span class="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">re_inversing</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
|
|
<span class="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">remove_bells</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
|
|
<span class="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">convert_linebreaks</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
|
|
<span class="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">remove_backspaces</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
|
|
<span class="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">convert_urls</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
|
|
<span class="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">re_double_space</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
|
|
<span class="c1"># clean out eventual ansi that was missed</span>
|
|
<span class="c1"># result = parse_ansi(result, strip_ansi=True)</span>
|
|
|
|
<span class="k">return</span> <span class="n">result</span></div></div>
|
|
|
|
|
|
<span class="n">HTML_PARSER</span> <span class="o">=</span> <span class="n">TextToHTMLparser</span><span class="p">()</span>
|
|
|
|
|
|
<span class="c1">#</span>
|
|
<span class="c1"># Access function</span>
|
|
<span class="c1">#</span>
|
|
|
|
|
|
<div class="viewcode-block" id="parse_html"><a class="viewcode-back" href="../../../api/evennia.utils.html#evennia.utils.text2html.parse_html">[docs]</a><span class="k">def</span> <span class="nf">parse_html</span><span class="p">(</span><span class="n">string</span><span class="p">,</span> <span class="n">strip_ansi</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">parser</span><span class="o">=</span><span class="n">HTML_PARSER</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Parses a string, replace ANSI markup with html</span>
|
|
<span class="sd"> """</span>
|
|
<span class="k">return</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">string</span><span class="p">,</span> <span class="n">strip_ansi</span><span class="o">=</span><span class="n">strip_ansi</span><span class="p">)</span></div>
|
|
</pre></div>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
|
<div class="sphinxsidebarwrapper">
|
|
<p class="logo"><a href="../../../index.html">
|
|
<img class="logo" src="../../../_static/evennia_logo.png" alt="Logo"/>
|
|
</a></p>
|
|
<div id="searchbox" style="display: none" role="search">
|
|
<h3 id="searchlabel">Quick search</h3>
|
|
<div class="searchformwrapper">
|
|
<form class="search" action="../../../search.html" method="get">
|
|
<input type="text" name="q" aria-labelledby="searchlabel" />
|
|
<input type="submit" value="Go" />
|
|
</form>
|
|
</div>
|
|
</div>
|
|
<script>$('#searchbox').show(0);</script>
|
|
<h3>Versions</h3>
|
|
<ul>
|
|
<li><a href="text2html.html">1.0-dev (develop branch)</a></li>
|
|
<li><a href="../../../../0.9.1/index.html">0.9.1 (master branch)</a></li>
|
|
</ul>
|
|
|
|
</div>
|
|
</div>
|
|
<div class="clearer"></div>
|
|
</div>
|
|
<div class="related" role="navigation" aria-label="related navigation">
|
|
<h3>Navigation</h3>
|
|
<ul>
|
|
<li class="right" style="margin-right: 10px">
|
|
<a href="../../../genindex.html" title="General Index"
|
|
>index</a></li>
|
|
<li class="right" >
|
|
<a href="../../../py-modindex.html" title="Python Module Index"
|
|
>modules</a> |</li>
|
|
<li class="nav-item nav-item-0"><a href="../../../index.html">Evennia 1.0-dev documentation</a> »</li>
|
|
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> »</li>
|
|
<li class="nav-item nav-item-2"><a href="../../evennia.html" >evennia</a> »</li>
|
|
</ul>
|
|
</div>
|
|
<div class="footer" role="contentinfo">
|
|
© Copyright 2020, The Evennia developer community.
|
|
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 2.4.4.
|
|
</div>
|
|
</body>
|
|
</html> |