mirror of
https://github.com/evennia/evennia.git
synced 2026-03-25 09:16:32 +01:00
Updated HTML docs
This commit is contained in:
parent
bd82579bfa
commit
70b4caedb6
105 changed files with 2389 additions and 2138 deletions
|
|
@ -1295,6 +1295,8 @@
|
|||
<span class="sd"> """</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">basetype_setup</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">at_account_creation</span><span class="p">()</span>
|
||||
<span class="c1"># initialize Attribute/TagProperties</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">init_evennia_properties</span><span class="p">()</span>
|
||||
|
||||
<span class="n">permissions</span> <span class="o">=</span> <span class="p">[</span><span class="n">settings</span><span class="o">.</span><span class="n">PERMISSION_ACCOUNT_DEFAULT</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">"_createdict"</span><span class="p">):</span>
|
||||
|
|
|
|||
|
|
@ -492,9 +492,7 @@
|
|||
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="s2">"permanent"</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
|
||||
<span class="n">logger</span><span class="o">.</span><span class="n">log_dep</span><span class="p">(</span>
|
||||
<span class="s2">"obj.cmdset.add() kwarg 'permanent' has changed name to 'persistent'."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">logger</span><span class="o">.</span><span class="n">log_dep</span><span class="p">(</span><span class="s2">"obj.cmdset.add() kwarg 'permanent' has changed name to 'persistent'."</span><span class="p">)</span>
|
||||
<span class="n">persistent</span> <span class="o">=</span> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"permanent"</span><span class="p">]</span> <span class="k">if</span> <span class="n">persistent</span> <span class="ow">is</span> <span class="kc">False</span> <span class="k">else</span> <span class="n">persistent</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">cmdset</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="ow">or</span> <span class="n">utils</span><span class="o">.</span><span class="n">inherits_from</span><span class="p">(</span><span class="n">cmdset</span><span class="p">,</span> <span class="n">CmdSet</span><span class="p">)):</span>
|
||||
|
|
|
|||
|
|
@ -2261,11 +2261,13 @@
|
|||
<span class="n">old_typeclass_path</span> <span class="o">=</span> <span class="n">obj</span><span class="o">.</span><span class="n">typeclass_path</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">reset</span><span class="p">:</span>
|
||||
<span class="n">answer</span> <span class="o">=</span> <span class="k">yield</span><span class="p">(</span><span class="s2">"|yNote that this will reset the object back to its typeclass' default state, "</span>
|
||||
<span class="s2">"removing any custom locks/perms/attributes etc that may have been added "</span>
|
||||
<span class="s2">"by an explicit create_object call. Use `update` or type/force instead in order "</span>
|
||||
<span class="s2">"to keep such data. "</span>
|
||||
<span class="s2">"Continue [Y]/N?|n"</span><span class="p">)</span>
|
||||
<span class="n">answer</span> <span class="o">=</span> <span class="k">yield</span> <span class="p">(</span>
|
||||
<span class="s2">"|yNote that this will reset the object back to its typeclass' default state, "</span>
|
||||
<span class="s2">"removing any custom locks/perms/attributes etc that may have been added "</span>
|
||||
<span class="s2">"by an explicit create_object call. Use `update` or type/force instead in order "</span>
|
||||
<span class="s2">"to keep such data. "</span>
|
||||
<span class="s2">"Continue [Y]/N?|n"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">answer</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"N"</span><span class="p">,</span> <span class="s2">"NO"</span><span class="p">):</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Aborted."</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
|
@ -2774,7 +2776,7 @@
|
|||
<span class="k">return</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">ndb_attr</span> <span class="ow">and</span> <span class="n">ndb_attr</span><span class="p">[</span><span class="mi">0</span><span class="p">]:</span>
|
||||
<span class="k">return</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> "</span> <span class="o">+</span> <span class="s2">" </span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
|
||||
<span class="k">return</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> "</span> <span class="o">+</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
|
||||
<span class="nb">sorted</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">format_single_attribute</span><span class="p">(</span><span class="n">attr</span><span class="p">)</span> <span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="n">ndb_attr</span><span class="p">)</span>
|
||||
<span class="p">)</span></div>
|
||||
|
||||
|
|
@ -3515,7 +3517,7 @@
|
|||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">msgs</span><span class="p">))</span>
|
||||
<span class="k">if</span> <span class="s2">"delete"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">script</span> <span class="ow">and</span> <span class="n">script</span><span class="o">.</span><span class="n">pk</span><span class="p">:</span>
|
||||
<span class="n">ScriptEvMore</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="p">[</span><span class="n">script</span><span class="p">],</span> <span class="n">session</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="p">)</span>
|
||||
<span class="n">ScriptEvMore</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="p">[</span><span class="n">script</span><span class="p">],</span> <span class="n">session</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Script was deleted automatically."</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
|
|
|
|||
|
|
@ -328,7 +328,7 @@
|
|||
<span class="k">elif</span> <span class="nb">len</span><span class="p">(</span><span class="n">channels</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="s2">"Multiple possible channel matches/alias for "</span>
|
||||
<span class="s2">"'</span><span class="si">{channelname}</span><span class="s2">':</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">chan</span><span class="o">.</span><span class="n">key</span> <span class="k">for</span> <span class="n">chan</span> <span class="ow">in</span> <span class="n">channels</span><span class="p">)</span>
|
||||
<span class="sa">f</span><span class="s2">"'</span><span class="si">{</span><span class="n">channelname</span><span class="si">}</span><span class="s2">':</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">chan</span><span class="o">.</span><span class="n">key</span> <span class="k">for</span> <span class="n">chan</span> <span class="ow">in</span> <span class="n">channels</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">return</span> <span class="kc">None</span>
|
||||
<span class="k">return</span> <span class="n">channels</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
|
|
|
|||
|
|
@ -100,9 +100,24 @@
|
|||
<span class="n">rid</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">room1</span><span class="o">.</span><span class="n">id</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">general</span><span class="o">.</span><span class="n">CmdLook</span><span class="p">(),</span> <span class="s2">"here"</span><span class="p">,</span> <span class="s2">"Room(#</span><span class="si">{}</span><span class="s2">)</span><span class="se">\n</span><span class="s2">room_desc"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">rid</span><span class="p">))</span></div>
|
||||
|
||||
<div class="viewcode-block" id="TestGeneral.test_look_no_location"><a class="viewcode-back" href="../../../../api/evennia.commands.default.tests.html#evennia.commands.default.tests.TestGeneral.test_look_no_location">[docs]</a> <span class="k">def</span> <span class="nf">test_look_no_location</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">char1</span><span class="o">.</span><span class="n">location</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">general</span><span class="o">.</span><span class="n">CmdLook</span><span class="p">(),</span> <span class="s2">""</span><span class="p">,</span> <span class="s2">"You have no location to look at!"</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="TestGeneral.test_look_nonexisting"><a class="viewcode-back" href="../../../../api/evennia.commands.default.tests.html#evennia.commands.default.tests.TestGeneral.test_look_nonexisting">[docs]</a> <span class="k">def</span> <span class="nf">test_look_nonexisting</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">general</span><span class="o">.</span><span class="n">CmdLook</span><span class="p">(),</span> <span class="s2">"yellow sign"</span><span class="p">,</span> <span class="s2">"Could not find 'yellow sign'."</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="TestGeneral.test_home"><a class="viewcode-back" href="../../../../api/evennia.commands.default.tests.html#evennia.commands.default.tests.TestGeneral.test_home">[docs]</a> <span class="k">def</span> <span class="nf">test_home</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">general</span><span class="o">.</span><span class="n">CmdHome</span><span class="p">(),</span> <span class="s2">""</span><span class="p">,</span> <span class="s2">"You are already home"</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="TestGeneral.test_go_home"><a class="viewcode-back" href="../../../../api/evennia.commands.default.tests.html#evennia.commands.default.tests.TestGeneral.test_go_home">[docs]</a> <span class="k">def</span> <span class="nf">test_go_home</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">building</span><span class="o">.</span><span class="n">CmdTeleport</span><span class="p">(),</span> <span class="s2">"/quiet Room2"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">general</span><span class="o">.</span><span class="n">CmdHome</span><span class="p">(),</span> <span class="s2">""</span><span class="p">,</span> <span class="s2">"There's no place like home"</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="TestGeneral.test_no_home"><a class="viewcode-back" href="../../../../api/evennia.commands.default.tests.html#evennia.commands.default.tests.TestGeneral.test_no_home">[docs]</a> <span class="k">def</span> <span class="nf">test_no_home</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">char1</span><span class="o">.</span><span class="n">home</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">general</span><span class="o">.</span><span class="n">CmdHome</span><span class="p">(),</span> <span class="s2">""</span><span class="p">,</span> <span class="s2">"You have no home"</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="TestGeneral.test_inventory"><a class="viewcode-back" href="../../../../api/evennia.commands.default.tests.html#evennia.commands.default.tests.TestGeneral.test_inventory">[docs]</a> <span class="k">def</span> <span class="nf">test_inventory</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">general</span><span class="o">.</span><span class="n">CmdInventory</span><span class="p">(),</span> <span class="s2">""</span><span class="p">,</span> <span class="s2">"You are not carrying anything."</span><span class="p">)</span></div>
|
||||
|
||||
|
|
@ -132,6 +147,11 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">char1</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">nicks</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"testalias"</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="s2">"account"</span><span class="p">))</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="s2">"testaliasedstring3"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">char1</span><span class="o">.</span><span class="n">nicks</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"testalias"</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="s2">"object"</span><span class="p">))</span></div>
|
||||
|
||||
<div class="viewcode-block" id="TestGeneral.test_nick_list"><a class="viewcode-back" href="../../../../api/evennia.commands.default.tests.html#evennia.commands.default.tests.TestGeneral.test_nick_list">[docs]</a> <span class="k">def</span> <span class="nf">test_nick_list</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">general</span><span class="o">.</span><span class="n">CmdNick</span><span class="p">(),</span> <span class="s2">"/list"</span><span class="p">,</span> <span class="s2">"No nicks defined."</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">general</span><span class="o">.</span><span class="n">CmdNick</span><span class="p">(),</span> <span class="s2">"test1 = Hello"</span><span class="p">,</span> <span class="s2">"Inputline-nick 'test1' mapped to 'Hello'."</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">general</span><span class="o">.</span><span class="n">CmdNick</span><span class="p">(),</span> <span class="s2">"/list"</span><span class="p">,</span> <span class="s2">"Defined Nicks:"</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="TestGeneral.test_get_and_drop"><a class="viewcode-back" href="../../../../api/evennia.commands.default.tests.html#evennia.commands.default.tests.TestGeneral.test_get_and_drop">[docs]</a> <span class="k">def</span> <span class="nf">test_get_and_drop</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">general</span><span class="o">.</span><span class="n">CmdGet</span><span class="p">(),</span> <span class="s2">"Obj"</span><span class="p">,</span> <span class="s2">"You pick up Obj."</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">general</span><span class="o">.</span><span class="n">CmdDrop</span><span class="p">(),</span> <span class="s2">"Obj"</span><span class="p">,</span> <span class="s2">"You drop Obj."</span><span class="p">)</span></div>
|
||||
|
|
@ -1316,7 +1336,8 @@
|
|||
<span class="s2">"Obj2 = evennia.objects.objects.DefaultExit"</span><span class="p">,</span>
|
||||
<span class="s2">"Obj2 changed typeclass from evennia.objects.objects.DefaultObject "</span>
|
||||
<span class="s2">"to evennia.objects.objects.DefaultExit."</span><span class="p">,</span>
|
||||
<span class="n">cmdstring</span><span class="o">=</span><span class="s2">"swap"</span><span class="p">,</span> <span class="n">inputs</span><span class="o">=</span><span class="p">[</span><span class="s2">"yes"</span><span class="p">],</span>
|
||||
<span class="n">cmdstring</span><span class="o">=</span><span class="s2">"swap"</span><span class="p">,</span>
|
||||
<span class="n">inputs</span><span class="o">=</span><span class="p">[</span><span class="s2">"yes"</span><span class="p">],</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">building</span><span class="o">.</span><span class="n">CmdTypeclass</span><span class="p">(),</span> <span class="s2">"/list Obj"</span><span class="p">,</span> <span class="s2">"Core typeclasses"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span>
|
||||
|
|
@ -1353,7 +1374,7 @@
|
|||
<span class="s2">"/reset/force Obj=evennia.objects.objects.DefaultObject"</span><span class="p">,</span>
|
||||
<span class="s2">"Obj updated its existing typeclass (evennia.objects.objects.DefaultObject).</span><span class="se">\n</span><span class="s2">"</span>
|
||||
<span class="s2">"All object creation hooks were run. All old attributes where deleted before the swap."</span><span class="p">,</span>
|
||||
<span class="n">inputs</span><span class="o">=</span><span class="p">[</span><span class="s2">"yes"</span><span class="p">]</span>
|
||||
<span class="n">inputs</span><span class="o">=</span><span class="p">[</span><span class="s2">"yes"</span><span class="p">],</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">evennia.prototypes.prototypes</span> <span class="kn">import</span> <span class="n">homogenize_prototype</span>
|
||||
|
|
@ -1380,7 +1401,7 @@
|
|||
<span class="s2">"typeclasses.objects.Object.</span><span class="se">\n</span><span class="s2">Only the at_object_creation hook was run "</span>
|
||||
<span class="s2">"(update mode). Attributes set before swap were not removed</span><span class="se">\n</span><span class="s2">"</span>
|
||||
<span class="s2">"(use `swap` or `type/reset` to clear all). Prototype 'replaced_obj' was "</span>
|
||||
<span class="s2">"successfully applied over the object type."</span>
|
||||
<span class="s2">"successfully applied over the object type."</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">assert</span> <span class="bp">self</span><span class="o">.</span><span class="n">obj1</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">desc</span> <span class="o">==</span> <span class="s2">"protdesc"</span></div>
|
||||
|
||||
|
|
|
|||
|
|
@ -61,15 +61,33 @@
|
|||
<span class="sd"> create different types of communication channels.</span>
|
||||
|
||||
<span class="sd"> Class-level variables:</span>
|
||||
<span class="sd"> - `send_to_online_only` (bool, default True) - if set, will only try to</span>
|
||||
<span class="sd"> send to subscribers that are actually active. This is a useful optimization.</span>
|
||||
<span class="sd"> - `log_file` (str, default `"channel_{channelname}.log"`). This is the</span>
|
||||
<span class="sd"> log file to which the channel history will be saved. The `{channelname}` tag</span>
|
||||
<span class="sd"> will be replaced by the key of the Channel. If an Attribute 'log_file'</span>
|
||||
<span class="sd"> is set, this will be used instead. If this is None and no Attribute is found,</span>
|
||||
<span class="sd"> no history will be saved.</span>
|
||||
<span class="sd"> - `channel_prefix_string` (str, default `"[{channelname} ]"`) - this is used</span>
|
||||
<span class="sd"> as a simple template to get the channel prefix with `.channel_prefix()`.</span>
|
||||
<span class="sd"> - `send_to_online_only` (bool, default True) - if set, will only try to</span>
|
||||
<span class="sd"> send to subscribers that are actually active. This is a useful optimization.</span>
|
||||
<span class="sd"> - `log_file` (str, default `"channel_{channelname}.log"`). This is the</span>
|
||||
<span class="sd"> log file to which the channel history will be saved. The `{channelname}` tag</span>
|
||||
<span class="sd"> will be replaced by the key of the Channel. If an Attribute 'log_file'</span>
|
||||
<span class="sd"> is set, this will be used instead. If this is None and no Attribute is found,</span>
|
||||
<span class="sd"> no history will be saved.</span>
|
||||
<span class="sd"> - `channel_prefix_string` (str, default `"[{channelname} ]"`) - this is used</span>
|
||||
<span class="sd"> as a simple template to get the channel prefix with `.channel_prefix()`. It is used</span>
|
||||
<span class="sd"> in front of every channel message; use `{channelmessage}` token to insert the</span>
|
||||
<span class="sd"> name of the current channel. Set to `None` if you want no prefix (or want to</span>
|
||||
<span class="sd"> handle it in a hook during message generation instead.</span>
|
||||
<span class="sd"> - `channel_msg_nick_pattern`(str, default `"{alias}\\s*?|{alias}\\s+?(?P<arg1>.+?)") -</span>
|
||||
<span class="sd"> this is what used when a channel subscriber gets a channel nick assigned to this</span>
|
||||
<span class="sd"> channel. The nickhandler uses the pattern to pick out this channel's name from user</span>
|
||||
<span class="sd"> input. The `{alias}` token will get both the channel's key and any set/custom aliases</span>
|
||||
<span class="sd"> per subscriber. You need to allow for an `<arg1>` regex group to catch any message</span>
|
||||
<span class="sd"> that should be send to the channel. You usually don't need to change this pattern</span>
|
||||
<span class="sd"> unless you are changing channel command-style entirely.</span>
|
||||
<span class="sd"> - `channel_msg_nick_replacement` (str, default `"channel {channelname} = $1"` - this</span>
|
||||
<span class="sd"> is used by the nickhandler to generate a replacement string once the nickhandler (using</span>
|
||||
<span class="sd"> the `channel_msg_nick_pattern`) identifies that the channel should be addressed</span>
|
||||
<span class="sd"> to send a message to it. The `<arg1>` regex pattern match from `channel_msg_nick_pattern`</span>
|
||||
<span class="sd"> will end up at the `$1` position in the replacement. Together, this allows you do e.g.</span>
|
||||
<span class="sd"> 'public Hello' and have that become a mapping to `channel public = Hello`. By default,</span>
|
||||
<span class="sd"> the account-level `channel` command is used. If you were to rename that command you must</span>
|
||||
<span class="sd"> tweak the output to something like `yourchannelcommandname {channelname} = $1`.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
|
|
@ -100,6 +118,9 @@
|
|||
<span class="sd"> """</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">basetype_setup</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">at_channel_creation</span><span class="p">()</span>
|
||||
<span class="c1"># initialize Attribute/TagProperties</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">init_evennia_properties</span><span class="p">()</span>
|
||||
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">"_createdict"</span><span class="p">):</span>
|
||||
<span class="c1"># this is only set if the channel was created</span>
|
||||
<span class="c1"># with the utils.create.create_channel function.</span>
|
||||
|
|
|
|||
|
|
@ -370,7 +370,7 @@
|
|||
<span class="n">callback</span><span class="p">()</span>
|
||||
|
||||
<span class="n">seconds</span> <span class="o">=</span> <span class="n">real_seconds_until</span><span class="p">(</span><span class="o">**</span><span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">gametime</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">restart</span><span class="p">(</span><span class="n">interval</span><span class="o">=</span><span class="n">seconds</span><span class="p">)</span></div></div>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">start</span><span class="p">(</span><span class="n">interval</span><span class="o">=</span><span class="n">seconds</span><span class="p">,</span> <span class="n">force_restart</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div></div>
|
||||
</pre></div>
|
||||
|
||||
<div class="clearer"></div>
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -138,7 +138,7 @@
|
|||
<span class="n">recog02</span> <span class="o">=</span> <span class="s2">"Mr Receiver2"</span>
|
||||
<span class="n">recog10</span> <span class="o">=</span> <span class="s2">"Mr Sender"</span>
|
||||
<span class="n">emote</span> <span class="o">=</span> <span class="s1">'With a flair, /me looks at /first and /colliding sdesc-guy. She says "This is a test."'</span>
|
||||
<span class="n">case_emote</span> <span class="o">=</span> <span class="s2">"/me looks at /first, then /FIRST, /First and /Colliding twice."</span>
|
||||
<span class="n">case_emote</span> <span class="o">=</span> <span class="s2">"/Me looks at /first. Then, /me looks at /FIRST, /First and /Colliding twice."</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="TestRPSystem"><a class="viewcode-back" href="../../../../../api/evennia.contrib.rpg.rpsystem.tests.html#evennia.contrib.rpg.rpsystem.tests.TestRPSystem">[docs]</a><span class="k">class</span> <span class="nc">TestRPSystem</span><span class="p">(</span><span class="n">BaseEvenniaTest</span><span class="p">):</span>
|
||||
|
|
@ -155,41 +155,11 @@
|
|||
<span class="n">rpsystem</span><span class="o">.</span><span class="n">ContribRPCharacter</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"Receiver2"</span><span class="p">,</span> <span class="n">location</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">room</span>
|
||||
<span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="TestRPSystem.test_ordered_permutation_regex"><a class="viewcode-back" href="../../../../../api/evennia.contrib.rpg.rpsystem.tests.html#evennia.contrib.rpg.rpsystem.tests.TestRPSystem.test_ordered_permutation_regex">[docs]</a> <span class="k">def</span> <span class="nf">test_ordered_permutation_regex</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span>
|
||||
<span class="n">rpsystem</span><span class="o">.</span><span class="n">ordered_permutation_regex</span><span class="p">(</span><span class="n">sdesc0</span><span class="p">),</span>
|
||||
<span class="s2">"/[0-9]*-*A</span><span class="se">\\</span><span class="s2"> nice</span><span class="se">\\</span><span class="s2"> sender</span><span class="se">\\</span><span class="s2"> of</span><span class="se">\\</span><span class="s2"> emotes(?=</span><span class="se">\\</span><span class="s2">W|$)+|"</span>
|
||||
<span class="s2">"/[0-9]*-*nice</span><span class="se">\\</span><span class="s2"> sender</span><span class="se">\\</span><span class="s2"> of</span><span class="se">\\</span><span class="s2"> emotes(?=</span><span class="se">\\</span><span class="s2">W|$)+|"</span>
|
||||
<span class="s2">"/[0-9]*-*A</span><span class="se">\\</span><span class="s2"> nice</span><span class="se">\\</span><span class="s2"> sender</span><span class="se">\\</span><span class="s2"> of(?=</span><span class="se">\\</span><span class="s2">W|$)+|"</span>
|
||||
<span class="s2">"/[0-9]*-*sender</span><span class="se">\\</span><span class="s2"> of</span><span class="se">\\</span><span class="s2"> emotes(?=</span><span class="se">\\</span><span class="s2">W|$)+|"</span>
|
||||
<span class="s2">"/[0-9]*-*nice</span><span class="se">\\</span><span class="s2"> sender</span><span class="se">\\</span><span class="s2"> of(?=</span><span class="se">\\</span><span class="s2">W|$)+|"</span>
|
||||
<span class="s2">"/[0-9]*-*A</span><span class="se">\\</span><span class="s2"> nice</span><span class="se">\\</span><span class="s2"> sender(?=</span><span class="se">\\</span><span class="s2">W|$)+|"</span>
|
||||
<span class="s2">"/[0-9]*-*nice</span><span class="se">\\</span><span class="s2"> sender(?=</span><span class="se">\\</span><span class="s2">W|$)+|"</span>
|
||||
<span class="s2">"/[0-9]*-*of</span><span class="se">\\</span><span class="s2"> emotes(?=</span><span class="se">\\</span><span class="s2">W|$)+|"</span>
|
||||
<span class="s2">"/[0-9]*-*sender</span><span class="se">\\</span><span class="s2"> of(?=</span><span class="se">\\</span><span class="s2">W|$)+|"</span>
|
||||
<span class="s2">"/[0-9]*-*A</span><span class="se">\\</span><span class="s2"> nice(?=</span><span class="se">\\</span><span class="s2">W|$)+|"</span>
|
||||
<span class="s2">"/[0-9]*-*emotes(?=</span><span class="se">\\</span><span class="s2">W|$)+|"</span>
|
||||
<span class="s2">"/[0-9]*-*sender(?=</span><span class="se">\\</span><span class="s2">W|$)+|"</span>
|
||||
<span class="s2">"/[0-9]*-*nice(?=</span><span class="se">\\</span><span class="s2">W|$)+|"</span>
|
||||
<span class="s2">"/[0-9]*-*of(?=</span><span class="se">\\</span><span class="s2">W|$)+|"</span>
|
||||
<span class="s2">"/[0-9]*-*A(?=</span><span class="se">\\</span><span class="s2">W|$)+"</span><span class="p">,</span>
|
||||
<span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="TestRPSystem.test_sdesc_handler"><a class="viewcode-back" href="../../../../../api/evennia.contrib.rpg.rpsystem.tests.html#evennia.contrib.rpg.rpsystem.tests.TestRPSystem.test_sdesc_handler">[docs]</a> <span class="k">def</span> <span class="nf">test_sdesc_handler</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">speaker</span><span class="o">.</span><span class="n">sdesc</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">sdesc0</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">speaker</span><span class="o">.</span><span class="n">sdesc</span><span class="o">.</span><span class="n">get</span><span class="p">(),</span> <span class="n">sdesc0</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">speaker</span><span class="o">.</span><span class="n">sdesc</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s2">"This is {#324} ignored"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">speaker</span><span class="o">.</span><span class="n">sdesc</span><span class="o">.</span><span class="n">get</span><span class="p">(),</span> <span class="s2">"This is 324 ignored"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">speaker</span><span class="o">.</span><span class="n">sdesc</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s2">"Testing three words"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">speaker</span><span class="o">.</span><span class="n">sdesc</span><span class="o">.</span><span class="n">get_regex_tuple</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">pattern</span><span class="p">,</span>
|
||||
<span class="s2">"/[0-9]*-*Testing\ three\ words(?=\W|$)+|"</span>
|
||||
<span class="s2">"/[0-9]*-*Testing\ three(?=\W|$)+|"</span>
|
||||
<span class="s2">"/[0-9]*-*three\ words(?=\W|$)+|"</span>
|
||||
<span class="s2">"/[0-9]*-*Testing(?=\W|$)+|"</span>
|
||||
<span class="s2">"/[0-9]*-*three(?=\W|$)+|"</span>
|
||||
<span class="s2">"/[0-9]*-*words(?=\W|$)+"</span><span class="p">,</span>
|
||||
<span class="p">)</span></div>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">speaker</span><span class="o">.</span><span class="n">sdesc</span><span class="o">.</span><span class="n">get</span><span class="p">(),</span> <span class="s2">"This is 324 ignored"</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="TestRPSystem.test_recog_handler"><a class="viewcode-back" href="../../../../../api/evennia.contrib.rpg.rpsystem.tests.html#evennia.contrib.rpg.rpsystem.tests.TestRPSystem.test_recog_handler">[docs]</a> <span class="k">def</span> <span class="nf">test_recog_handler</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">speaker</span><span class="o">.</span><span class="n">sdesc</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">sdesc0</span><span class="p">)</span>
|
||||
|
|
@ -198,12 +168,8 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">speaker</span><span class="o">.</span><span class="n">recog</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">receiver2</span><span class="p">,</span> <span class="n">recog02</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">speaker</span><span class="o">.</span><span class="n">recog</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">receiver1</span><span class="p">),</span> <span class="n">recog01</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">speaker</span><span class="o">.</span><span class="n">recog</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">receiver2</span><span class="p">),</span> <span class="n">recog02</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">speaker</span><span class="o">.</span><span class="n">recog</span><span class="o">.</span><span class="n">get_regex_tuple</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">receiver1</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">pattern</span><span class="p">,</span>
|
||||
<span class="s2">"/[0-9]*-*Mr</span><span class="se">\\</span><span class="s2"> Receiver(?=</span><span class="se">\\</span><span class="s2">W|$)+|/[0-9]*-*Receiver(?=</span><span class="se">\\</span><span class="s2">W|$)+|/[0-9]*-*Mr(?=</span><span class="se">\\</span><span class="s2">W|$)+"</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">speaker</span><span class="o">.</span><span class="n">recog</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">receiver1</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">speaker</span><span class="o">.</span><span class="n">recog</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">receiver1</span><span class="p">),</span> <span class="n">sdesc1</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">speaker</span><span class="o">.</span><span class="n">recog</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">receiver1</span><span class="p">),</span> <span class="kc">None</span><span class="p">)</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">speaker</span><span class="o">.</span><span class="n">recog</span><span class="o">.</span><span class="n">all</span><span class="p">(),</span> <span class="p">{</span><span class="s2">"Mr Receiver2"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">receiver2</span><span class="p">})</span></div>
|
||||
|
||||
|
|
@ -240,6 +206,26 @@
|
|||
<span class="n">result</span><span class="p">,</span>
|
||||
<span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="TestRPSystem.test_get_sdesc"><a class="viewcode-back" href="../../../../../api/evennia.contrib.rpg.rpsystem.tests.html#evennia.contrib.rpg.rpsystem.tests.TestRPSystem.test_get_sdesc">[docs]</a> <span class="k">def</span> <span class="nf">test_get_sdesc</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="n">looker</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">speaker</span> <span class="c1"># Sender</span>
|
||||
<span class="n">target</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">receiver1</span> <span class="c1"># Receiver1</span>
|
||||
<span class="n">looker</span><span class="o">.</span><span class="n">sdesc</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">sdesc0</span><span class="p">)</span> <span class="c1"># A nice sender of emotes</span>
|
||||
<span class="n">target</span><span class="o">.</span><span class="n">sdesc</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">sdesc1</span><span class="p">)</span> <span class="c1"># The first receiver of emotes.</span>
|
||||
|
||||
<span class="c1"># sdesc with no processing</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">looker</span><span class="o">.</span><span class="n">get_sdesc</span><span class="p">(</span><span class="n">target</span><span class="p">),</span> <span class="s2">"The first receiver of emotes."</span><span class="p">)</span>
|
||||
<span class="c1"># sdesc with processing</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span>
|
||||
<span class="n">looker</span><span class="o">.</span><span class="n">get_sdesc</span><span class="p">(</span><span class="n">target</span><span class="p">,</span> <span class="n">process</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> <span class="s2">"|bThe first receiver of emotes.|n"</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">looker</span><span class="o">.</span><span class="n">recog</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">target</span><span class="p">,</span> <span class="n">recog01</span><span class="p">)</span> <span class="c1"># Mr Receiver</span>
|
||||
|
||||
<span class="c1"># recog with no processing</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">looker</span><span class="o">.</span><span class="n">get_sdesc</span><span class="p">(</span><span class="n">target</span><span class="p">),</span> <span class="s2">"Mr Receiver"</span><span class="p">)</span>
|
||||
<span class="c1"># recog with processing</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">looker</span><span class="o">.</span><span class="n">get_sdesc</span><span class="p">(</span><span class="n">target</span><span class="p">,</span> <span class="n">process</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> <span class="s2">"|mMr Receiver|n"</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="TestRPSystem.test_send_emote"><a class="viewcode-back" href="../../../../../api/evennia.contrib.rpg.rpsystem.tests.html#evennia.contrib.rpg.rpsystem.tests.TestRPSystem.test_send_emote">[docs]</a> <span class="k">def</span> <span class="nf">test_send_emote</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="n">speaker</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">speaker</span>
|
||||
<span class="n">receiver1</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">receiver1</span>
|
||||
|
|
@ -254,18 +240,18 @@
|
|||
<span class="n">rpsystem</span><span class="o">.</span><span class="n">send_emote</span><span class="p">(</span><span class="n">speaker</span><span class="p">,</span> <span class="n">receivers</span><span class="p">,</span> <span class="n">emote</span><span class="p">,</span> <span class="n">case_sensitive</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">out0</span><span class="p">,</span>
|
||||
<span class="s2">"With a flair, |bSender|n looks at |bThe first receiver of emotes.|n "</span>
|
||||
<span class="s2">"With a flair, |mSender|n looks at |bThe first receiver of emotes.|n "</span>
|
||||
<span class="s1">'and |bAnother nice colliding sdesc-guy for tests|n. She says |w"This is a test."|n'</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">out1</span><span class="p">,</span>
|
||||
<span class="s2">"With a flair, |bA nice sender of emotes|n looks at |bReceiver1|n and "</span>
|
||||
<span class="s2">"With a flair, |bA nice sender of emotes|n looks at |mReceiver1|n and "</span>
|
||||
<span class="s1">'|bAnother nice colliding sdesc-guy for tests|n. She says |w"This is a test."|n'</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">out2</span><span class="p">,</span>
|
||||
<span class="s2">"With a flair, |bA nice sender of emotes|n looks at |bThe first "</span>
|
||||
<span class="s1">'receiver of emotes.|n and |bReceiver2|n. She says |w"This is a test."|n'</span><span class="p">,</span>
|
||||
<span class="s1">'receiver of emotes.|n and |mReceiver2|n. She says |w"This is a test."|n'</span><span class="p">,</span>
|
||||
<span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="TestRPSystem.test_send_case_sensitive_emote"><a class="viewcode-back" href="../../../../../api/evennia.contrib.rpg.rpsystem.tests.html#evennia.contrib.rpg.rpsystem.tests.TestRPSystem.test_send_case_sensitive_emote">[docs]</a> <span class="k">def</span> <span class="nf">test_send_case_sensitive_emote</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
|
|
@ -283,20 +269,21 @@
|
|||
<span class="n">rpsystem</span><span class="o">.</span><span class="n">send_emote</span><span class="p">(</span><span class="n">speaker</span><span class="p">,</span> <span class="n">receivers</span><span class="p">,</span> <span class="n">case_emote</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">out0</span><span class="p">,</span>
|
||||
<span class="s2">"|bSender|n looks at |bthe first receiver of emotes.|n, then "</span>
|
||||
<span class="s2">"|bTHE FIRST RECEIVER OF EMOTES.|n, |bThe first receiver of emotes.|n and "</span>
|
||||
<span class="s2">"|bAnother nice colliding sdesc-guy for tests|n twice."</span><span class="p">,</span>
|
||||
<span class="s2">"|mSender|n looks at |bthe first receiver of emotes.|n. Then, |mSender|n "</span>
|
||||
<span class="s2">"looks at |bTHE FIRST RECEIVER OF EMOTES.|n, |bThe first receiver of emotes.|n "</span>
|
||||
<span class="s2">"and |bAnother nice colliding sdesc-guy for tests|n twice."</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">out1</span><span class="p">,</span>
|
||||
<span class="s2">"|bA nice sender of emotes|n looks at |bReceiver1|n, then |bReceiver1|n, "</span>
|
||||
<span class="s2">"|bReceiver1|n and |bAnother nice colliding sdesc-guy for tests|n twice."</span><span class="p">,</span>
|
||||
<span class="s2">"|bA nice sender of emotes|n looks at |mReceiver1|n. Then, "</span>
|
||||
<span class="s2">"|ba nice sender of emotes|n looks at |mReceiver1|n, |mReceiver1|n "</span>
|
||||
<span class="s2">"and |bAnother nice colliding sdesc-guy for tests|n twice."</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">out2</span><span class="p">,</span>
|
||||
<span class="s2">"|bA nice sender of emotes|n looks at |bthe first receiver of emotes.|n, "</span>
|
||||
<span class="s2">"then |bTHE FIRST RECEIVER OF EMOTES.|n, |bThe first receiver of "</span>
|
||||
<span class="s2">"emotes.|n and |bReceiver2|n twice."</span><span class="p">,</span>
|
||||
<span class="s2">"|bA nice sender of emotes|n looks at |bthe first receiver of emotes.|n. "</span>
|
||||
<span class="s2">"Then, |ba nice sender of emotes|n looks at |bTHE FIRST RECEIVER OF EMOTES.|n, "</span>
|
||||
<span class="s2">"|bThe first receiver of emotes.|n and |mReceiver2|n twice."</span><span class="p">,</span>
|
||||
<span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="TestRPSystem.test_rpsearch"><a class="viewcode-back" href="../../../../../api/evennia.contrib.rpg.rpsystem.tests.html#evennia.contrib.rpg.rpsystem.tests.TestRPSystem.test_rpsearch">[docs]</a> <span class="k">def</span> <span class="nf">test_rpsearch</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
|
|
@ -305,19 +292,7 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">receiver2</span><span class="o">.</span><span class="n">sdesc</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">sdesc2</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">speaker</span><span class="o">.</span><span class="n">msg</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">text</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="nb">setattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">"out0"</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">speaker</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="s2">"receiver of emotes"</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">receiver1</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">speaker</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="s2">"colliding"</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">receiver2</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="TestRPSystem.test_regex_tuple_from_key_alias"><a class="viewcode-back" href="../../../../../api/evennia.contrib.rpg.rpsystem.tests.html#evennia.contrib.rpg.rpsystem.tests.TestRPSystem.test_regex_tuple_from_key_alias">[docs]</a> <span class="k">def</span> <span class="nf">test_regex_tuple_from_key_alias</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">speaker</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s2">"foo bar"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">speaker</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s2">"this thing is a long thing"</span><span class="p">)</span>
|
||||
<span class="n">t0</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span>
|
||||
<span class="n">result</span> <span class="o">=</span> <span class="n">rpsystem</span><span class="o">.</span><span class="n">regex_tuple_from_key_alias</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">speaker</span><span class="p">)</span>
|
||||
<span class="n">t1</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span>
|
||||
<span class="n">result</span> <span class="o">=</span> <span class="n">rpsystem</span><span class="o">.</span><span class="n">regex_tuple_from_key_alias</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">speaker</span><span class="p">)</span>
|
||||
<span class="n">t2</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span>
|
||||
<span class="c1"># print(f"t1: {t1 - t0}, t2: {t2 - t1}")</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertLess</span><span class="p">(</span><span class="n">t2</span> <span class="o">-</span> <span class="n">t1</span><span class="p">,</span> <span class="mi">10</span><span class="o">**-</span><span class="mi">4</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">result</span><span class="p">,</span> <span class="p">(</span><span class="n">Anything</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">speaker</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">speaker</span><span class="o">.</span><span class="n">key</span><span class="p">))</span></div></div>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">speaker</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="s2">"colliding"</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">receiver2</span><span class="p">)</span></div></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="TestRPSystemCommands"><a class="viewcode-back" href="../../../../../api/evennia.contrib.rpg.rpsystem.tests.html#evennia.contrib.rpg.rpsystem.tests.TestRPSystemCommands">[docs]</a><span class="k">class</span> <span class="nc">TestRPSystemCommands</span><span class="p">(</span><span class="n">BaseEvenniaCommandTest</span><span class="p">):</span>
|
||||
|
|
@ -347,7 +322,7 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span>
|
||||
<span class="n">rpsystem</span><span class="o">.</span><span class="n">CmdRecog</span><span class="p">(),</span>
|
||||
<span class="s2">"barfoo as friend"</span><span class="p">,</span>
|
||||
<span class="s2">"Char will now remember BarFoo Character as friend."</span><span class="p">,</span>
|
||||
<span class="s2">"You will now remember BarFoo Character as friend."</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span>
|
||||
<span class="n">rpsystem</span><span class="o">.</span><span class="n">CmdRecog</span><span class="p">(),</span>
|
||||
|
|
@ -358,7 +333,7 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span>
|
||||
<span class="n">rpsystem</span><span class="o">.</span><span class="n">CmdRecog</span><span class="p">(),</span>
|
||||
<span class="s2">"friend"</span><span class="p">,</span>
|
||||
<span class="s2">"Char will now know them only as 'BarFoo Character'"</span><span class="p">,</span>
|
||||
<span class="s2">"You will now know them only as 'BarFoo Character'"</span><span class="p">,</span>
|
||||
<span class="n">cmdstring</span><span class="o">=</span><span class="s2">"forget"</span><span class="p">,</span>
|
||||
<span class="p">)</span></div></div>
|
||||
</pre></div>
|
||||
|
|
|
|||
|
|
@ -363,7 +363,6 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">trait</span><span class="o">.</span><span class="n">mult</span> <span class="o">=</span> <span class="mf">0.75</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_get_values</span><span class="p">(),</span> <span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mf">0.75</span><span class="p">,</span> <span class="mf">4.5</span><span class="p">))</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="TestTraitStatic.test_delete"><a class="viewcode-back" href="../../../../../api/evennia.contrib.rpg.traits.tests.html#evennia.contrib.rpg.traits.tests.TestTraitStatic.test_delete">[docs]</a> <span class="k">def</span> <span class="nf">test_delete</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""Deleting resets to default."""</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">trait</span><span class="o">.</span><span class="n">mult</span> <span class="o">=</span> <span class="mf">2.0</span>
|
||||
|
|
@ -404,7 +403,14 @@
|
|||
|
||||
<span class="k">def</span> <span class="nf">_get_values</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""Get (base, mod, mult, value, min, max)."""</span>
|
||||
<span class="k">return</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">trait</span><span class="o">.</span><span class="n">base</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">trait</span><span class="o">.</span><span class="n">mod</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">trait</span><span class="o">.</span><span class="n">mult</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">trait</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">trait</span><span class="o">.</span><span class="n">min</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">trait</span><span class="o">.</span><span class="n">max</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">trait</span><span class="o">.</span><span class="n">base</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">trait</span><span class="o">.</span><span class="n">mod</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">trait</span><span class="o">.</span><span class="n">mult</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">trait</span><span class="o">.</span><span class="n">value</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">trait</span><span class="o">.</span><span class="n">min</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">trait</span><span class="o">.</span><span class="n">max</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<div class="viewcode-block" id="TestTraitCounter.test_init"><a class="viewcode-back" href="../../../../../api/evennia.contrib.rpg.traits.tests.html#evennia.contrib.rpg.traits.tests.TestTraitCounter.test_init">[docs]</a> <span class="k">def</span> <span class="nf">test_init</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span>
|
||||
|
|
@ -676,7 +682,14 @@
|
|||
|
||||
<span class="k">def</span> <span class="nf">_get_values</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""Get (base, mod, mult, value, min, max)."""</span>
|
||||
<span class="k">return</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">trait</span><span class="o">.</span><span class="n">base</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">trait</span><span class="o">.</span><span class="n">mod</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">trait</span><span class="o">.</span><span class="n">mult</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">trait</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">trait</span><span class="o">.</span><span class="n">min</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">trait</span><span class="o">.</span><span class="n">max</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">trait</span><span class="o">.</span><span class="n">base</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">trait</span><span class="o">.</span><span class="n">mod</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">trait</span><span class="o">.</span><span class="n">mult</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">trait</span><span class="o">.</span><span class="n">value</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">trait</span><span class="o">.</span><span class="n">min</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">trait</span><span class="o">.</span><span class="n">max</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<div class="viewcode-block" id="TestTraitGauge.test_init"><a class="viewcode-back" href="../../../../../api/evennia.contrib.rpg.traits.tests.html#evennia.contrib.rpg.traits.tests.TestTraitGauge.test_init">[docs]</a> <span class="k">def</span> <span class="nf">test_init</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span>
|
||||
|
|
|
|||
|
|
@ -1190,7 +1190,7 @@
|
|||
|
||||
<div class="viewcode-block" id="StaticTrait"><a class="viewcode-back" href="../../../../../api/evennia.contrib.rpg.traits.traits.html#evennia.contrib.rpg.traits.traits.StaticTrait">[docs]</a><span class="k">class</span> <span class="nc">StaticTrait</span><span class="p">(</span><span class="n">Trait</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Static Trait. This is a single value with a modifier, </span>
|
||||
<span class="sd"> Static Trait. This is a single value with a modifier,</span>
|
||||
<span class="sd"> multiplier, and no concept of a 'current' value or min/max etc.</span>
|
||||
|
||||
<span class="sd"> value = (base + mod) * mult</span>
|
||||
|
|
@ -1203,7 +1203,9 @@
|
|||
|
||||
<span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="n">status</span> <span class="o">=</span> <span class="s2">"</span><span class="si">{value:11}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">value</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="s2">"</span><span class="si">{name:12}</span><span class="s2"> </span><span class="si">{status}</span><span class="s2"> (</span><span class="si">{mod:+3}</span><span class="s2">) (* </span><span class="si">{mult:.2f}</span><span class="s2">)"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">status</span><span class="o">=</span><span class="n">status</span><span class="p">,</span> <span class="n">mod</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">mod</span><span class="p">,</span> <span class="n">mult</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">mult</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="s2">"</span><span class="si">{name:12}</span><span class="s2"> </span><span class="si">{status}</span><span class="s2"> (</span><span class="si">{mod:+3}</span><span class="s2">) (* </span><span class="si">{mult:.2f}</span><span class="s2">)"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">name</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">status</span><span class="o">=</span><span class="n">status</span><span class="p">,</span> <span class="n">mod</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">mod</span><span class="p">,</span> <span class="n">mult</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">mult</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="c1"># Helpers</span>
|
||||
<span class="nd">@property</span>
|
||||
|
|
@ -1231,7 +1233,7 @@
|
|||
<span class="k">def</span> <span class="nf">mult</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The trait's multiplier."""</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">[</span><span class="s2">"mult"</span><span class="p">]</span>
|
||||
|
||||
|
||||
<span class="nd">@mult</span><span class="o">.</span><span class="n">setter</span>
|
||||
<span class="k">def</span> <span class="nf">mult</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">amount</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">amount</span><span class="p">)</span> <span class="ow">in</span> <span class="p">(</span><span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">):</span>
|
||||
|
|
@ -1364,16 +1366,16 @@
|
|||
<span class="n">now</span> <span class="o">=</span> <span class="n">time</span><span class="p">()</span>
|
||||
<span class="n">tdiff</span> <span class="o">=</span> <span class="n">now</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">[</span><span class="s2">"last_update"</span><span class="p">]</span>
|
||||
<span class="n">current</span> <span class="o">+=</span> <span class="n">rate</span> <span class="o">*</span> <span class="n">tdiff</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="p">(</span><span class="n">current</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">mod</span><span class="p">)</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">current</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">mod</span>
|
||||
|
||||
<span class="c1"># we must make sure so we don't overstep our bounds</span>
|
||||
<span class="c1"># even if .mod is included</span>
|
||||
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_passed_ratetarget</span><span class="p">(</span><span class="n">value</span><span class="p">):</span>
|
||||
<span class="n">current</span> <span class="o">=</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">[</span><span class="s2">"ratetarget"</span><span class="p">]</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">mod</span><span class="p">)</span>
|
||||
<span class="n">current</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">[</span><span class="s2">"ratetarget"</span><span class="p">]</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">mod</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_stop_timer</span><span class="p">()</span>
|
||||
<span class="k">elif</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_within_boundaries</span><span class="p">(</span><span class="n">value</span><span class="p">):</span>
|
||||
<span class="n">current</span> <span class="o">=</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_enforce_boundaries</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">mod</span><span class="p">)</span>
|
||||
<span class="n">current</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_enforce_boundaries</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">mod</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_stop_timer</span><span class="p">()</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">[</span><span class="s2">"last_update"</span><span class="p">]</span> <span class="o">=</span> <span class="n">now</span>
|
||||
|
|
@ -1420,7 +1422,7 @@
|
|||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">mult</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">[</span><span class="s2">"mult"</span><span class="p">]</span>
|
||||
|
||||
|
||||
<span class="nd">@mult</span><span class="o">.</span><span class="n">setter</span>
|
||||
<span class="k">def</span> <span class="nf">mult</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">amount</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">amount</span><span class="p">)</span> <span class="ow">in</span> <span class="p">(</span><span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">):</span>
|
||||
|
|
@ -1613,7 +1615,9 @@
|
|||
|
||||
<span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="n">status</span> <span class="o">=</span> <span class="s2">"</span><span class="si">{value:4}</span><span class="s2"> / </span><span class="si">{base:4}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">value</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="n">base</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">base</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="s2">"</span><span class="si">{name:12}</span><span class="s2"> </span><span class="si">{status}</span><span class="s2"> (</span><span class="si">{mod:+3}</span><span class="s2">) (* </span><span class="si">{mult:.2f}</span><span class="s2">)"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">status</span><span class="o">=</span><span class="n">status</span><span class="p">,</span> <span class="n">mod</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">mod</span><span class="p">,</span> <span class="n">mult</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">mult</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="s2">"</span><span class="si">{name:12}</span><span class="s2"> </span><span class="si">{status}</span><span class="s2"> (</span><span class="si">{mod:+3}</span><span class="s2">) (* </span><span class="si">{mult:.2f}</span><span class="s2">)"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">name</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">status</span><span class="o">=</span><span class="n">status</span><span class="p">,</span> <span class="n">mod</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">mod</span><span class="p">,</span> <span class="n">mult</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">mult</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">base</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
|
|
@ -1638,11 +1642,11 @@
|
|||
<span class="k">if</span> <span class="n">value</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">base</span> <span class="o"><</span> <span class="bp">self</span><span class="o">.</span><span class="n">min</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">min</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">base</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">[</span><span class="s2">"mod"</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span>
|
||||
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">mult</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">[</span><span class="s2">"mult"</span><span class="p">]</span>
|
||||
|
||||
|
||||
<span class="nd">@mult</span><span class="o">.</span><span class="n">setter</span>
|
||||
<span class="k">def</span> <span class="nf">mult</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">amount</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">amount</span><span class="p">)</span> <span class="ow">in</span> <span class="p">(</span><span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">):</span>
|
||||
|
|
@ -1663,7 +1667,7 @@
|
|||
<span class="k">if</span> <span class="n">value</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">[</span><span class="s2">"min"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">default_keys</span><span class="p">[</span><span class="s2">"min"</span><span class="p">]</span>
|
||||
<span class="k">elif</span> <span class="nb">type</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> <span class="ow">in</span> <span class="p">(</span><span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">[</span><span class="s2">"min"</span><span class="p">]</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">base</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">mod</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">mult</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">[</span><span class="s2">"min"</span><span class="p">]</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">base</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">mod</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">mult</span><span class="p">)</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">max</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
|
|
@ -1686,7 +1690,7 @@
|
|||
<span class="k">def</span> <span class="nf">current</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The `current` value of the gauge."""</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_update_current</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_enforce_boundaries</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"current"</span><span class="p">,</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">base</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">mod</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">mult</span><span class="p">))</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_enforce_boundaries</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"current"</span><span class="p">,</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">base</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">mod</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">mult</span><span class="p">))</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="nd">@current</span><span class="o">.</span><span class="n">setter</span>
|
||||
|
|
@ -1697,7 +1701,7 @@
|
|||
<span class="nd">@current</span><span class="o">.</span><span class="n">deleter</span>
|
||||
<span class="k">def</span> <span class="nf">current</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="s2">"Resets current back to 'full'"</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">[</span><span class="s2">"current"</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">base</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">mod</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">mult</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="p">[</span><span class="s2">"current"</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">base</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">mod</span><span class="p">)</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">mult</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">value</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
|
|
|
|||
|
|
@ -54,9 +54,13 @@
|
|||
<span class="c1"># since we use them (e.g. as command names).</span>
|
||||
<span class="c1"># Lunr's default ignore-word list is found here:</span>
|
||||
<span class="c1"># https://github.com/yeraydiazdiaz/lunr.py/blob/master/lunr/stop_word_filter.py</span>
|
||||
<span class="n">_LUNR_STOP_WORD_FILTER_EXCEPTIONS</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="p">[</span><span class="s2">"about"</span><span class="p">,</span> <span class="s2">"might"</span><span class="p">,</span> <span class="s2">"get"</span><span class="p">,</span> <span class="s2">"who"</span><span class="p">,</span> <span class="s2">"say"</span><span class="p">]</span> <span class="o">+</span> <span class="n">settings</span><span class="o">.</span><span class="n">LUNR_STOP_WORD_FILTER_EXCEPTIONS</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">_LUNR_STOP_WORD_FILTER_EXCEPTIONS</span> <span class="o">=</span> <span class="p">[</span>
|
||||
<span class="s2">"about"</span><span class="p">,</span>
|
||||
<span class="s2">"might"</span><span class="p">,</span>
|
||||
<span class="s2">"get"</span><span class="p">,</span>
|
||||
<span class="s2">"who"</span><span class="p">,</span>
|
||||
<span class="s2">"say"</span><span class="p">,</span>
|
||||
<span class="p">]</span> <span class="o">+</span> <span class="n">settings</span><span class="o">.</span><span class="n">LUNR_STOP_WORD_FILTER_EXCEPTIONS</span>
|
||||
|
||||
|
||||
<span class="n">_LUNR</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
|
|
|
|||
|
|
@ -515,6 +515,7 @@
|
|||
<span class="n">category</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span> <span class="k">else</span> <span class="kc">None</span>
|
||||
<span class="k">return</span> <span class="nb">bool</span><span class="p">(</span><span class="n">accessing_obj</span><span class="o">.</span><span class="n">tags</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">tagkey</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="n">category</span><span class="p">))</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="is_ooc"><a class="viewcode-back" href="../../../api/evennia.locks.lockfuncs.html#evennia.locks.lockfuncs.is_ooc">[docs]</a><span class="k">def</span> <span class="nf">is_ooc</span><span class="p">(</span><span class="n">accessing_obj</span><span class="p">,</span> <span class="n">accessed_obj</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Usage:</span>
|
||||
|
|
@ -531,13 +532,14 @@
|
|||
<span class="n">session</span> <span class="o">=</span> <span class="n">accessed_obj</span><span class="o">.</span><span class="n">session</span>
|
||||
<span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span>
|
||||
<span class="n">session</span> <span class="o">=</span> <span class="n">account</span><span class="o">.</span><span class="n">sessions</span><span class="o">.</span><span class="n">get</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span> <span class="c1"># note-this doesn't work well</span>
|
||||
<span class="c1"># for high multisession mode. We may need</span>
|
||||
<span class="c1"># to change to sessiondb to resolve this</span>
|
||||
<span class="c1"># for high multisession mode. We may need</span>
|
||||
<span class="c1"># to change to sessiondb to resolve this</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="ow">not</span> <span class="n">account</span><span class="o">.</span><span class="n">get_puppet</span><span class="p">(</span><span class="n">session</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">TypeError</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="ow">not</span> <span class="n">session</span><span class="o">.</span><span class="n">get_puppet</span><span class="p">()</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="objtag"><a class="viewcode-back" href="../../../api/evennia.locks.lockfuncs.html#evennia.locks.lockfuncs.objtag">[docs]</a><span class="k">def</span> <span class="nf">objtag</span><span class="p">(</span><span class="n">accessing_obj</span><span class="p">,</span> <span class="n">accessed_obj</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Usage:</span>
|
||||
|
|
|
|||
|
|
@ -1270,6 +1270,8 @@
|
|||
<span class="sd"> """</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">basetype_setup</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">at_object_creation</span><span class="p">()</span>
|
||||
<span class="c1"># initialize Attribute/TagProperties</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">init_evennia_properties</span><span class="p">()</span>
|
||||
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">"_createdict"</span><span class="p">):</span>
|
||||
<span class="c1"># this will only be set if the utils.create function</span>
|
||||
|
|
|
|||
|
|
@ -570,8 +570,10 @@
|
|||
|
||||
<span class="sd"> """</span>
|
||||
<span class="c1"># This will load the prototypes the first time they are searched</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">_MODULE_PROTOTYPE_MODULES</span><span class="p">:</span>
|
||||
<span class="n">loaded</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">load_module_prototypes</span><span class="p">,</span> <span class="s2">"_LOADED"</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">loaded</span><span class="p">:</span>
|
||||
<span class="n">load_module_prototypes</span><span class="p">()</span>
|
||||
<span class="nb">setattr</span><span class="p">(</span><span class="n">load_module_prototypes</span><span class="p">,</span> <span class="s2">"_LOADED"</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># prototype keys are always in lowecase</span>
|
||||
<span class="k">if</span> <span class="n">key</span><span class="p">:</span>
|
||||
|
|
|
|||
|
|
@ -442,7 +442,10 @@
|
|||
<span class="sd"> overriding the call (unused by default).</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">basetype_setup</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">at_script_creation</span><span class="p">()</span>
|
||||
<span class="c1"># initialize Attribute/TagProperties</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">init_evennia_properties</span><span class="p">()</span>
|
||||
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">"_createdict"</span><span class="p">):</span>
|
||||
<span class="c1"># this will only be set if the utils.create_script</span>
|
||||
|
|
@ -513,6 +516,14 @@
|
|||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">delete</span><span class="p">()</span>
|
||||
<span class="k">return</span> <span class="kc">True</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">basetype_setup</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Changes fundamental aspects of the type. Usually changes are made in at_script creation</span>
|
||||
<span class="sd"> instead.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">pass</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">at_init</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Called when the Script is cached in the idmapper. This is usually more reliable</span>
|
||||
|
|
|
|||
|
|
@ -627,9 +627,9 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">ticker_pool</span><span class="o">.</span><span class="n">stop</span><span class="p">(</span><span class="n">interval</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">interval</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">ticker_storage</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span>
|
||||
<span class="p">(</span><span class="n">store_key</span><span class="p">,</span> <span class="n">store_key</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">store_key</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">ticker_storage</span>
|
||||
<span class="k">if</span> <span class="n">store_key</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">!=</span> <span class="n">interval</span>
|
||||
<span class="p">(</span><span class="n">store_key</span><span class="p">,</span> <span class="n">store_value</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">store_key</span><span class="p">,</span> <span class="n">store_value</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">ticker_storage</span><span class="o">.</span><span class="n">items</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">store_key</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">!=</span> <span class="n">interval</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">ticker_storage</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
|
|
|
|||
|
|
@ -2358,9 +2358,11 @@
|
|||
<span class="k">if</span> <span class="n">option</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"makemessages"</span><span class="p">,</span> <span class="s2">"compilemessages"</span><span class="p">):</span>
|
||||
<span class="c1"># some commands don't require the presence of a game directory to work</span>
|
||||
<span class="n">need_gamedir</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
<span class="k">if</span> <span class="n">CURRENT_DIR</span> <span class="o">!=</span> <span class="n">EVENNIA_LIB</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"You must stand in the evennia/evennia/ folder (where the 'locale/' "</span>
|
||||
<span class="s2">"folder is located) to run this command."</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">CURRENT_DIR</span> <span class="o">!=</span> <span class="n">EVENNIA_LIB</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span>
|
||||
<span class="s2">"You must stand in the evennia/evennia/ folder (where the 'locale/' "</span>
|
||||
<span class="s2">"folder is located) to run this command."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">()</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">option</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"shell"</span><span class="p">,</span> <span class="s2">"check"</span><span class="p">,</span> <span class="s2">"makemigrations"</span><span class="p">,</span> <span class="s2">"createsuperuser"</span><span class="p">,</span> <span class="s2">"shell_plus"</span><span class="p">):</span>
|
||||
|
|
|
|||
|
|
@ -465,6 +465,7 @@
|
|||
<span class="n">logger</span><span class="o">.</span><span class="n">log_msg</span><span class="p">(</span><span class="s2">"Evennia Server successfully restarted in 'reset' mode."</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">mode</span> <span class="o">==</span> <span class="s2">"shutdown"</span><span class="p">:</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.objects.models</span> <span class="kn">import</span> <span class="n">ObjectDB</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">at_server_cold_start</span><span class="p">()</span>
|
||||
<span class="c1"># clear eventual lingering session storages</span>
|
||||
<span class="n">ObjectDB</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">clear_all_sessids</span><span class="p">()</span>
|
||||
|
|
|
|||
|
|
@ -218,7 +218,7 @@
|
|||
|
||||
<span class="n">attrhandler_name</span> <span class="o">=</span> <span class="s2">"attributes"</span>
|
||||
|
||||
<div class="viewcode-block" id="AttributeProperty.__init__"><a class="viewcode-back" href="../../../api/evennia.typeclasses.attributes.html#evennia.typeclasses.attributes.AttributeProperty.__init__">[docs]</a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">strattr</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">lockstring</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> <span class="n">autocreate</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="AttributeProperty.__init__"><a class="viewcode-back" href="../../../api/evennia.typeclasses.attributes.html#evennia.typeclasses.attributes.AttributeProperty.__init__">[docs]</a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">strattr</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">lockstring</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> <span class="n">autocreate</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Initialize an Attribute as a property descriptor.</span>
|
||||
|
||||
|
|
@ -230,12 +230,12 @@
|
|||
<span class="sd"> lockstring (str): This is not itself useful with the property, but only if</span>
|
||||
<span class="sd"> using the full AttributeHandler.get(accessing_obj=...) to access the</span>
|
||||
<span class="sd"> Attribute.</span>
|
||||
<span class="sd"> autocreate (bool): If an un-found Attr should lead to auto-creating the</span>
|
||||
<span class="sd"> Attribute (with the default value). If `False`, the property will</span>
|
||||
<span class="sd"> return the default value until it has been explicitly set. This means</span>
|
||||
<span class="sd"> less database accesses, but also means the property will have no</span>
|
||||
<span class="sd"> corresponding Attribute if wanting to access it directly via the</span>
|
||||
<span class="sd"> AttributeHandler (it will also not show up in `examine`).</span>
|
||||
<span class="sd"> autocreate (bool): True by default; this means Evennia makes sure to create a new</span>
|
||||
<span class="sd"> copy of the Attribute (with the default value) whenever a new object with this</span>
|
||||
<span class="sd"> property is created. If `False`, no Attribute will be created until the property</span>
|
||||
<span class="sd"> is explicitly assigned a value. This makes it more efficient while it retains</span>
|
||||
<span class="sd"> its default (there's no db access), but without an actual Attribute generated,</span>
|
||||
<span class="sd"> one cannot access it via .db, the AttributeHandler or see it with `examine`.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_default</span> <span class="o">=</span> <span class="n">default</span>
|
||||
|
|
@ -260,12 +260,14 @@
|
|||
<span class="sd"> """</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_default</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">instance</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">attrhandler_name</span><span class="p">)</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
|
||||
<span class="n">key</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_key</span><span class="p">,</span>
|
||||
<span class="n">default</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_default</span><span class="p">,</span>
|
||||
<span class="n">category</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_category</span><span class="p">,</span>
|
||||
<span class="n">strattr</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_strattr</span><span class="p">,</span>
|
||||
<span class="n">raise_exception</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_autocreate</span><span class="p">,</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">at_get</span><span class="p">(</span>
|
||||
<span class="nb">getattr</span><span class="p">(</span><span class="n">instance</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">attrhandler_name</span><span class="p">)</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
|
||||
<span class="n">key</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_key</span><span class="p">,</span>
|
||||
<span class="n">default</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_default</span><span class="p">,</span>
|
||||
<span class="n">category</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_category</span><span class="p">,</span>
|
||||
<span class="n">strattr</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_strattr</span><span class="p">,</span>
|
||||
<span class="n">raise_exception</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_autocreate</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_autocreate</span><span class="p">:</span>
|
||||
|
|
@ -273,8 +275,7 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="fm">__set__</span><span class="p">(</span><span class="n">instance</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_default</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">raise</span>
|
||||
<span class="k">finally</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">value</span>
|
||||
<span class="k">return</span> <span class="n">value</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__set__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">instance</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
@ -284,7 +285,7 @@
|
|||
<span class="p">(</span>
|
||||
<span class="nb">getattr</span><span class="p">(</span><span class="n">instance</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">attrhandler_name</span><span class="p">)</span><span class="o">.</span><span class="n">add</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_key</span><span class="p">,</span>
|
||||
<span class="n">value</span><span class="p">,</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">at_set</span><span class="p">(</span><span class="n">value</span><span class="p">),</span>
|
||||
<span class="n">category</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_category</span><span class="p">,</span>
|
||||
<span class="n">lockstring</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_lockstring</span><span class="p">,</span>
|
||||
<span class="n">strattr</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_strattr</span><span class="p">,</span>
|
||||
|
|
@ -293,10 +294,43 @@
|
|||
|
||||
<span class="k">def</span> <span class="fm">__delete__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">instance</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Called when running `del` on the field. Will remove/clear the Attribute.</span>
|
||||
<span class="sd"> Called when running `del` on the property. Will remove/clear the Attribute. Note that</span>
|
||||
<span class="sd"> the Attribute will be recreated next retrieval unless the AttributeProperty is also</span>
|
||||
<span class="sd"> removed in code!</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="p">(</span><span class="nb">getattr</span><span class="p">(</span><span class="n">instance</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">attrhandler_name</span><span class="p">)</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_key</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_category</span><span class="p">))</span></div>
|
||||
<span class="nb">getattr</span><span class="p">(</span><span class="n">instance</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">attrhandler_name</span><span class="p">)</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_key</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_category</span><span class="p">)</span>
|
||||
|
||||
<div class="viewcode-block" id="AttributeProperty.at_set"><a class="viewcode-back" href="../../../api/evennia.typeclasses.attributes.html#evennia.typeclasses.attributes.AttributeProperty.at_set">[docs]</a> <span class="k">def</span> <span class="nf">at_set</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> The value to set is passed through the method. It can be used to customize/validate</span>
|
||||
<span class="sd"> the input in a custom child class.</span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> value (any): The value about to the stored in this Attribute.</span>
|
||||
|
||||
<span class="sd"> Returns:</span>
|
||||
<span class="sd"> any: The value to store.</span>
|
||||
|
||||
<span class="sd"> Raises:</span>
|
||||
<span class="sd"> AttributeError: If the value is invalid to store.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="n">value</span></div>
|
||||
|
||||
<div class="viewcode-block" id="AttributeProperty.at_get"><a class="viewcode-back" href="../../../api/evennia.typeclasses.attributes.html#evennia.typeclasses.attributes.AttributeProperty.at_get">[docs]</a> <span class="k">def</span> <span class="nf">at_get</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> The value returned from the Attribute is passed through this method. It can be used</span>
|
||||
<span class="sd"> to react to the retrieval or modify the result in some way.</span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> value (any): Value returned from the Attribute.</span>
|
||||
|
||||
<span class="sd"> Returns:</span>
|
||||
<span class="sd"> any: The value to return to the caller.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="n">value</span></div></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="NAttributeProperty"><a class="viewcode-back" href="../../../api/evennia.typeclasses.attributes.html#evennia.typeclasses.attributes.NAttributeProperty">[docs]</a><span class="k">class</span> <span class="nc">NAttributeProperty</span><span class="p">(</span><span class="n">AttributeProperty</span><span class="p">):</span>
|
||||
|
|
|
|||
|
|
@ -328,7 +328,7 @@
|
|||
<span class="n">categories</span> <span class="o">=</span> <span class="n">make_iter</span><span class="p">(</span><span class="n">category</span><span class="p">)</span> <span class="k">if</span> <span class="n">category</span> <span class="k">else</span> <span class="p">[]</span>
|
||||
<span class="n">n_keys</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">keys</span><span class="p">)</span>
|
||||
<span class="n">n_categories</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">categories</span><span class="p">)</span>
|
||||
<span class="n">unique_categories</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">categories</span><span class="p">))</span>
|
||||
<span class="n">unique_categories</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">categories</span><span class="p">)</span>
|
||||
<span class="n">n_unique_categories</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">unique_categories</span><span class="p">)</span>
|
||||
|
||||
<span class="n">dbmodel</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">__dbclass__</span><span class="o">.</span><span class="vm">__name__</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
|
||||
|
|
|
|||
|
|
@ -81,11 +81,12 @@
|
|||
<span class="kn">from</span> <span class="nn">evennia.typeclasses.attributes</span> <span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="n">Attribute</span><span class="p">,</span>
|
||||
<span class="n">AttributeHandler</span><span class="p">,</span>
|
||||
<span class="n">AttributeProperty</span><span class="p">,</span>
|
||||
<span class="n">ModelAttributeBackend</span><span class="p">,</span>
|
||||
<span class="n">InMemoryAttributeBackend</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.typeclasses.attributes</span> <span class="kn">import</span> <span class="n">DbHolder</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.typeclasses.tags</span> <span class="kn">import</span> <span class="n">Tag</span><span class="p">,</span> <span class="n">TagHandler</span><span class="p">,</span> <span class="n">AliasHandler</span><span class="p">,</span> <span class="n">PermissionHandler</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.typeclasses.tags</span> <span class="kn">import</span> <span class="n">Tag</span><span class="p">,</span> <span class="n">TagHandler</span><span class="p">,</span> <span class="n">AliasHandler</span><span class="p">,</span> <span class="n">PermissionHandler</span><span class="p">,</span> <span class="n">TagProperty</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.idmapper.models</span> <span class="kn">import</span> <span class="n">SharedMemoryModel</span><span class="p">,</span> <span class="n">SharedMemoryModelBase</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.server.signals</span> <span class="kn">import</span> <span class="n">SIGNAL_TYPED_OBJECT_POST_RENAME</span>
|
||||
|
|
@ -367,6 +368,18 @@
|
|||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">set_class_from_typeclass</span><span class="p">(</span><span class="n">typeclass_path</span><span class="o">=</span><span class="n">typeclass_path</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="TypedObject.init_evennia_properties"><a class="viewcode-back" href="../../../api/evennia.typeclasses.models.html#evennia.typeclasses.models.TypedObject.init_evennia_properties">[docs]</a> <span class="k">def</span> <span class="nf">init_evennia_properties</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Called by creation methods; makes sure to initialize Attribute/TagProperties</span>
|
||||
<span class="sd"> by fetching them once.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">for</span> <span class="n">propkey</span><span class="p">,</span> <span class="n">prop</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__dict__</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">prop</span><span class="p">,</span> <span class="p">(</span><span class="n">AttributeProperty</span><span class="p">,</span> <span class="n">TagProperty</span><span class="p">)):</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">propkey</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span>
|
||||
<span class="n">log_trace</span><span class="p">()</span></div>
|
||||
|
||||
<span class="c1"># initialize all handlers in a lazy fashion</span>
|
||||
<div class="viewcode-block" id="TypedObject.attributes"><a class="viewcode-back" href="../../../api/evennia.typeclasses.models.html#evennia.typeclasses.models.TypedObject.attributes">[docs]</a> <span class="nd">@lazy_property</span>
|
||||
<span class="k">def</span> <span class="nf">attributes</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
|
|
|
|||
|
|
@ -139,6 +139,72 @@
|
|||
<span class="c1">#</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="TagProperty"><a class="viewcode-back" href="../../../api/evennia.typeclasses.tags.html#evennia.typeclasses.tags.TagProperty">[docs]</a><span class="k">class</span> <span class="nc">TagProperty</span><span class="p">:</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Tag property descriptor. Allows for setting tags on an object as Django-like 'fields'</span>
|
||||
<span class="sd"> on the class level. Since Tags are almost always used for querying, Tags are always</span>
|
||||
<span class="sd"> created/assigned along with the object. Make sure the property/tagname does not collide</span>
|
||||
<span class="sd"> with an existing method/property on the class. If it does, you must use tags.add()</span>
|
||||
<span class="sd"> instead.</span>
|
||||
|
||||
<span class="sd"> Example:</span>
|
||||
<span class="sd"> ::</span>
|
||||
|
||||
<span class="sd"> class Character(DefaultCharacter):</span>
|
||||
<span class="sd"> mytag = TagProperty() # category=None</span>
|
||||
<span class="sd"> mytag2 = TagProperty(category="tagcategory")</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">taghandler_name</span> <span class="o">=</span> <span class="s2">"tags"</span>
|
||||
|
||||
<div class="viewcode-block" id="TagProperty.__init__"><a class="viewcode-back" href="../../../api/evennia.typeclasses.tags.html#evennia.typeclasses.tags.TagProperty.__init__">[docs]</a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_category</span> <span class="o">=</span> <span class="n">category</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_data</span> <span class="o">=</span> <span class="n">data</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_key</span> <span class="o">=</span> <span class="s2">""</span></div>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__set_name__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="bp">cls</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Called when descriptor is first assigned to the class (not the instance!).</span>
|
||||
<span class="sd"> It is called with the name of the field.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_key</span> <span class="o">=</span> <span class="n">name</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__get__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">instance</span><span class="p">,</span> <span class="n">owner</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Called when accessing the tag as a property on the instance.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">instance</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">taghandler_name</span><span class="p">)</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
|
||||
<span class="n">key</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_key</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_category</span><span class="p">,</span> <span class="n">return_list</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">raise_exception</span><span class="o">=</span><span class="kc">True</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="fm">__set__</span><span class="p">(</span><span class="n">instance</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_category</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__set__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">instance</span><span class="p">,</span> <span class="n">category</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Assign a new category to the tag. It's not possible to set 'data' this way.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_category</span> <span class="o">=</span> <span class="n">category</span>
|
||||
<span class="p">(</span>
|
||||
<span class="nb">getattr</span><span class="p">(</span><span class="n">instance</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">taghandler_name</span><span class="p">)</span><span class="o">.</span><span class="n">add</span><span class="p">(</span>
|
||||
<span class="n">key</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_key</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_category</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_data</span>
|
||||
<span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__delete__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">instance</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Called when running `del` on the property. Will disconnect the object from</span>
|
||||
<span class="sd"> the Tag. Note that the tag will be readded on next fetch unless the</span>
|
||||
<span class="sd"> TagProperty is also removed in code!</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="nb">getattr</span><span class="p">(</span><span class="n">instance</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">taghandler_name</span><span class="p">)</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_key</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_category</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="TagHandler"><a class="viewcode-back" href="../../../api/evennia.typeclasses.tags.html#evennia.typeclasses.tags.TagHandler">[docs]</a><span class="k">class</span> <span class="nc">TagHandler</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Generic tag-handler. Accessed via TypedObject.tags.</span>
|
||||
|
|
@ -403,7 +469,15 @@
|
|||
|
||||
<span class="k">return</span> <span class="n">ret</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">ret</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span> <span class="k">else</span> <span class="n">ret</span></div>
|
||||
|
||||
<div class="viewcode-block" id="TagHandler.get"><a class="viewcode-back" href="../../../api/evennia.typeclasses.tags.html#evennia.typeclasses.tags.TagHandler.get">[docs]</a> <span class="k">def</span> <span class="nf">get</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">return_tagobj</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">return_list</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="TagHandler.get"><a class="viewcode-back" href="../../../api/evennia.typeclasses.tags.html#evennia.typeclasses.tags.TagHandler.get">[docs]</a> <span class="k">def</span> <span class="nf">get</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="p">,</span>
|
||||
<span class="n">key</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">category</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">return_tagobj</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
||||
<span class="n">return_list</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
||||
<span class="n">raise_exception</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
||||
<span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Get the tag for the given key, category or combination of the two.</span>
|
||||
|
||||
|
|
@ -418,6 +492,8 @@
|
|||
<span class="sd"> instead of a string representation of the Tag.</span>
|
||||
<span class="sd"> return_list (bool, optional): Always return a list, regardless</span>
|
||||
<span class="sd"> of number of matches.</span>
|
||||
<span class="sd"> raise_exception (bool, optional): Raise AttributeError if no matches</span>
|
||||
<span class="sd"> are found.</span>
|
||||
|
||||
<span class="sd"> Returns:</span>
|
||||
<span class="sd"> tags (list): The matches, either string</span>
|
||||
|
|
@ -425,6 +501,9 @@
|
|||
<span class="sd"> depending on `return_tagobj`. If 'default' is set, this</span>
|
||||
<span class="sd"> will be a list with the default value as its only element.</span>
|
||||
|
||||
<span class="sd"> Raises:</span>
|
||||
<span class="sd"> AttributeError: If finding no matches and `raise_exception` is True.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">ret</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">keystr</span> <span class="ow">in</span> <span class="n">make_iter</span><span class="p">(</span><span class="n">key</span><span class="p">):</span>
|
||||
|
|
@ -435,9 +514,14 @@
|
|||
<span class="k">for</span> <span class="n">tag</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_getcache</span><span class="p">(</span><span class="n">keystr</span><span class="p">,</span> <span class="n">category</span><span class="p">)</span>
|
||||
<span class="p">]</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">return_list</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">ret</span> <span class="k">if</span> <span class="n">ret</span> <span class="k">else</span> <span class="p">[</span><span class="n">default</span><span class="p">]</span> <span class="k">if</span> <span class="n">default</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="p">[]</span>
|
||||
<span class="k">return</span> <span class="n">ret</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">ret</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span> <span class="k">else</span> <span class="p">(</span><span class="n">ret</span> <span class="k">if</span> <span class="n">ret</span> <span class="k">else</span> <span class="n">default</span><span class="p">)</span></div>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">ret</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">raise_exception</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"No tags found matching input </span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">category</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">return_list</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="p">[</span><span class="n">default</span><span class="p">]</span> <span class="k">if</span> <span class="n">default</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="p">[]</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">default</span>
|
||||
<span class="k">return</span> <span class="n">ret</span> <span class="k">if</span> <span class="n">return_list</span> <span class="k">else</span> <span class="p">(</span><span class="n">ret</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">ret</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span> <span class="k">else</span> <span class="n">ret</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="TagHandler.remove"><a class="viewcode-back" href="../../../api/evennia.typeclasses.tags.html#evennia.typeclasses.tags.TagHandler.remove">[docs]</a> <span class="k">def</span> <span class="nf">remove</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
@ -563,6 +647,22 @@
|
|||
<span class="k">return</span> <span class="s2">","</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">all</span><span class="p">())</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="AliasProperty"><a class="viewcode-back" href="../../../api/evennia.typeclasses.tags.html#evennia.typeclasses.tags.AliasProperty">[docs]</a><span class="k">class</span> <span class="nc">AliasProperty</span><span class="p">(</span><span class="n">TagProperty</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Allows for setting aliases like Django fields:</span>
|
||||
<span class="sd"> ::</span>
|
||||
|
||||
<span class="sd"> class Character(DefaultCharacter):</span>
|
||||
<span class="sd"> # note that every character will get the alias bob. Make sure</span>
|
||||
<span class="sd"> # the alias property does not collide with an existing method</span>
|
||||
<span class="sd"> # or property on the class.</span>
|
||||
<span class="sd"> bob = AliasProperty()</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">taghandler_name</span> <span class="o">=</span> <span class="s2">"aliases"</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="AliasHandler"><a class="viewcode-back" href="../../../api/evennia.typeclasses.tags.html#evennia.typeclasses.tags.AliasHandler">[docs]</a><span class="k">class</span> <span class="nc">AliasHandler</span><span class="p">(</span><span class="n">TagHandler</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> A handler for the Alias Tag type.</span>
|
||||
|
|
@ -572,6 +672,21 @@
|
|||
<span class="n">_tagtype</span> <span class="o">=</span> <span class="s2">"alias"</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="PermissionProperty"><a class="viewcode-back" href="../../../api/evennia.typeclasses.tags.html#evennia.typeclasses.tags.PermissionProperty">[docs]</a><span class="k">class</span> <span class="nc">PermissionProperty</span><span class="p">(</span><span class="n">TagProperty</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Allows for setting permissions like Django fields:</span>
|
||||
<span class="sd"> ::</span>
|
||||
|
||||
<span class="sd"> class Character(DefaultCharacter):</span>
|
||||
<span class="sd"> # note that every character will get this permission! Make</span>
|
||||
<span class="sd"> # sure it doesn't collide with an existing method or property.</span>
|
||||
<span class="sd"> myperm = PermissionProperty()</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">taghandler_name</span> <span class="o">=</span> <span class="s2">"permissions"</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="PermissionHandler"><a class="viewcode-back" href="../../../api/evennia.typeclasses.tags.html#evennia.typeclasses.tags.PermissionHandler">[docs]</a><span class="k">class</span> <span class="nc">PermissionHandler</span><span class="p">(</span><span class="n">TagHandler</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> A handler for the Permission Tag type.</span>
|
||||
|
|
|
|||
|
|
@ -54,6 +54,7 @@
|
|||
|
||||
|
||||
<span class="kn">from</span> <span class="nn">pickle</span> <span class="kn">import</span> <span class="n">dumps</span>
|
||||
<span class="kn">from</span> <span class="nn">django.db.utils</span> <span class="kn">import</span> <span class="n">OperationalError</span><span class="p">,</span> <span class="n">ProgrammingError</span>
|
||||
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="kn">import</span> <span class="n">settings</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="kn">import</span> <span class="n">class_from_module</span><span class="p">,</span> <span class="n">callables_from_module</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="kn">import</span> <span class="n">logger</span>
|
||||
|
|
@ -209,7 +210,6 @@
|
|||
|
||||
<span class="c1"># store a hash representation of the setup</span>
|
||||
<span class="n">script</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s2">"_global_script_settings"</span><span class="p">,</span> <span class="n">compare_hash</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="s2">"settings_hash"</span><span class="p">)</span>
|
||||
<span class="n">script</span><span class="o">.</span><span class="n">start</span><span class="p">()</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">script</span>
|
||||
|
||||
|
|
@ -225,9 +225,16 @@
|
|||
<span class="c1"># populate self.typeclass_storage</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">load_data</span><span class="p">()</span>
|
||||
|
||||
<span class="c1"># start registered scripts</span>
|
||||
<span class="c1"># make sure settings-defined scripts are loaded</span>
|
||||
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">loaded_data</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_load_script</span><span class="p">(</span><span class="n">key</span><span class="p">)</span></div>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_load_script</span><span class="p">(</span><span class="n">key</span><span class="p">)</span>
|
||||
<span class="c1"># start all global scripts</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="k">for</span> <span class="n">script</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_scripts</span><span class="p">():</span>
|
||||
<span class="n">script</span><span class="o">.</span><span class="n">start</span><span class="p">()</span>
|
||||
<span class="k">except</span> <span class="p">(</span><span class="n">OperationalError</span><span class="p">,</span> <span class="n">ProgrammingError</span><span class="p">):</span>
|
||||
<span class="c1"># this can happen if db is not loaded yet (such as when building docs)</span>
|
||||
<span class="k">pass</span></div>
|
||||
|
||||
<div class="viewcode-block" id="GlobalScriptContainer.load_data"><a class="viewcode-back" href="../../../api/evennia.utils.containers.html#evennia.utils.containers.GlobalScriptContainer.load_data">[docs]</a> <span class="k">def</span> <span class="nf">load_data</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@
|
|||
<span class="kn">from</span> <span class="nn">collections.abc</span> <span class="kn">import</span> <span class="n">MutableSequence</span><span class="p">,</span> <span class="n">MutableSet</span><span class="p">,</span> <span class="n">MutableMapping</span>
|
||||
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="kn">from</span> <span class="nn">pickle</span> <span class="kn">import</span> <span class="n">dumps</span><span class="p">,</span> <span class="n">loads</span>
|
||||
<span class="kn">from</span> <span class="nn">pickle</span> <span class="kn">import</span> <span class="n">dumps</span><span class="p">,</span> <span class="n">loads</span><span class="p">,</span> <span class="n">UnpicklingError</span>
|
||||
<span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
|
||||
<span class="kn">from</span> <span class="nn">pickle</span> <span class="kn">import</span> <span class="n">dumps</span><span class="p">,</span> <span class="n">loads</span>
|
||||
<span class="kn">from</span> <span class="nn">django.core.exceptions</span> <span class="kn">import</span> <span class="n">ObjectDoesNotExist</span>
|
||||
|
|
@ -281,6 +281,9 @@
|
|||
<span class="k">def</span> <span class="fm">__gt__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_data</span> <span class="o">></span> <span class="n">other</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__or__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_data</span> <span class="o">|</span> <span class="n">other</span>
|
||||
|
||||
<span class="nd">@_save</span>
|
||||
<span class="k">def</span> <span class="fm">__setitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_data</span><span class="o">.</span><span class="fm">__setitem__</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_convert_mutables</span><span class="p">(</span><span class="n">value</span><span class="p">))</span>
|
||||
|
|
@ -492,7 +495,9 @@
|
|||
<span class="k">elif</span> <span class="n">tname</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"_SaverOrderedDict"</span><span class="p">,</span> <span class="s2">"OrderedDict"</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">OrderedDict</span><span class="p">([(</span><span class="n">_iter</span><span class="p">(</span><span class="n">key</span><span class="p">),</span> <span class="n">_iter</span><span class="p">(</span><span class="n">val</span><span class="p">))</span> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">val</span> <span class="ow">in</span> <span class="n">obj</span><span class="o">.</span><span class="n">items</span><span class="p">()])</span>
|
||||
<span class="k">elif</span> <span class="n">tname</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"_SaverDefaultDict"</span><span class="p">,</span> <span class="s2">"defaultdict"</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">defaultdict</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">default_factory</span><span class="p">,</span> <span class="p">{</span><span class="n">_iter</span><span class="p">(</span><span class="n">key</span><span class="p">):</span> <span class="n">_iter</span><span class="p">(</span><span class="n">val</span><span class="p">)</span> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">val</span> <span class="ow">in</span> <span class="n">obj</span><span class="o">.</span><span class="n">items</span><span class="p">()})</span>
|
||||
<span class="k">return</span> <span class="n">defaultdict</span><span class="p">(</span>
|
||||
<span class="n">obj</span><span class="o">.</span><span class="n">default_factory</span><span class="p">,</span> <span class="p">{</span><span class="n">_iter</span><span class="p">(</span><span class="n">key</span><span class="p">):</span> <span class="n">_iter</span><span class="p">(</span><span class="n">val</span><span class="p">)</span> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">val</span> <span class="ow">in</span> <span class="n">obj</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">tname</span> <span class="ow">in</span> <span class="n">_DESERIALIZE_MAPPING</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">_DESERIALIZE_MAPPING</span><span class="p">[</span><span class="n">tname</span><span class="p">](</span><span class="n">_iter</span><span class="p">(</span><span class="n">val</span><span class="p">)</span> <span class="k">for</span> <span class="n">val</span> <span class="ow">in</span> <span class="n">obj</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">is_iter</span><span class="p">(</span><span class="n">obj</span><span class="p">):</span>
|
||||
|
|
@ -644,7 +649,9 @@
|
|||
|
||||
<span class="k">def</span> <span class="nf">process_item</span><span class="p">(</span><span class="n">item</span><span class="p">):</span>
|
||||
<span class="sd">"""Recursive processor and identification of data"""</span>
|
||||
|
||||
<span class="n">dtype</span> <span class="o">=</span> <span class="nb">type</span><span class="p">(</span><span class="n">item</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">dtype</span> <span class="ow">in</span> <span class="p">(</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">,</span> <span class="nb">bool</span><span class="p">,</span> <span class="nb">bytes</span><span class="p">,</span> <span class="n">SafeString</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">item</span>
|
||||
<span class="k">elif</span> <span class="n">dtype</span> <span class="o">==</span> <span class="nb">tuple</span><span class="p">:</span>
|
||||
|
|
@ -654,7 +661,10 @@
|
|||
<span class="k">elif</span> <span class="n">dtype</span> <span class="ow">in</span> <span class="p">(</span><span class="nb">dict</span><span class="p">,</span> <span class="n">_SaverDict</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="nb">dict</span><span class="p">((</span><span class="n">process_item</span><span class="p">(</span><span class="n">key</span><span class="p">),</span> <span class="n">process_item</span><span class="p">(</span><span class="n">val</span><span class="p">))</span> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">val</span> <span class="ow">in</span> <span class="n">item</span><span class="o">.</span><span class="n">items</span><span class="p">())</span>
|
||||
<span class="k">elif</span> <span class="n">dtype</span> <span class="ow">in</span> <span class="p">(</span><span class="n">defaultdict</span><span class="p">,</span> <span class="n">_SaverDefaultDict</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">defaultdict</span><span class="p">(</span><span class="n">item</span><span class="o">.</span><span class="n">default_factory</span><span class="p">,</span> <span class="p">((</span><span class="n">process_item</span><span class="p">(</span><span class="n">key</span><span class="p">),</span> <span class="n">process_item</span><span class="p">(</span><span class="n">val</span><span class="p">))</span> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">val</span> <span class="ow">in</span> <span class="n">item</span><span class="o">.</span><span class="n">items</span><span class="p">()))</span>
|
||||
<span class="k">return</span> <span class="n">defaultdict</span><span class="p">(</span>
|
||||
<span class="n">item</span><span class="o">.</span><span class="n">default_factory</span><span class="p">,</span>
|
||||
<span class="p">((</span><span class="n">process_item</span><span class="p">(</span><span class="n">key</span><span class="p">),</span> <span class="n">process_item</span><span class="p">(</span><span class="n">val</span><span class="p">))</span> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">val</span> <span class="ow">in</span> <span class="n">item</span><span class="o">.</span><span class="n">items</span><span class="p">()),</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">dtype</span> <span class="ow">in</span> <span class="p">(</span><span class="nb">set</span><span class="p">,</span> <span class="n">_SaverSet</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="nb">set</span><span class="p">(</span><span class="n">process_item</span><span class="p">(</span><span class="n">val</span><span class="p">)</span> <span class="k">for</span> <span class="n">val</span> <span class="ow">in</span> <span class="n">item</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">dtype</span> <span class="ow">in</span> <span class="p">(</span><span class="n">OrderedDict</span><span class="p">,</span> <span class="n">_SaverOrderedDict</span><span class="p">):</span>
|
||||
|
|
@ -662,7 +672,20 @@
|
|||
<span class="k">elif</span> <span class="n">dtype</span> <span class="ow">in</span> <span class="p">(</span><span class="n">deque</span><span class="p">,</span> <span class="n">_SaverDeque</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">deque</span><span class="p">(</span><span class="n">process_item</span><span class="p">(</span><span class="n">val</span><span class="p">)</span> <span class="k">for</span> <span class="n">val</span> <span class="ow">in</span> <span class="n">item</span><span class="p">)</span>
|
||||
|
||||
<span class="k">elif</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="s2">"__iter__"</span><span class="p">):</span>
|
||||
<span class="c1"># not one of the base types</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="s2">"__serialize_dbobjs__"</span><span class="p">):</span>
|
||||
<span class="c1"># Allows custom serialization of any dbobjects embedded in</span>
|
||||
<span class="c1"># the item that Evennia will otherwise not find (these would</span>
|
||||
<span class="c1"># otherwise lead to an error). Use the dbserialize helper from</span>
|
||||
<span class="c1"># this method.</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">item</span><span class="o">.</span><span class="n">__serialize_dbobjs__</span><span class="p">()</span>
|
||||
<span class="k">except</span> <span class="ne">TypeError</span> <span class="k">as</span> <span class="n">err</span><span class="p">:</span>
|
||||
<span class="c1"># we catch typerrors so we can handle both classes (requiring</span>
|
||||
<span class="c1"># classmethods) and instances</span>
|
||||
<span class="k">pass</span>
|
||||
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="s2">"__iter__"</span><span class="p">):</span>
|
||||
<span class="c1"># we try to conserve the iterable class, if not convert to list</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">item</span><span class="o">.</span><span class="vm">__class__</span><span class="p">([</span><span class="n">process_item</span><span class="p">(</span><span class="n">val</span><span class="p">)</span> <span class="k">for</span> <span class="n">val</span> <span class="ow">in</span> <span class="n">item</span><span class="p">])</span>
|
||||
|
|
@ -720,7 +743,10 @@
|
|||
<span class="k">elif</span> <span class="n">dtype</span> <span class="o">==</span> <span class="nb">dict</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="nb">dict</span><span class="p">((</span><span class="n">process_item</span><span class="p">(</span><span class="n">key</span><span class="p">),</span> <span class="n">process_item</span><span class="p">(</span><span class="n">val</span><span class="p">))</span> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">val</span> <span class="ow">in</span> <span class="n">item</span><span class="o">.</span><span class="n">items</span><span class="p">())</span>
|
||||
<span class="k">elif</span> <span class="n">dtype</span> <span class="o">==</span> <span class="n">defaultdict</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">defaultdict</span><span class="p">(</span><span class="n">item</span><span class="o">.</span><span class="n">default_factory</span><span class="p">,</span> <span class="p">((</span><span class="n">process_item</span><span class="p">(</span><span class="n">key</span><span class="p">),</span> <span class="n">process_item</span><span class="p">(</span><span class="n">val</span><span class="p">))</span> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">val</span> <span class="ow">in</span> <span class="n">item</span><span class="o">.</span><span class="n">items</span><span class="p">()))</span>
|
||||
<span class="k">return</span> <span class="n">defaultdict</span><span class="p">(</span>
|
||||
<span class="n">item</span><span class="o">.</span><span class="n">default_factory</span><span class="p">,</span>
|
||||
<span class="p">((</span><span class="n">process_item</span><span class="p">(</span><span class="n">key</span><span class="p">),</span> <span class="n">process_item</span><span class="p">(</span><span class="n">val</span><span class="p">))</span> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">val</span> <span class="ow">in</span> <span class="n">item</span><span class="o">.</span><span class="n">items</span><span class="p">()),</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">dtype</span> <span class="o">==</span> <span class="nb">set</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="nb">set</span><span class="p">(</span><span class="n">process_item</span><span class="p">(</span><span class="n">val</span><span class="p">)</span> <span class="k">for</span> <span class="n">val</span> <span class="ow">in</span> <span class="n">item</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">dtype</span> <span class="o">==</span> <span class="n">OrderedDict</span><span class="p">:</span>
|
||||
|
|
@ -734,6 +760,22 @@
|
|||
<span class="k">return</span> <span class="n">item</span><span class="o">.</span><span class="vm">__class__</span><span class="p">(</span><span class="n">process_item</span><span class="p">(</span><span class="n">val</span><span class="p">)</span> <span class="k">for</span> <span class="n">val</span> <span class="ow">in</span> <span class="n">item</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="p">(</span><span class="ne">AttributeError</span><span class="p">,</span> <span class="ne">TypeError</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="p">[</span><span class="n">process_item</span><span class="p">(</span><span class="n">val</span><span class="p">)</span> <span class="k">for</span> <span class="n">val</span> <span class="ow">in</span> <span class="n">item</span><span class="p">]</span>
|
||||
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="s2">"__deserialize_dbobjs__"</span><span class="p">):</span>
|
||||
<span class="c1"># this allows the object to custom-deserialize any embedded dbobjs</span>
|
||||
<span class="c1"># that we previously serialized with __serialize_dbobjs__.</span>
|
||||
<span class="c1"># use the dbunserialize helper in this module.</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">item</span><span class="o">.</span><span class="n">__deserialize_dbobjs__</span><span class="p">()</span>
|
||||
<span class="k">except</span> <span class="p">(</span><span class="ne">TypeError</span><span class="p">,</span> <span class="n">UnpicklingError</span><span class="p">):</span>
|
||||
<span class="c1"># handle recoveries both of classes (requiring classmethods</span>
|
||||
<span class="c1"># or instances. Unpickling errors can happen when re-loading the</span>
|
||||
<span class="c1"># data from cache (because the hidden entity was already</span>
|
||||
<span class="c1"># deserialized and stored back on the object, unpickling it</span>
|
||||
<span class="c1"># again fails). TODO: Maybe one could avoid this retry in a</span>
|
||||
<span class="c1"># more graceful way?</span>
|
||||
<span class="k">pass</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">item</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">process_tree</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">parent</span><span class="p">):</span>
|
||||
|
|
|
|||
|
|
@ -316,12 +316,13 @@
|
|||
|
||||
<span class="kn">from</span> <span class="nn">ast</span> <span class="kn">import</span> <span class="n">literal_eval</span>
|
||||
<span class="kn">from</span> <span class="nn">fnmatch</span> <span class="kn">import</span> <span class="n">fnmatch</span>
|
||||
<span class="kn">from</span> <span class="nn">math</span> <span class="kn">import</span> <span class="n">ceil</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">inspect</span> <span class="kn">import</span> <span class="n">isfunction</span><span class="p">,</span> <span class="n">getargspec</span>
|
||||
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="kn">import</span> <span class="n">settings</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia</span> <span class="kn">import</span> <span class="n">Command</span><span class="p">,</span> <span class="n">CmdSet</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="kn">import</span> <span class="n">logger</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.evtable</span> <span class="kn">import</span> <span class="n">EvTable</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.evtable</span> <span class="kn">import</span> <span class="n">EvTable</span><span class="p">,</span> <span class="n">EvColumn</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.ansi</span> <span class="kn">import</span> <span class="n">strip_ansi</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="kn">import</span> <span class="n">mod_import</span><span class="p">,</span> <span class="n">make_iter</span><span class="p">,</span> <span class="n">pad</span><span class="p">,</span> <span class="n">to_str</span><span class="p">,</span> <span class="n">m_len</span><span class="p">,</span> <span class="n">is_iter</span><span class="p">,</span> <span class="n">dedent</span><span class="p">,</span> <span class="n">crop</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands</span> <span class="kn">import</span> <span class="n">cmdhandler</span>
|
||||
|
|
@ -1252,7 +1253,6 @@
|
|||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> optionlist (list): List of (key, description) tuples for every</span>
|
||||
<span class="sd"> option related to this node.</span>
|
||||
<span class="sd"> caller (Object, Account or None, optional): The caller of the node.</span>
|
||||
|
||||
<span class="sd"> Returns:</span>
|
||||
<span class="sd"> options (str): The formatted option display.</span>
|
||||
|
|
@ -1271,7 +1271,7 @@
|
|||
<span class="n">table</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">desc</span> <span class="ow">in</span> <span class="n">optionlist</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">key</span> <span class="ow">or</span> <span class="n">desc</span><span class="p">:</span>
|
||||
<span class="n">desc_string</span> <span class="o">=</span> <span class="s2">": </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">desc</span> <span class="k">if</span> <span class="n">desc</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
<span class="n">desc_string</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">": </span><span class="si">{</span><span class="n">desc</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">desc</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
<span class="n">table_width_max</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span>
|
||||
<span class="n">table_width_max</span><span class="p">,</span>
|
||||
<span class="nb">max</span><span class="p">(</span><span class="n">m_len</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">key</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">))</span>
|
||||
|
|
@ -1281,42 +1281,31 @@
|
|||
<span class="n">raw_key</span> <span class="o">=</span> <span class="n">strip_ansi</span><span class="p">(</span><span class="n">key</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">raw_key</span> <span class="o">!=</span> <span class="n">key</span><span class="p">:</span>
|
||||
<span class="c1"># already decorations in key definition</span>
|
||||
<span class="n">table</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">" |lc</span><span class="si">%s</span><span class="s2">|lt</span><span class="si">%s</span><span class="s2">|le</span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">raw_key</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">desc_string</span><span class="p">))</span>
|
||||
<span class="n">table</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">" |lc</span><span class="si">{</span><span class="n">raw_key</span><span class="si">}</span><span class="s2">|lt</span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s2">|le</span><span class="si">{</span><span class="n">desc_string</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># add a default white color to key</span>
|
||||
<span class="n">table</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">" |lc</span><span class="si">%s</span><span class="s2">|lt|w</span><span class="si">%s</span><span class="s2">|n|le</span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">raw_key</span><span class="p">,</span> <span class="n">raw_key</span><span class="p">,</span> <span class="n">desc_string</span><span class="p">))</span>
|
||||
<span class="n">ncols</span> <span class="o">=</span> <span class="n">_MAX_TEXT_WIDTH</span> <span class="o">//</span> <span class="n">table_width_max</span> <span class="c1"># number of ncols</span>
|
||||
<span class="n">table</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">" |lc</span><span class="si">{</span><span class="n">raw_key</span><span class="si">}</span><span class="s2">|lt|w</span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s2">|n|le</span><span class="si">{</span><span class="n">desc_string</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="n">ncols</span> <span class="o">=</span> <span class="n">_MAX_TEXT_WIDTH</span> <span class="o">//</span> <span class="n">table_width_max</span> <span class="c1"># number of columns</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">ncols</span> <span class="o"><</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="c1"># no visible option at all</span>
|
||||
<span class="c1"># no visible options at all</span>
|
||||
<span class="k">return</span> <span class="s2">""</span>
|
||||
|
||||
<span class="n">ncols</span> <span class="o">=</span> <span class="n">ncols</span> <span class="o">+</span> <span class="mi">1</span> <span class="k">if</span> <span class="n">ncols</span> <span class="o">==</span> <span class="mi">0</span> <span class="k">else</span> <span class="n">ncols</span>
|
||||
<span class="c1"># get the amount of rows needed (start with 4 rows)</span>
|
||||
<span class="n">nrows</span> <span class="o">=</span> <span class="mi">4</span>
|
||||
<span class="k">while</span> <span class="n">nrows</span> <span class="o">*</span> <span class="n">ncols</span> <span class="o"><</span> <span class="n">nlist</span><span class="p">:</span>
|
||||
<span class="n">nrows</span> <span class="o">+=</span> <span class="mi">1</span>
|
||||
<span class="n">ncols</span> <span class="o">=</span> <span class="n">nlist</span> <span class="o">//</span> <span class="n">nrows</span> <span class="c1"># number of full columns</span>
|
||||
<span class="n">nlastcol</span> <span class="o">=</span> <span class="n">nlist</span> <span class="o">%</span> <span class="n">nrows</span> <span class="c1"># number of elements in last column</span>
|
||||
<span class="n">ncols</span> <span class="o">=</span> <span class="mi">1</span> <span class="k">if</span> <span class="n">ncols</span> <span class="o">==</span> <span class="mi">0</span> <span class="k">else</span> <span class="n">ncols</span>
|
||||
|
||||
<span class="c1"># get the final column count</span>
|
||||
<span class="n">ncols</span> <span class="o">=</span> <span class="n">ncols</span> <span class="o">+</span> <span class="mi">1</span> <span class="k">if</span> <span class="n">nlastcol</span> <span class="o">></span> <span class="mi">0</span> <span class="k">else</span> <span class="n">ncols</span>
|
||||
<span class="k">if</span> <span class="n">ncols</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="c1"># only extend if longer than one column</span>
|
||||
<span class="n">table</span><span class="o">.</span><span class="n">extend</span><span class="p">([</span><span class="s2">" "</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="n">nrows</span> <span class="o">-</span> <span class="n">nlastcol</span><span class="p">)])</span>
|
||||
<span class="c1"># minimum number of rows in a column</span>
|
||||
<span class="n">min_rows</span> <span class="o">=</span> <span class="mi">4</span>
|
||||
|
||||
<span class="c1"># build the actual table grid</span>
|
||||
<span class="n">table</span> <span class="o">=</span> <span class="p">[</span><span class="n">table</span><span class="p">[</span><span class="n">icol</span> <span class="o">*</span> <span class="n">nrows</span> <span class="p">:</span> <span class="p">(</span><span class="n">icol</span> <span class="o">*</span> <span class="n">nrows</span><span class="p">)</span> <span class="o">+</span> <span class="n">nrows</span><span class="p">]</span> <span class="k">for</span> <span class="n">icol</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">ncols</span><span class="p">)]</span>
|
||||
<span class="c1"># split the items into columns</span>
|
||||
<span class="n">split</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">min_rows</span><span class="p">,</span> <span class="n">ceil</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">table</span><span class="p">)</span> <span class="o">/</span> <span class="n">ncols</span><span class="p">))</span>
|
||||
<span class="n">max_end</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">table</span><span class="p">)</span>
|
||||
<span class="n">cols_list</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">icol</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">ncols</span><span class="p">):</span>
|
||||
<span class="n">start</span> <span class="o">=</span> <span class="n">icol</span> <span class="o">*</span> <span class="n">split</span>
|
||||
<span class="n">end</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="n">start</span> <span class="o">+</span> <span class="n">split</span><span class="p">,</span> <span class="n">max_end</span><span class="p">)</span>
|
||||
<span class="n">cols_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">EvColumn</span><span class="p">(</span><span class="o">*</span><span class="n">table</span><span class="p">[</span><span class="n">start</span><span class="p">:</span><span class="n">end</span><span class="p">]))</span>
|
||||
|
||||
<span class="c1"># adjust the width of each column</span>
|
||||
<span class="k">for</span> <span class="n">icol</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">table</span><span class="p">)):</span>
|
||||
<span class="n">col_width</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="nb">max</span><span class="p">(</span><span class="nb">max</span><span class="p">(</span><span class="n">m_len</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">part</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">))</span> <span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="n">table</span><span class="p">[</span><span class="n">icol</span><span class="p">])</span> <span class="o">+</span> <span class="n">colsep</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">table</span><span class="p">[</span><span class="n">icol</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">pad</span><span class="p">(</span><span class="n">part</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="n">col_width</span> <span class="o">+</span> <span class="n">colsep</span><span class="p">,</span> <span class="n">align</span><span class="o">=</span><span class="s2">"l"</span><span class="p">)</span> <span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="n">table</span><span class="p">[</span><span class="n">icol</span><span class="p">]]</span>
|
||||
|
||||
<span class="c1"># format the table into columns</span>
|
||||
<span class="k">return</span> <span class="nb">str</span><span class="p">(</span><span class="n">EvTable</span><span class="p">(</span><span class="n">table</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> <span class="n">border</span><span class="o">=</span><span class="s2">"none"</span><span class="p">))</span></div>
|
||||
<span class="k">return</span> <span class="nb">str</span><span class="p">(</span><span class="n">EvTable</span><span class="p">(</span><span class="n">table</span><span class="o">=</span><span class="n">cols_list</span><span class="p">,</span> <span class="n">border</span><span class="o">=</span><span class="s2">"none"</span><span class="p">))</span></div>
|
||||
|
||||
<div class="viewcode-block" id="EvMenu.node_formatter"><a class="viewcode-back" href="../../../api/evennia.utils.evmenu.html#evennia.utils.evmenu.EvMenu.node_formatter">[docs]</a> <span class="k">def</span> <span class="nf">node_formatter</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">nodetext</span><span class="p">,</span> <span class="n">optionstext</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@
|
|||
<span class="sd"> # use underscore to NOT make the function available as a callable</span>
|
||||
|
||||
<span class="sd">def funcname(*args, **kwargs):</span>
|
||||
<span class="sd"> # this can be accecssed as $funcname(*args, **kwargs)</span>
|
||||
<span class="sd"> # this can be accessed as $funcname(*args, **kwargs)</span>
|
||||
<span class="sd"> # it must always accept *args and **kwargs.</span>
|
||||
<span class="sd"> ...</span>
|
||||
<span class="sd"> return something</span>
|
||||
|
|
@ -73,7 +73,7 @@
|
|||
<span class="sd">Usage:</span>
|
||||
|
||||
<span class="sd">```python</span>
|
||||
<span class="sd">from evennia.utils.funcparser</span>
|
||||
<span class="sd">from evennia.utils.funcparser import FuncParser</span>
|
||||
|
||||
<span class="sd">parser = FuncParser("path.to.module_with_callables")</span>
|
||||
<span class="sd">result = parser.parse("String with $funcname() in it")</span>
|
||||
|
|
@ -126,8 +126,8 @@
|
|||
<span class="c1"># state storage</span>
|
||||
<span class="n">fullstr</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
<span class="n">infuncstr</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
<span class="n">single_quoted</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
<span class="n">double_quoted</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
<span class="n">single_quoted</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span>
|
||||
<span class="n">double_quoted</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span>
|
||||
<span class="n">current_kwarg</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
<span class="n">open_lparens</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="n">open_lsquate</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
|
|
@ -360,8 +360,8 @@
|
|||
<span class="c1"># parsing state</span>
|
||||
<span class="n">callstack</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
|
||||
<span class="n">single_quoted</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
<span class="n">double_quoted</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
<span class="n">single_quoted</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span>
|
||||
<span class="n">double_quoted</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span>
|
||||
<span class="n">open_lparens</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># open (</span>
|
||||
<span class="n">open_lsquare</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># open [</span>
|
||||
<span class="n">open_lcurly</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># open {</span>
|
||||
|
|
@ -372,6 +372,7 @@
|
|||
<span class="n">curr_func</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="n">fullstr</span> <span class="o">=</span> <span class="s2">""</span> <span class="c1"># final string</span>
|
||||
<span class="n">infuncstr</span> <span class="o">=</span> <span class="s2">""</span> <span class="c1"># string parts inside the current level of $funcdef (including $)</span>
|
||||
<span class="n">literal_infuncstr</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">char</span> <span class="ow">in</span> <span class="n">string</span><span class="p">:</span>
|
||||
|
||||
|
|
@ -415,12 +416,13 @@
|
|||
<span class="n">curr_func</span><span class="o">.</span><span class="n">open_lcurly</span> <span class="o">=</span> <span class="n">open_lcurly</span>
|
||||
<span class="n">current_kwarg</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
<span class="n">infuncstr</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
<span class="n">single_quoted</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
<span class="n">double_quoted</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
<span class="n">single_quoted</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span>
|
||||
<span class="n">double_quoted</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span>
|
||||
<span class="n">open_lparens</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="n">open_lsquare</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="n">open_lcurly</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="n">exec_return</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
<span class="n">literal_infuncstr</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
<span class="n">callstack</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">curr_func</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># start a new func</span>
|
||||
|
|
@ -443,19 +445,41 @@
|
|||
<span class="n">infuncstr</span> <span class="o">+=</span> <span class="nb">str</span><span class="p">(</span><span class="n">exec_return</span><span class="p">)</span>
|
||||
<span class="n">exec_return</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">char</span> <span class="o">==</span> <span class="s2">"'"</span><span class="p">:</span> <span class="c1"># note that this is the same as "\'"</span>
|
||||
<span class="k">if</span> <span class="n">char</span> <span class="o">==</span> <span class="s2">"'"</span> <span class="ow">and</span> <span class="n">double_quoted</span> <span class="o"><</span> <span class="mi">0</span><span class="p">:</span> <span class="c1"># note that this is the same as "\'"</span>
|
||||
<span class="c1"># a single quote - flip status</span>
|
||||
<span class="n">single_quoted</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">single_quoted</span>
|
||||
<span class="n">infuncstr</span> <span class="o">+=</span> <span class="n">char</span>
|
||||
<span class="k">if</span> <span class="n">single_quoted</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="n">infuncstr</span> <span class="o">=</span> <span class="n">infuncstr</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span>
|
||||
<span class="n">single_quoted</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span>
|
||||
<span class="k">elif</span> <span class="n">single_quoted</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="n">prefix</span> <span class="o">=</span> <span class="n">infuncstr</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="n">single_quoted</span><span class="p">]</span>
|
||||
<span class="n">infuncstr</span> <span class="o">=</span> <span class="n">prefix</span> <span class="o">+</span> <span class="n">infuncstr</span><span class="p">[</span><span class="n">single_quoted</span> <span class="o">+</span> <span class="mi">1</span> <span class="p">:]</span>
|
||||
<span class="n">single_quoted</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">infuncstr</span> <span class="o">+=</span> <span class="n">char</span>
|
||||
<span class="n">infuncstr</span> <span class="o">=</span> <span class="n">infuncstr</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
||||
<span class="n">single_quoted</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">infuncstr</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span>
|
||||
<span class="n">literal_infuncstr</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
|
||||
<span class="k">continue</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">char</span> <span class="o">==</span> <span class="s1">'"'</span><span class="p">:</span> <span class="c1"># note that this is the same as '\"'</span>
|
||||
<span class="k">if</span> <span class="n">char</span> <span class="o">==</span> <span class="s1">'"'</span> <span class="ow">and</span> <span class="n">single_quoted</span> <span class="o"><</span> <span class="mi">0</span><span class="p">:</span> <span class="c1"># note that this is the same as '\"'</span>
|
||||
<span class="c1"># a double quote = flip status</span>
|
||||
<span class="n">double_quoted</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">double_quoted</span>
|
||||
<span class="n">infuncstr</span> <span class="o">+=</span> <span class="n">char</span>
|
||||
<span class="k">if</span> <span class="n">double_quoted</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="n">infuncstr</span> <span class="o">=</span> <span class="n">infuncstr</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span>
|
||||
<span class="n">double_quoted</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span>
|
||||
<span class="k">elif</span> <span class="n">double_quoted</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="n">prefix</span> <span class="o">=</span> <span class="n">infuncstr</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="n">double_quoted</span><span class="p">]</span>
|
||||
<span class="n">infuncstr</span> <span class="o">=</span> <span class="n">prefix</span> <span class="o">+</span> <span class="n">infuncstr</span><span class="p">[</span><span class="n">double_quoted</span> <span class="o">+</span> <span class="mi">1</span> <span class="p">:]</span>
|
||||
<span class="n">double_quoted</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">infuncstr</span> <span class="o">+=</span> <span class="n">char</span>
|
||||
<span class="n">infuncstr</span> <span class="o">=</span> <span class="n">infuncstr</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
||||
<span class="n">double_quoted</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">infuncstr</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span>
|
||||
<span class="n">literal_infuncstr</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
|
||||
<span class="k">continue</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">double_quoted</span> <span class="ow">or</span> <span class="n">single_quoted</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">double_quoted</span> <span class="o">>=</span> <span class="mi">0</span> <span class="ow">or</span> <span class="n">single_quoted</span> <span class="o">>=</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="c1"># inside a string definition - this escapes everything else</span>
|
||||
<span class="n">infuncstr</span> <span class="o">+=</span> <span class="n">char</span>
|
||||
<span class="k">continue</span>
|
||||
|
|
@ -519,12 +543,15 @@
|
|||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">curr_func</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exec_return</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">literal_infuncstr</span><span class="p">:</span>
|
||||
<span class="n">infuncstr</span> <span class="o">=</span> <span class="n">infuncstr</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
||||
|
||||
<span class="c1"># store a string instead</span>
|
||||
<span class="k">if</span> <span class="n">current_kwarg</span><span class="p">:</span>
|
||||
<span class="n">curr_func</span><span class="o">.</span><span class="n">kwargs</span><span class="p">[</span><span class="n">current_kwarg</span><span class="p">]</span> <span class="o">=</span> <span class="n">infuncstr</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
||||
<span class="k">elif</span> <span class="n">infuncstr</span><span class="o">.</span><span class="n">strip</span><span class="p">():</span>
|
||||
<span class="n">curr_func</span><span class="o">.</span><span class="n">kwargs</span><span class="p">[</span><span class="n">current_kwarg</span><span class="p">]</span> <span class="o">=</span> <span class="n">infuncstr</span>
|
||||
<span class="k">elif</span> <span class="n">literal_infuncstr</span> <span class="ow">or</span> <span class="n">infuncstr</span><span class="o">.</span><span class="n">strip</span><span class="p">():</span>
|
||||
<span class="c1"># don't store the empty string</span>
|
||||
<span class="n">curr_func</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">infuncstr</span><span class="o">.</span><span class="n">strip</span><span class="p">())</span>
|
||||
<span class="n">curr_func</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">infuncstr</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># note that at this point either exec_return or infuncstr will</span>
|
||||
<span class="c1"># be empty. We need to store the full string so we can print</span>
|
||||
|
|
@ -535,6 +562,7 @@
|
|||
<span class="n">current_kwarg</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
<span class="n">exec_return</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
<span class="n">infuncstr</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
<span class="n">literal_infuncstr</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">char</span> <span class="o">==</span> <span class="s2">")"</span><span class="p">:</span>
|
||||
<span class="c1"># closing the function list - this means we have a</span>
|
||||
|
|
@ -578,6 +606,7 @@
|
|||
<span class="k">if</span> <span class="n">return_str</span><span class="p">:</span>
|
||||
<span class="n">exec_return</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
<span class="n">infuncstr</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
<span class="n">literal_infuncstr</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
<span class="k">continue</span>
|
||||
|
||||
<span class="n">infuncstr</span> <span class="o">+=</span> <span class="n">char</span>
|
||||
|
|
@ -1139,7 +1168,7 @@
|
|||
|
||||
<span class="sd"> Examples:</span>
|
||||
<span class="sd"> This can be used by the say or emote hooks to pass actor stance</span>
|
||||
<span class="sd"> strings. This should usually be combined with the $inflect() callable.</span>
|
||||
<span class="sd"> strings. This should usually be combined with the $conj() callable.</span>
|
||||
|
||||
<span class="sd"> - `With a grin, $you() $conj(jump) at $you(tommy).`</span>
|
||||
|
||||
|
|
@ -1223,7 +1252,7 @@
|
|||
<div class="viewcode-block" id="funcparser_callable_pronoun"><a class="viewcode-back" href="../../../api/evennia.utils.funcparser.html#evennia.utils.funcparser.funcparser_callable_pronoun">[docs]</a><span class="k">def</span> <span class="nf">funcparser_callable_pronoun</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">caller</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">receiver</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">capitalize</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
||||
<span class="sd"> Usage: $prop(word, [options])</span>
|
||||
<span class="sd"> Usage: $pron(word, [options])</span>
|
||||
|
||||
<span class="sd"> Adjust pronouns to the expected form. Pronouns are words you use instead of a</span>
|
||||
<span class="sd"> proper name, such as 'him', 'herself', 'theirs' etc. These look different</span>
|
||||
|
|
@ -1259,7 +1288,7 @@
|
|||
<span class="sd"> `male`/`female`/`neutral`/`plural` (plural is considered a gender for this purpose).</span>
|
||||
<span class="sd"> If no `gender` property/callable is found, `neutral` is used as a fallback.</span>
|
||||
|
||||
<span class="sd"> The pronoun-type default (if not spefified in call) is `subject pronoun`.</span>
|
||||
<span class="sd"> The pronoun-type default (if not specified in call) is `subject pronoun`.</span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> pronoun (str): Input argument to parsed call. This can be any of the pronouns</span>
|
||||
|
|
@ -1329,7 +1358,7 @@
|
|||
<span class="n">default_viewpoint</span> <span class="o">=</span> <span class="s2">"2nd person"</span>
|
||||
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s2">"gender"</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">callable</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="n">gender</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">callable</span><span class="p">(</span><span class="n">caller</span><span class="o">.</span><span class="n">gender</span><span class="p">):</span>
|
||||
<span class="n">default_gender</span> <span class="o">=</span> <span class="n">caller</span><span class="o">.</span><span class="n">gender</span><span class="p">()</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">default_gender</span> <span class="o">=</span> <span class="n">caller</span><span class="o">.</span><span class="n">gender</span>
|
||||
|
|
@ -1357,7 +1386,7 @@
|
|||
<span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">caller</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">receiver</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">capitalize</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span>
|
||||
<span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Usage: $Pron(word) - always maps to a capitalized word.</span>
|
||||
<span class="sd"> Usage: $Pron(word, [options]) - always maps to a capitalized word.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="n">funcparser_callable_pronoun</span><span class="p">(</span>
|
||||
|
|
|
|||
|
|
@ -109,7 +109,7 @@
|
|||
<span class="n">callback</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
|
||||
<span class="n">seconds</span> <span class="o">=</span> <span class="n">real_seconds_until</span><span class="p">(</span><span class="o">**</span><span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">gametime</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">restart</span><span class="p">(</span><span class="n">interval</span><span class="o">=</span><span class="n">seconds</span><span class="p">)</span></div></div>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">start</span><span class="p">(</span><span class="n">interval</span><span class="o">=</span><span class="n">seconds</span><span class="p">,</span> <span class="n">force_restart</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div></div>
|
||||
|
||||
|
||||
<span class="c1"># Access functions</span>
|
||||
|
|
|
|||
|
|
@ -92,6 +92,7 @@
|
|||
|
||||
<span class="c1"># log call functions (each has legacy aliases)</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="log_info"><a class="viewcode-back" href="../../../api/evennia.utils.logger.html#evennia.utils.logger.log_info">[docs]</a><span class="k">def</span> <span class="nf">log_info</span><span class="p">(</span><span class="n">msg</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Logs any generic debugging/informative info that should appear in the log.</span>
|
||||
|
|
@ -104,6 +105,7 @@
|
|||
<span class="sd"> """</span>
|
||||
<span class="n">_log</span><span class="p">(</span><span class="n">msg</span><span class="p">,</span> <span class="n">log</span><span class="o">.</span><span class="n">info</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<span class="n">info</span> <span class="o">=</span> <span class="n">log_info</span>
|
||||
<span class="n">log_infomsg</span> <span class="o">=</span> <span class="n">log_info</span>
|
||||
<span class="n">log_msg</span> <span class="o">=</span> <span class="n">log_info</span>
|
||||
|
|
@ -121,6 +123,7 @@
|
|||
<span class="sd"> """</span>
|
||||
<span class="n">_log</span><span class="p">(</span><span class="n">msg</span><span class="p">,</span> <span class="n">log</span><span class="o">.</span><span class="n">warn</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<span class="n">warn</span> <span class="o">=</span> <span class="n">log_warn</span>
|
||||
<span class="n">warning</span> <span class="o">=</span> <span class="n">log_warn</span>
|
||||
<span class="n">log_warnmsg</span> <span class="o">=</span> <span class="n">log_warn</span>
|
||||
|
|
@ -162,6 +165,7 @@
|
|||
<span class="k">if</span> <span class="n">msg</span><span class="p">:</span>
|
||||
<span class="n">_log</span><span class="p">(</span><span class="n">msg</span><span class="p">,</span> <span class="n">log</span><span class="o">.</span><span class="n">error</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s2">"!!"</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<span class="n">log_tracemsg</span> <span class="o">=</span> <span class="n">log_trace</span>
|
||||
<span class="n">exception</span> <span class="o">=</span> <span class="n">log_trace</span>
|
||||
<span class="n">critical</span> <span class="o">=</span> <span class="n">log_trace</span>
|
||||
|
|
@ -198,6 +202,7 @@
|
|||
<span class="sd"> """</span>
|
||||
<span class="n">_log</span><span class="p">(</span><span class="n">msg</span><span class="p">,</span> <span class="n">log</span><span class="o">.</span><span class="n">info</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s2">"SS"</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<span class="n">sec</span> <span class="o">=</span> <span class="n">log_sec</span>
|
||||
<span class="n">security</span> <span class="o">=</span> <span class="n">log_sec</span>
|
||||
<span class="n">log_secmsg</span> <span class="o">=</span> <span class="n">log_sec</span>
|
||||
|
|
@ -216,12 +221,12 @@
|
|||
<span class="n">_log</span><span class="p">(</span><span class="n">msg</span><span class="p">,</span> <span class="n">log</span><span class="o">.</span><span class="n">info</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s2">"Server"</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
|
||||
<div class="viewcode-block" id="GetLogObserver"><a class="viewcode-back" href="../../../api/evennia.utils.logger.html#evennia.utils.logger.GetLogObserver">[docs]</a><span class="k">class</span> <span class="nc">GetLogObserver</span><span class="p">:</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Sets up how the system logs are formatted.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">component_prefix</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
<span class="n">event_levels</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="n">twisted_logger</span><span class="o">.</span><span class="n">LogLevel</span><span class="o">.</span><span class="n">debug</span><span class="p">:</span> <span class="s2">"??"</span><span class="p">,</span>
|
||||
|
|
@ -249,8 +254,7 @@
|
|||
<span class="n">event</span><span class="p">[</span><span class="s2">"log_format"</span><span class="p">]</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"log_format"</span><span class="p">,</span> <span class="s2">""</span><span class="p">))</span>
|
||||
<span class="n">component_prefix</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">component_prefix</span> <span class="ow">or</span> <span class="s2">""</span>
|
||||
<span class="n">log_msg</span> <span class="o">=</span> <span class="n">twisted_logger</span><span class="o">.</span><span class="n">formatEventAsClassicLogText</span><span class="p">(</span>
|
||||
<span class="n">event</span><span class="p">,</span>
|
||||
<span class="n">formatTime</span><span class="o">=</span><span class="k">lambda</span> <span class="n">e</span><span class="p">:</span> <span class="n">twisted_logger</span><span class="o">.</span><span class="n">formatTime</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="n">_TIME_FORMAT</span><span class="p">)</span>
|
||||
<span class="n">event</span><span class="p">,</span> <span class="n">formatTime</span><span class="o">=</span><span class="k">lambda</span> <span class="n">e</span><span class="p">:</span> <span class="n">twisted_logger</span><span class="o">.</span><span class="n">formatTime</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="n">_TIME_FORMAT</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">component_prefix</span><span class="si">}{</span><span class="n">log_msg</span><span class="si">}</span><span class="s2">"</span></div>
|
||||
|
||||
|
|
@ -260,14 +264,15 @@
|
|||
|
||||
<span class="c1"># Called by server/portal on startup</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="GetPortalLogObserver"><a class="viewcode-back" href="../../../api/evennia.utils.logger.html#evennia.utils.logger.GetPortalLogObserver">[docs]</a><span class="k">class</span> <span class="nc">GetPortalLogObserver</span><span class="p">(</span><span class="n">GetLogObserver</span><span class="p">):</span>
|
||||
<span class="n">component_prefix</span> <span class="o">=</span> <span class="s2">"|Portal| "</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="GetServerLogObserver"><a class="viewcode-back" href="../../../api/evennia.utils.logger.html#evennia.utils.logger.GetServerLogObserver">[docs]</a><span class="k">class</span> <span class="nc">GetServerLogObserver</span><span class="p">(</span><span class="n">GetLogObserver</span><span class="p">):</span>
|
||||
<span class="n">component_prefix</span> <span class="o">=</span> <span class="s2">""</span></div>
|
||||
|
||||
|
||||
|
||||
<span class="c1"># logging overrides</span>
|
||||
|
||||
|
||||
|
|
@ -394,6 +399,7 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">lastDate</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lastDate</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">toDate</span><span class="p">())</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="o">+=</span> <span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">)</span></div></div>
|
||||
|
||||
|
||||
<span class="c1"># Arbitrary file logger</span>
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -138,7 +138,6 @@
|
|||
<span class="s2">"evennia.game_template.server.conf.prototypefuncs"</span><span class="p">,</span>
|
||||
<span class="p">],</span>
|
||||
<span class="n">BASE_GUEST_TYPECLASS</span><span class="o">=</span><span class="s2">"evennia.accounts.accounts.DefaultGuest"</span><span class="p">,</span>
|
||||
|
||||
<span class="c1"># a special setting boolean _TEST_ENVIRONMENT is set by the test runner</span>
|
||||
<span class="c1"># while the test suite is running.</span>
|
||||
<span class="p">)</span>
|
||||
|
|
|
|||
|
|
@ -54,11 +54,10 @@
|
|||
<span class="kn">from</span> <span class="nn">html</span> <span class="kn">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="kn">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>
|
||||
<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">{}</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">{}</span><span class="s2">m"</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="TextToHTMLparser"><a class="viewcode-back" href="../../../api/evennia.utils.text2html.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>
|
||||
|
|
@ -67,188 +66,75 @@
|
|||
<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="n">style_codes</span> <span class="o">=</span> <span class="p">[</span>
|
||||
<span class="c1"># non-color style markers</span>
|
||||
<span class="n">ANSI_NORMAL</span><span class="p">,</span>
|
||||
<span class="n">ANSI_UNDERLINE</span><span class="p">,</span>
|
||||
<span class="n">ANSI_HILITE</span><span class="p">,</span>
|
||||
<span class="n">ANSI_UNHILITE</span><span class="p">,</span>
|
||||
<span class="n">ANSI_INVERSE</span><span class="p">,</span>
|
||||
<span class="n">ANSI_BLINK</span><span class="p">,</span>
|
||||
<span class="n">ANSI_INV_HILITE</span><span class="p">,</span>
|
||||
<span class="n">ANSI_BLINK_HILITE</span><span class="p">,</span>
|
||||
<span class="n">ANSI_INV_BLINK</span><span class="p">,</span>
|
||||
<span class="n">ANSI_INV_BLINK_HILITE</span><span class="p">,</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="n">ansi_color_codes</span> <span class="o">=</span> <span class="p">[</span>
|
||||
<span class="c1"># Foreground colors</span>
|
||||
<span class="n">ANSI_BLACK</span><span class="p">,</span>
|
||||
<span class="n">ANSI_RED</span><span class="p">,</span>
|
||||
<span class="n">ANSI_GREEN</span><span class="p">,</span>
|
||||
<span class="n">ANSI_YELLOW</span><span class="p">,</span>
|
||||
<span class="n">ANSI_BLUE</span><span class="p">,</span>
|
||||
<span class="n">ANSI_MAGENTA</span><span class="p">,</span>
|
||||
<span class="n">ANSI_CYAN</span><span class="p">,</span>
|
||||
<span class="n">ANSI_WHITE</span><span class="p">,</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">xterm_fg_codes</span> <span class="o">=</span> <span class="p">[</span><span class="n">XTERM256_FG</span><span class="o">.</span><span class="n">format</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">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="n">ansi_bg_codes</span> <span class="o">=</span> <span class="p">[</span>
|
||||
<span class="c1"># Background colors</span>
|
||||
<span class="n">ANSI_BACK_BLACK</span><span class="p">,</span>
|
||||
<span class="n">ANSI_BACK_RED</span><span class="p">,</span>
|
||||
<span class="n">ANSI_BACK_GREEN</span><span class="p">,</span>
|
||||
<span class="n">ANSI_BACK_YELLOW</span><span class="p">,</span>
|
||||
<span class="n">ANSI_BACK_BLUE</span><span class="p">,</span>
|
||||
<span class="n">ANSI_BACK_MAGENTA</span><span class="p">,</span>
|
||||
<span class="n">ANSI_BACK_CYAN</span><span class="p">,</span>
|
||||
<span class="n">ANSI_BACK_WHITE</span><span class="p">,</span>
|
||||
<span class="p">]</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">xterm_bg_codes</span> <span class="o">=</span> <span class="p">[</span><span class="n">XTERM256_BG</span><span class="o">.</span><span class="n">format</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">re_style</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">"(</span><span class="si">{}</span><span class="s2">)"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="s2">"|"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
|
||||
<span class="n">style_codes</span> <span class="o">+</span> <span class="n">ansi_color_codes</span> <span class="o">+</span> <span class="n">xterm_fg_codes</span> <span class="o">+</span> <span class="n">ansi_bg_codes</span> <span class="o">+</span> <span class="n">xterm_bg_codes</span>
|
||||
<span class="p">)</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="p">)</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">colorlist</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="p">[</span><span class="n">ANSI_UNHILITE</span> <span class="o">+</span> <span class="n">code</span> <span class="k">for</span> <span class="n">code</span> <span class="ow">in</span> <span class="n">ansi_color_codes</span><span class="p">]</span>
|
||||
<span class="o">+</span> <span class="p">[</span><span class="n">ANSI_HILITE</span> <span class="o">+</span> <span class="n">code</span> <span class="k">for</span> <span class="n">code</span> <span class="ow">in</span> <span class="n">ansi_color_codes</span><span class="p">]</span>
|
||||
<span class="o">+</span> <span class="n">xterm_fg_codes</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">bglist</span> <span class="o">=</span> <span class="n">ansi_bg_codes</span> <span class="o">+</span> <span class="p">[</span><span class="n">ANSI_HILITE</span> <span class="o">+</span> <span class="n">code</span> <span class="k">for</span> <span class="n">code</span> <span class="ow">in</span> <span class="n">ansi_bg_codes</span><span class="p">]</span> <span class="o">+</span> <span class="n">xterm_bg_codes</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<tab>[\t]+)|(?P<space> +)|"</span>
|
||||
<span class="sa">r</span><span class="s2">"(?P<spacestart>^ )|(?P<lineend>\r\n|\r|\n)"</span><span class="p">,</span>
|
||||
<span class="sa">r</span><span class="s2">"(?P<htmlchars>[<&>])|(?P<tab>[\t]+)|(?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_invisiblespace</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">"( <.*?>)( )"</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>
|
||||
<span class="n">re_mxpurl</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">"\|lu(.*?)\|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>
|
||||
|
||||
<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>
|
||||
|
||||
<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>
|
||||
|
||||
<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 class="viewcode-block" id="TextToHTMLparser.re_color"><a class="viewcode-back" href="../../../api/evennia.utils.text2html.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.text2html.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.text2html.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.text2html.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.text2html.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.text2html.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>
|
||||
|
|
@ -260,7 +146,7 @@
|
|||
<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>
|
||||
<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="n">ANSI_BEEP</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.text2html.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>
|
||||
|
|
@ -307,20 +193,6 @@
|
|||
<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.text2html.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.re_invisible_space"><a class="viewcode-back" href="../../../api/evennia.utils.text2html.html#evennia.utils.text2html.TextToHTMLparser.re_invisible_space">[docs]</a> <span class="k">def</span> <span class="nf">re_invisible_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"> If two spaces are separated by an invisble html element, they act as a</span>
|
||||
<span class="sd"> hidden double-space and the last of them should be replaced by &nbsp;</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">re_invisiblespace</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_invisiblespace</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.text2html.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>
|
||||
|
|
@ -374,27 +246,131 @@
|
|||
<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">"tab"</span><span class="p">]:</span>
|
||||
<span class="n">text</span> <span class="o">=</span> <span class="n">cdict</span><span class="p">[</span><span class="s2">"tab"</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">" "</span> <span class="o">+</span> <span class="s2">"&nbsp;"</span> <span class="o">*</span> <span class="p">(</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="p">))</span>
|
||||
<span class="k">return</span> <span class="n">text</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">cdict</span><span class="p">[</span><span class="s2">"space"</span><span class="p">]</span>
|
||||
<span class="n">text</span> <span class="o">=</span> <span class="s2">" "</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">text</span><span class="p">)</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="n">text</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</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="n">text</span> <span class="o">=</span> <span class="n">cdict</span><span class="p">[</span><span class="s2">"tab"</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">" "</span> <span class="o">*</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tabstop</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.text2html.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.format_styles"><a class="viewcode-back" href="../../../api/evennia.utils.text2html.html#evennia.utils.text2html.TextToHTMLparser.format_styles">[docs]</a> <span class="k">def</span> <span class="nf">format_styles</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"> Takes a string with parsed ANSI codes and replaces them with</span>
|
||||
<span class="sd"> HTML spans and CSS classes.</span>
|
||||
|
||||
<div class="viewcode-block" id="TextToHTMLparser.sub_invisiblespace"><a class="viewcode-back" href="../../../api/evennia.utils.text2html.html#evennia.utils.text2html.TextToHTMLparser.sub_invisiblespace">[docs]</a> <span class="k">def</span> <span class="nf">sub_invisiblespace</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 invisible spaces"</span>
|
||||
<span class="k">return</span> <span class="n">match</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="s2">"&nbsp;"</span></div>
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> text (str): The string to process.</span>
|
||||
|
||||
<div class="viewcode-block" id="TextToHTMLparser.handle_single_first_space"><a class="viewcode-back" href="../../../api/evennia.utils.text2html.html#evennia.utils.text2html.TextToHTMLparser.handle_single_first_space">[docs]</a> <span class="k">def</span> <span class="nf">handle_single_first_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="s2">"Don't swallow an initial lone space"</span>
|
||||
<span class="k">if</span> <span class="n">text</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">" "</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="s2">"&nbsp;"</span> <span class="o">+</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>
|
||||
<span class="sd"> Returns:</span>
|
||||
<span class="sd"> text (str): Processed text.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="c1"># split out the ANSI codes and clean out any empty items</span>
|
||||
<span class="n">str_list</span> <span class="o">=</span> <span class="p">[</span><span class="n">substr</span> <span class="k">for</span> <span class="n">substr</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">re_style</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">text</span><span class="p">)</span> <span class="k">if</span> <span class="n">substr</span><span class="p">]</span>
|
||||
<span class="c1"># initialize all the flags and classes</span>
|
||||
<span class="n">classes</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="n">clean</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
<span class="n">inverse</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
<span class="c1"># default color is light grey - unhilite + white</span>
|
||||
<span class="n">hilight</span> <span class="o">=</span> <span class="n">ANSI_UNHILITE</span>
|
||||
<span class="n">fg</span> <span class="o">=</span> <span class="n">ANSI_WHITE</span>
|
||||
<span class="c1"># default bg is black</span>
|
||||
<span class="n">bg</span> <span class="o">=</span> <span class="n">ANSI_BACK_BLACK</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">substr</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">str_list</span><span class="p">):</span>
|
||||
<span class="c1"># reset all current styling</span>
|
||||
<span class="k">if</span> <span class="n">substr</span> <span class="o">==</span> <span class="n">ANSI_NORMAL</span><span class="p">:</span>
|
||||
<span class="c1"># close any existing span if necessary</span>
|
||||
<span class="n">str_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"</span>"</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">clean</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
<span class="c1"># reset to defaults</span>
|
||||
<span class="n">classes</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="n">clean</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
<span class="n">inverse</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
<span class="n">hilight</span> <span class="o">=</span> <span class="n">ANSI_UNHILITE</span>
|
||||
<span class="n">fg</span> <span class="o">=</span> <span class="n">ANSI_WHITE</span>
|
||||
<span class="n">bg</span> <span class="o">=</span> <span class="n">ANSI_BACK_BLACK</span>
|
||||
|
||||
<span class="c1"># change color</span>
|
||||
<span class="k">elif</span> <span class="n">substr</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">ansi_color_codes</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">xterm_fg_codes</span><span class="p">:</span>
|
||||
<span class="c1"># erase ANSI code from output</span>
|
||||
<span class="n">str_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
<span class="c1"># set new color</span>
|
||||
<span class="n">fg</span> <span class="o">=</span> <span class="n">substr</span>
|
||||
|
||||
<span class="c1"># change bg color</span>
|
||||
<span class="k">elif</span> <span class="n">substr</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">ansi_bg_codes</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">xterm_bg_codes</span><span class="p">:</span>
|
||||
<span class="c1"># erase ANSI code from output</span>
|
||||
<span class="n">str_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
<span class="c1"># set new bg</span>
|
||||
<span class="n">bg</span> <span class="o">=</span> <span class="n">substr</span>
|
||||
|
||||
<span class="c1"># non-color codes</span>
|
||||
<span class="k">elif</span> <span class="n">substr</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">style_codes</span><span class="p">:</span>
|
||||
<span class="c1"># erase ANSI code from output</span>
|
||||
<span class="n">str_list</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
|
||||
<span class="c1"># hilight codes</span>
|
||||
<span class="k">if</span> <span class="n">substr</span> <span class="ow">in</span> <span class="p">(</span><span class="n">ANSI_HILITE</span><span class="p">,</span> <span class="n">ANSI_UNHILITE</span><span class="p">,</span> <span class="n">ANSI_INV_HILITE</span><span class="p">,</span> <span class="n">ANSI_INV_BLINK_HILITE</span><span class="p">):</span>
|
||||
<span class="c1"># set new hilight status</span>
|
||||
<span class="n">hilight</span> <span class="o">=</span> <span class="n">ANSI_UNHILITE</span> <span class="k">if</span> <span class="n">substr</span> <span class="o">==</span> <span class="n">ANSI_UNHILITE</span> <span class="k">else</span> <span class="n">ANSI_HILITE</span>
|
||||
|
||||
<span class="c1"># inversion codes</span>
|
||||
<span class="k">if</span> <span class="n">substr</span> <span class="ow">in</span> <span class="p">(</span><span class="n">ANSI_INVERSE</span><span class="p">,</span> <span class="n">ANSI_INV_HILITE</span><span class="p">,</span> <span class="n">ANSI_INV_BLINK_HILITE</span><span class="p">):</span>
|
||||
<span class="n">inverse</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
|
||||
<span class="c1"># blink codes</span>
|
||||
<span class="k">if</span> <span class="p">(</span>
|
||||
<span class="n">substr</span> <span class="ow">in</span> <span class="p">(</span><span class="n">ANSI_BLINK</span><span class="p">,</span> <span class="n">ANSI_BLINK_HILITE</span><span class="p">,</span> <span class="n">ANSI_INV_BLINK_HILITE</span><span class="p">)</span>
|
||||
<span class="ow">and</span> <span class="s2">"blink"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">classes</span>
|
||||
<span class="p">):</span>
|
||||
<span class="n">classes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"blink"</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># underline</span>
|
||||
<span class="k">if</span> <span class="n">substr</span> <span class="o">==</span> <span class="n">ANSI_UNDERLINE</span> <span class="ow">and</span> <span class="s2">"underline"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">classes</span><span class="p">:</span>
|
||||
<span class="n">classes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"underline"</span><span class="p">)</span>
|
||||
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># normal text, add text back to list</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">str_list</span><span class="p">[</span><span class="n">i</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]:</span>
|
||||
<span class="c1"># prior entry was cleared, which means style change</span>
|
||||
<span class="c1"># get indices for the fg and bg codes</span>
|
||||
<span class="n">bg_index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">bglist</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">bg</span><span class="p">)</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">color_index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">colorlist</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">hilight</span> <span class="o">+</span> <span class="n">fg</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
|
||||
<span class="c1"># xterm256 colors don't have the hilight codes</span>
|
||||
<span class="n">color_index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">colorlist</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">fg</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">inverse</span><span class="p">:</span>
|
||||
<span class="c1"># inverse means swap fg and bg indices</span>
|
||||
<span class="n">bg_class</span> <span class="o">=</span> <span class="s2">"bgcolor-</span><span class="si">{}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">color_index</span><span class="p">)</span><span class="o">.</span><span class="n">rjust</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="s2">"0"</span><span class="p">))</span>
|
||||
<span class="n">color_class</span> <span class="o">=</span> <span class="s2">"color-</span><span class="si">{}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">bg_index</span><span class="p">)</span><span class="o">.</span><span class="n">rjust</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="s2">"0"</span><span class="p">))</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># use fg and bg indices for classes</span>
|
||||
<span class="n">bg_class</span> <span class="o">=</span> <span class="s2">"bgcolor-</span><span class="si">{}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">bg_index</span><span class="p">)</span><span class="o">.</span><span class="n">rjust</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="s2">"0"</span><span class="p">))</span>
|
||||
<span class="n">color_class</span> <span class="o">=</span> <span class="s2">"color-</span><span class="si">{}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">color_index</span><span class="p">)</span><span class="o">.</span><span class="n">rjust</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="s2">"0"</span><span class="p">))</span>
|
||||
|
||||
<span class="c1"># black bg is the default, don't explicitly style</span>
|
||||
<span class="k">if</span> <span class="n">bg_class</span> <span class="o">!=</span> <span class="s2">"bgcolor-000"</span><span class="p">:</span>
|
||||
<span class="n">classes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">bg_class</span><span class="p">)</span>
|
||||
<span class="c1"># light grey text is the default, don't explicitly style</span>
|
||||
<span class="k">if</span> <span class="n">color_class</span> <span class="o">!=</span> <span class="s2">"color-007"</span><span class="p">:</span>
|
||||
<span class="n">classes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">color_class</span><span class="p">)</span>
|
||||
<span class="c1"># define the new style span</span>
|
||||
<span class="n">prefix</span> <span class="o">=</span> <span class="s1">'<span class="</span><span class="si">{}</span><span class="s1">">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">classes</span><span class="p">))</span>
|
||||
<span class="c1"># close any prior span</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">clean</span><span class="p">:</span>
|
||||
<span class="n">prefix</span> <span class="o">=</span> <span class="s2">"</span>"</span> <span class="o">+</span> <span class="n">prefix</span>
|
||||
<span class="c1"># add span to output</span>
|
||||
<span class="n">str_list</span><span class="p">[</span><span class="n">i</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">prefix</span>
|
||||
|
||||
<span class="c1"># clean out color classes to easily update next time</span>
|
||||
<span class="n">classes</span> <span class="o">=</span> <span class="p">[</span><span class="bp">cls</span> <span class="k">for</span> <span class="bp">cls</span> <span class="ow">in</span> <span class="n">classes</span> <span class="k">if</span> <span class="s2">"color"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">cls</span><span class="p">]</span>
|
||||
<span class="c1"># flag as currently being styled</span>
|
||||
<span class="n">clean</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
|
||||
<span class="c1"># close span if necessary</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">clean</span><span class="p">:</span>
|
||||
<span class="n">str_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"</span>"</span><span class="p">)</span>
|
||||
<span class="c1"># recombine back into string</span>
|
||||
<span class="k">return</span> <span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">str_list</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="TextToHTMLparser.parse"><a class="viewcode-back" href="../../../api/evennia.utils.text2html.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>
|
||||
|
|
@ -409,25 +385,17 @@
|
|||
<span class="sd"> text (str): Parsed text.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="c1"># print(f"incoming text:\n{text}")</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="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_mxpurl</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">sub_mxp_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_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">format_styles</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="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">re_invisible_space</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">handle_single_first_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>
|
||||
|
||||
|
|
|
|||
|
|
@ -2737,6 +2737,7 @@
|
|||
<span class="o">+</span> <span class="n">excess</span>
|
||||
<span class="p">)</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="run_in_main_thread"><a class="viewcode-back" href="../../../api/evennia.utils.utils.html#evennia.commands.default.building.run_in_main_thread">[docs]</a><span class="k">def</span> <span class="nf">run_in_main_thread</span><span class="p">(</span><span class="n">function_or_method</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Force a callable to execute in the main Evennia thread. This is only relevant when</span>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue