mirror of
https://github.com/evennia/evennia.git
synced 2026-04-03 22:47:16 +02:00
Updated HTML docs
This commit is contained in:
parent
3030a621a8
commit
b092cbba9a
62 changed files with 528 additions and 171 deletions
|
|
@ -1540,7 +1540,7 @@
|
|||
<span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"</span><span class="se">\n\n</span><span class="s2"> |whelp|n - more commands"</span><span class="p">)</span>
|
||||
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2"> |wooc <Text>|n - talk on public channel"</span><span class="p">)</span>
|
||||
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2"> |wpublic <Text>|n - talk on public channel"</span><span class="p">)</span>
|
||||
|
||||
<span class="n">charmax</span> <span class="o">=</span> <span class="n">_MAX_NR_CHARACTERS</span>
|
||||
|
||||
|
|
|
|||
|
|
@ -58,6 +58,13 @@
|
|||
<span class="kn">from</span> <span class="nn">evennia.utils.ansi</span> <span class="kn">import</span> <span class="n">ANSIString</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="InterruptCommand"><a class="viewcode-back" href="../../../api/evennia.commands.command.html#evennia.commands.cmdhandler.InterruptCommand">[docs]</a><span class="k">class</span> <span class="nc">InterruptCommand</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span>
|
||||
|
||||
<span class="sd">"""Cleanly interrupt a command."""</span>
|
||||
|
||||
<span class="k">pass</span></div>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">_init_command</span><span class="p">(</span><span class="bp">cls</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"> Helper command.</span>
|
||||
|
|
@ -708,13 +715,6 @@
|
|||
<span class="k">if</span> <span class="s2">"mode"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
|
||||
<span class="n">kwargs</span><span class="p">[</span><span class="s2">"mode"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"footer"</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_render_decoration</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></div></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="InterruptCommand"><a class="viewcode-back" href="../../../api/evennia.commands.command.html#evennia.commands.cmdhandler.InterruptCommand">[docs]</a><span class="k">class</span> <span class="nc">InterruptCommand</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span>
|
||||
|
||||
<span class="sd">"""Cleanly interrupt a command."""</span>
|
||||
|
||||
<span class="k">pass</span></div>
|
||||
</pre></div>
|
||||
|
||||
<div class="clearer"></div>
|
||||
|
|
|
|||
|
|
@ -523,7 +523,7 @@
|
|||
<span class="k">return</span> <span class="n">string</span><span class="p">,</span> <span class="n">mapping</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="send_emote"><a class="viewcode-back" href="../../../api/evennia.contrib.rpsystem.html#evennia.contrib.rpsystem.send_emote">[docs]</a><span class="k">def</span> <span class="nf">send_emote</span><span class="p">(</span><span class="n">sender</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">anonymous_add</span><span class="o">=</span><span class="s2">"first"</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="send_emote"><a class="viewcode-back" href="../../../api/evennia.contrib.rpsystem.html#evennia.contrib.rpsystem.send_emote">[docs]</a><span class="k">def</span> <span class="nf">send_emote</span><span class="p">(</span><span class="n">sender</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">anonymous_add</span><span class="o">=</span><span class="s2">"first"</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"> Main access function for distribute an emote.</span>
|
||||
|
||||
|
|
@ -551,7 +551,9 @@
|
|||
<span class="c1"># we escape the object mappings since we'll do the language ones first</span>
|
||||
<span class="c1"># (the text could have nested object mappings).</span>
|
||||
<span class="n">emote</span> <span class="o">=</span> <span class="n">_RE_REF</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">emote</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># if anonymous_add is passed as a kwarg, collect and remove it from kwargs</span>
|
||||
<span class="k">if</span> <span class="s1">'anonymous_add'</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
|
||||
<span class="n">anonymous_add</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s1">'anonymous_add'</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">anonymous_add</span> <span class="ow">and</span> <span class="ow">not</span> <span class="s2">"#</span><span class="si">%i</span><span class="s2">"</span> <span class="o">%</span> <span class="n">sender</span><span class="o">.</span><span class="n">id</span> <span class="ow">in</span> <span class="n">obj_mapping</span><span class="p">:</span>
|
||||
<span class="c1"># no self-reference in the emote - add to the end</span>
|
||||
<span class="n">key</span> <span class="o">=</span> <span class="s2">"#</span><span class="si">%i</span><span class="s2">"</span> <span class="o">%</span> <span class="n">sender</span><span class="o">.</span><span class="n">id</span>
|
||||
|
|
@ -609,7 +611,7 @@
|
|||
<span class="n">receiver_sdesc_mapping</span><span class="p">[</span><span class="n">rkey</span><span class="p">]</span> <span class="o">=</span> <span class="n">process_sdesc</span><span class="p">(</span><span class="n">receiver</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> <span class="n">receiver</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># do the template replacement of the sdesc/recog {#num} markers</span>
|
||||
<span class="n">receiver</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">sendemote</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="o">**</span><span class="n">receiver_sdesc_mapping</span><span class="p">))</span></div>
|
||||
<span class="n">receiver</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">sendemote</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="o">**</span><span class="n">receiver_sdesc_mapping</span><span class="p">),</span> <span class="n">from_obj</span><span class="o">=</span><span class="n">sender</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<span class="c1"># ------------------------------------------------------------</span>
|
||||
|
|
|
|||
|
|
@ -716,7 +716,7 @@
|
|||
<span class="n">logger</span><span class="o">.</span><span class="n">log_trace</span><span class="p">()</span>
|
||||
<span class="n">kwargs</span><span class="p">[</span><span class="s2">"options"</span><span class="p">]</span> <span class="o">=</span> <span class="n">options</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">at_msg_receive</span><span class="p">(</span><span class="n">text</span><span class="o">=</span><span class="n">text</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">at_msg_receive</span><span class="p">(</span><span class="n">text</span><span class="o">=</span><span class="n">text</span><span class="p">,</span> <span class="n">from_obj</span><span class="o">=</span><span class="n">from_obj</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="c1"># if at_msg_receive returns false, we abort message to this object</span>
|
||||
<span class="k">return</span>
|
||||
<span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span>
|
||||
|
|
@ -1561,7 +1561,7 @@
|
|||
<span class="p">}</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">location</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="n">string</span><span class="p">,</span> <span class="n">exclude</span><span class="o">=</span><span class="p">(</span><span class="bp">self</span><span class="p">,),</span> <span class="n">mapping</span><span class="o">=</span><span class="n">mapping</span><span class="p">)</span></div>
|
||||
<span class="n">location</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="n">string</span><span class="p">,</span> <span class="n">exclude</span><span class="o">=</span><span class="p">(</span><span class="bp">self</span><span class="p">,),</span> <span class="n">from_obj</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="n">mapping</span><span class="o">=</span><span class="n">mapping</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="DefaultObject.announce_move_to"><a class="viewcode-back" href="../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.announce_move_to">[docs]</a> <span class="k">def</span> <span class="nf">announce_move_to</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">source_location</span><span class="p">,</span> <span class="n">msg</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">mapping</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
@ -1623,7 +1623,7 @@
|
|||
<span class="p">}</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">destination</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="n">string</span><span class="p">,</span> <span class="n">exclude</span><span class="o">=</span><span class="p">(</span><span class="bp">self</span><span class="p">,),</span> <span class="n">mapping</span><span class="o">=</span><span class="n">mapping</span><span class="p">)</span></div>
|
||||
<span class="n">destination</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="n">string</span><span class="p">,</span> <span class="n">exclude</span><span class="o">=</span><span class="p">(</span><span class="bp">self</span><span class="p">,),</span> <span class="n">from_obj</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="n">mapping</span><span class="o">=</span><span class="n">mapping</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="DefaultObject.at_after_move"><a class="viewcode-back" href="../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.at_after_move">[docs]</a> <span class="k">def</span> <span class="nf">at_after_move</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">source_location</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
|
|||
|
|
@ -425,10 +425,12 @@
|
|||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">mod_matches</span> <span class="o">=</span> <span class="n">_MODULE_PROTOTYPES</span>
|
||||
|
||||
<span class="n">allow_fuzzy</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
<span class="k">if</span> <span class="n">key</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">mod_matches</span><span class="p">:</span>
|
||||
<span class="c1"># exact match</span>
|
||||
<span class="n">module_prototypes</span> <span class="o">=</span> <span class="p">[</span><span class="n">mod_matches</span><span class="p">[</span><span class="n">key</span><span class="p">]]</span>
|
||||
<span class="n">allow_fuzzy</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># fuzzy matching</span>
|
||||
<span class="n">module_prototypes</span> <span class="o">=</span> <span class="p">[</span>
|
||||
|
|
@ -452,7 +454,7 @@
|
|||
<span class="k">if</span> <span class="n">key</span><span class="p">:</span>
|
||||
<span class="c1"># exact or partial match on key</span>
|
||||
<span class="n">exact_match</span> <span class="o">=</span> <span class="n">db_matches</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">Q</span><span class="p">(</span><span class="n">db_key__iexact</span><span class="o">=</span><span class="n">key</span><span class="p">))</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s2">"db_key"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">exact_match</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">exact_match</span> <span class="ow">and</span> <span class="n">allow_fuzzy</span><span class="p">:</span>
|
||||
<span class="c1"># try with partial match instead</span>
|
||||
<span class="n">db_matches</span> <span class="o">=</span> <span class="n">db_matches</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">Q</span><span class="p">(</span><span class="n">db_key__icontains</span><span class="o">=</span><span class="n">key</span><span class="p">))</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s2">"db_key"</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
|
|
@ -469,7 +471,7 @@
|
|||
<span class="n">nmodules</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">module_prototypes</span><span class="p">)</span>
|
||||
<span class="n">ndbprots</span> <span class="o">=</span> <span class="n">db_matches</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">nmodules</span> <span class="o">+</span> <span class="n">ndbprots</span> <span class="o">!=</span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">KeyError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Found </span><span class="si">{</span><span class="n">nmodules</span> <span class="o">+</span> <span class="n">ndbprots</span><span class="si">}</span><span class="s2"> matching prototypes."</span><span class="p">)</span>
|
||||
<span class="k">raise</span> <span class="ne">KeyError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Found </span><span class="si">{</span><span class="n">nmodules</span> <span class="o">+</span> <span class="n">ndbprots</span><span class="si">}</span><span class="s2"> matching prototypes </span><span class="si">{</span><span class="n">module_prototypes</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">return_iterators</span><span class="p">:</span>
|
||||
<span class="c1"># trying to get the entire set of prototypes - we must paginate</span>
|
||||
|
|
|
|||
|
|
@ -106,7 +106,7 @@
|
|||
<span class="s2">"replaces and generalizes that which inlinefuncs used to do)."</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">settings</span><span class="p">,</span> <span class="s2">"INLINEFUNC_ENABLED"</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">DeprecationWarning</span><span class="p">(</span><span class="n">depstring</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="s2">"settings.INLINEFUNC_ENABLED"</span><span class="p">,</span> <span class="s2">"FUNCPARSER_PARSE_OUTGOING_MESSAGES_ENABLE"</span><span class="p">))</span>
|
||||
<span class="s2">"settings.INLINEFUNC_ENABLED"</span><span class="p">,</span> <span class="s2">"FUNCPARSER_PARSE_OUTGOING_MESSAGES_ENABLED"</span><span class="p">))</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">settings</span><span class="p">,</span> <span class="s2">"INLINEFUNC_STACK_MAXSIZE"</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">DeprecationWarning</span><span class="p">(</span><span class="n">depstring</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="s2">"settings.INLINEFUNC_STACK_MAXSIZE"</span><span class="p">,</span> <span class="s2">"FUNCPARSER_MAX_NESTING"</span><span class="p">))</span>
|
||||
|
|
|
|||
|
|
@ -161,7 +161,7 @@
|
|||
|
||||
<span class="n">_MAINTENANCE_COUNT</span> <span class="o">+=</span> <span class="mi">1</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">_MAINTENANCE_COUNT</span> <span class="o">%</span> <span class="p">(</span><span class="mi">3600</span> <span class="o">*</span> <span class="mi">7</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">_MAINTENANCE_COUNT</span> <span class="o">%</span> <span class="p">(</span><span class="mi">60</span> <span class="o">*</span> <span class="mi">7</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="c1"># drop database connection every 7 hrs to avoid default timeouts on MySQL</span>
|
||||
<span class="c1"># (see https://github.com/evennia/evennia/issues/1376)</span>
|
||||
<span class="n">connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
|
||||
|
|
|
|||
|
|
@ -182,13 +182,16 @@
|
|||
<span class="n">_GAMETIME_MODULE</span><span class="o">.</span><span class="n">SERVER_RUNTIME_LAST_UPDATED</span> <span class="o">=</span> <span class="n">now</span>
|
||||
<span class="n">ServerConfig</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">conf</span><span class="p">(</span><span class="s2">"runtime"</span><span class="p">,</span> <span class="n">_GAMETIME_MODULE</span><span class="o">.</span><span class="n">SERVER_RUNTIME</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">_MAINTENANCE_COUNT</span> <span class="o">%</span> <span class="mi">300</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">_MAINTENANCE_COUNT</span> <span class="o">%</span> <span class="mi">5</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="c1"># check cache size every 5 minutes</span>
|
||||
<span class="n">_FLUSH_CACHE</span><span class="p">(</span><span class="n">_IDMAPPER_CACHE_MAXSIZE</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">_MAINTENANCE_COUNT</span> <span class="o">%</span> <span class="mi">3700</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">_MAINTENANCE_COUNT</span> <span class="o">%</span> <span class="mi">60</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="c1"># validate scripts every hour</span>
|
||||
<span class="n">evennia</span><span class="o">.</span><span class="n">ScriptDB</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">validate</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">_MAINTENANCE_COUNT</span> <span class="o">%</span> <span class="mi">61</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="c1"># validate channels off-sync with scripts</span>
|
||||
<span class="n">evennia</span><span class="o">.</span><span class="n">CHANNEL_HANDLER</span><span class="o">.</span><span class="n">update</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">_MAINTENANCE_COUNT</span> <span class="o">%</span> <span class="p">(</span><span class="mi">3600</span> <span class="o">*</span> <span class="mi">7</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">_MAINTENANCE_COUNT</span> <span class="o">%</span> <span class="p">(</span><span class="mi">60</span> <span class="o">*</span> <span class="mi">7</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="c1"># drop database connection every 7 hrs to avoid default timeouts on MySQL</span>
|
||||
<span class="c1"># (see https://github.com/evennia/evennia/issues/1376)</span>
|
||||
<span class="n">connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
|
||||
|
|
|
|||
|
|
@ -219,7 +219,7 @@
|
|||
<span class="k">global</span> <span class="n">_FUNCPARSER</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">_FUNCPARSER</span><span class="p">:</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.funcparser</span> <span class="kn">import</span> <span class="n">FuncParser</span>
|
||||
<span class="n">_FUNCPARSER</span> <span class="o">=</span> <span class="n">FuncParser</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">FUNCPARSER_OUTGOING_MESSAGES_MODULE</span><span class="p">,</span> <span class="n">raise_errors</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">_FUNCPARSER</span> <span class="o">=</span> <span class="n">FuncParser</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">FUNCPARSER_OUTGOING_MESSAGES_MODULES</span><span class="p">,</span> <span class="n">raise_errors</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
|
||||
<span class="n">options</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"options"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> <span class="ow">or</span> <span class="p">{}</span>
|
||||
<span class="n">raw</span> <span class="o">=</span> <span class="n">options</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"raw"</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
|
||||
|
|
|
|||
|
|
@ -1596,7 +1596,7 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">CmdGetInput</span><span class="p">())</span></div></div>
|
||||
|
||||
|
||||
<span class="k">class</span> <span class="nc">_Prompt</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="k">class</span> <span class="nc">_Prompt</span><span class="p">:</span>
|
||||
<span class="sd">"""Dummy holder"""</span>
|
||||
|
||||
<span class="k">pass</span>
|
||||
|
|
@ -1663,6 +1663,174 @@
|
|||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">prompt</span><span class="p">,</span> <span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="CmdYesNoQuestion"><a class="viewcode-back" href="../../../api/evennia.utils.evmenu.html#evennia.utils.evmenu.CmdYesNoQuestion">[docs]</a><span class="k">class</span> <span class="nc">CmdYesNoQuestion</span><span class="p">(</span><span class="n">Command</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Handle a prompt for yes or no. Press [return] for the default choice.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">key</span> <span class="o">=</span> <span class="n">_CMD_NOINPUT</span>
|
||||
<span class="n">aliases</span> <span class="o">=</span> <span class="p">[</span><span class="n">_CMD_NOMATCH</span><span class="p">,</span> <span class="s2">"yes"</span><span class="p">,</span> <span class="s2">"no"</span><span class="p">,</span> <span class="s1">'y'</span><span class="p">,</span> <span class="s1">'n'</span><span class="p">,</span> <span class="s1">'a'</span><span class="p">,</span> <span class="s1">'abort'</span><span class="p">]</span>
|
||||
<span class="n">arg_regex</span> <span class="o">=</span> <span class="sa">r</span><span class="s2">"^$"</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_clean</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">ndb</span><span class="o">.</span><span class="n">_yes_no_question</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">cmdset</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">YesNoQuestionCmdSet</span><span class="p">)</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="CmdYesNoQuestion.func"><a class="viewcode-back" href="../../../api/evennia.utils.evmenu.html#evennia.utils.evmenu.CmdYesNoQuestion.func">[docs]</a> <span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""This is called when user enters anything."""</span>
|
||||
<span class="n">caller</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">yes_no_question</span> <span class="o">=</span> <span class="n">caller</span><span class="o">.</span><span class="n">ndb</span><span class="o">.</span><span class="n">_yes_no_question</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">yes_no_question</span> <span class="ow">and</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s2">"account"</span><span class="p">):</span>
|
||||
<span class="n">yes_no_question</span> <span class="o">=</span> <span class="n">caller</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">ndb</span><span class="o">.</span><span class="n">_yes_no_question</span>
|
||||
<span class="n">caller</span> <span class="o">=</span> <span class="n">caller</span><span class="o">.</span><span class="n">account</span>
|
||||
|
||||
<span class="n">inp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">cmdname</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">inp</span> <span class="o">==</span> <span class="n">_CMD_NOINPUT</span><span class="p">:</span>
|
||||
<span class="n">raw</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">raw_cmdname</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">raw</span><span class="p">:</span>
|
||||
<span class="c1"># use default</span>
|
||||
<span class="n">inp</span> <span class="o">=</span> <span class="n">yes_no_question</span><span class="o">.</span><span class="n">default</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">inp</span> <span class="o">=</span> <span class="n">raw</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">inp</span> <span class="ow">in</span> <span class="p">(</span><span class="s1">'a'</span><span class="p">,</span> <span class="s1">'abort'</span><span class="p">)</span> <span class="ow">and</span> <span class="n">yes_no_question</span><span class="o">.</span><span class="n">allow_abort</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="bp">self</span><span class="o">.</span><span class="n">_clean</span><span class="p">()</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">ndb</span><span class="o">.</span><span class="n">_yes_no_question</span><span class="o">.</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="n">args</span> <span class="o">=</span> <span class="n">yes_no_question</span><span class="o">.</span><span class="n">args</span>
|
||||
<span class="n">kwargs</span> <span class="o">=</span> <span class="n">yes_no_question</span><span class="o">.</span><span class="n">kwargs</span>
|
||||
<span class="n">kwargs</span><span class="p">[</span><span class="s1">'caller_session'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">session</span>
|
||||
|
||||
<span class="n">ok</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
<span class="k">if</span> <span class="n">inp</span> <span class="ow">in</span> <span class="p">(</span><span class="s1">'yes'</span><span class="p">,</span> <span class="s1">'y'</span><span class="p">):</span>
|
||||
<span class="n">yes_no_question</span><span class="o">.</span><span class="n">yes_callable</span><span class="p">(</span><span class="n">caller</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="k">elif</span> <span class="n">inp</span> <span class="ow">in</span> <span class="p">(</span><span class="s1">'no'</span><span class="p">,</span> <span class="s1">'n'</span><span class="p">):</span>
|
||||
<span class="n">yes_no_question</span><span class="o">.</span><span class="n">no_callable</span><span class="p">(</span><span class="n">caller</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="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># invalid input. Resend prompt without cleaning</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">yes_no_question</span><span class="o">.</span><span class="n">prompt</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">return</span>
|
||||
|
||||
<span class="c1"># cleanup</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_clean</span><span class="p">()</span>
|
||||
<span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span>
|
||||
<span class="c1"># make sure to clean up cmdset if something goes wrong</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"|rError in ask_yes_no. Choice not confirmed (report to admin)|n"</span><span class="p">)</span>
|
||||
<span class="n">logger</span><span class="o">.</span><span class="n">log_trace</span><span class="p">(</span><span class="s2">"Error in ask_yes_no"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_clean</span><span class="p">()</span></div></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="YesNoQuestionCmdSet"><a class="viewcode-back" href="../../../api/evennia.utils.evmenu.html#evennia.utils.evmenu.YesNoQuestionCmdSet">[docs]</a><span class="k">class</span> <span class="nc">YesNoQuestionCmdSet</span><span class="p">(</span><span class="n">CmdSet</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> This stores the input command</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">key</span> <span class="o">=</span> <span class="s2">"yes_no_question_cmdset"</span>
|
||||
<span class="n">priority</span> <span class="o">=</span> <span class="mi">1</span>
|
||||
<span class="n">mergetype</span> <span class="o">=</span> <span class="s2">"Replace"</span>
|
||||
<span class="n">no_objs</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
<span class="n">no_exits</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
<span class="n">no_channels</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
|
||||
<div class="viewcode-block" id="YesNoQuestionCmdSet.at_cmdset_creation"><a class="viewcode-back" href="../../../api/evennia.utils.evmenu.html#evennia.utils.evmenu.YesNoQuestionCmdSet.at_cmdset_creation">[docs]</a> <span class="k">def</span> <span class="nf">at_cmdset_creation</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""called once at creation"""</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">CmdYesNoQuestion</span><span class="p">())</span></div></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="ask_yes_no"><a class="viewcode-back" href="../../../api/evennia.utils.evmenu.html#evennia.utils.evmenu.ask_yes_no">[docs]</a><span class="k">def</span> <span class="nf">ask_yes_no</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="n">prompt</span><span class="p">,</span> <span class="n">yes_action</span><span class="p">,</span> <span class="n">no_action</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">allow_abort</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">session</span><span class="o">=</span><span class="kc">None</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"> A helper question for asking a simple yes/no question. This will cause</span>
|
||||
<span class="sd"> the system to pause and wait for input from the player.</span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
<span class="sd"> prompt (str): The yes/no question to ask. This takes an optional formatting</span>
|
||||
<span class="sd"> marker `{suffix}` which will be filled with 'Y/N', [Y]/N or Y/[N]</span>
|
||||
<span class="sd"> depending on the setting of `default`. If `allow_abort`, then the</span>
|
||||
<span class="sd"> `A(bort)` will also be available.</span>
|
||||
<span class="sd"> yes_action (callable or str): If a callable, this will be called</span>
|
||||
<span class="sd"> with `(caller, *args, **kwargs) when the yes-choice is made.</span>
|
||||
<span class="sd"> If a string, this string will be echoed back to the caller.</span>
|
||||
<span class="sd"> no_action (callable or str): If a callable, this will be called</span>
|
||||
<span class="sd"> with `(caller, *args, **kwargs)` when the no-choice is made.</span>
|
||||
<span class="sd"> If a string, this string will be echoed back to the caller.</span>
|
||||
<span class="sd"> default (str optional): One of "N", "Y", "A" or None for no default.</span>
|
||||
<span class="sd"> If "A" is given, `allow_abort` is assumed set. The user can choose</span>
|
||||
<span class="sd"> the default option just by pressing return.</span>
|
||||
<span class="sd"> allow_abort (bool, optional): If set, the Q(uit) option is available,</span>
|
||||
<span class="sd"> which is neither yes or no.</span>
|
||||
<span class="sd"> session (Session, optional): This allows to specify the</span>
|
||||
<span class="sd"> session to send the prompt to. It's usually only needed if `caller`</span>
|
||||
<span class="sd"> is an Account in multisession modes greater than 2. The session is</span>
|
||||
<span class="sd"> then updated by the command and is available (for example in</span>
|
||||
<span class="sd"> callbacks) through `caller.ndb._yes_no_question.session`.</span>
|
||||
<span class="sd"> *args, **kwargs: These are passed into the callables, if any.</span>
|
||||
|
||||
<span class="sd"> Raises:</span>
|
||||
<span class="sd"> RuntimeError: If default and allow_abort clashes.</span>
|
||||
|
||||
<span class="sd"> Example:</span>
|
||||
|
||||
<span class="sd"> ask_yes_no(caller, "Are you happy {suffix}?",</span>
|
||||
<span class="sd"> "you answered yes", "you answered no")</span>
|
||||
<span class="sd"> ask_yes_no(caller, "Are you sad {suffix}?",</span>
|
||||
<span class="sd"> _callable_yes, _callable_no, allow_abort=True)</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">def</span> <span class="nf">_callable_yes_txt</span><span class="p">(</span><span class="n">caller</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">yes_txt</span> <span class="o">=</span> <span class="n">kwargs</span><span class="p">[</span><span class="s1">'yes_txt'</span><span class="p">]</span>
|
||||
<span class="n">session</span> <span class="o">=</span> <span class="n">kwargs</span><span class="p">[</span><span class="s1">'caller_session'</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="n">yes_txt</span><span class="p">,</span> <span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_callable_no_txt</span><span class="p">(</span><span class="n">caller</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">no_txt</span> <span class="o">=</span> <span class="n">kwargs</span><span class="p">[</span><span class="s1">'no_txt'</span><span class="p">]</span>
|
||||
<span class="n">session</span> <span class="o">=</span> <span class="n">kwargs</span><span class="p">[</span><span class="s1">'caller_session'</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="n">no_txt</span><span class="p">,</span> <span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">callable</span><span class="p">(</span><span class="n">yes_action</span><span class="p">):</span>
|
||||
<span class="n">kwargs</span><span class="p">[</span><span class="s1">'yes_txt'</span><span class="p">]</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">yes_action</span><span class="p">)</span>
|
||||
<span class="n">yes_action</span> <span class="o">=</span> <span class="n">_callable_yes_txt</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">callable</span><span class="p">(</span><span class="n">no_action</span><span class="p">):</span>
|
||||
<span class="n">kwargs</span><span class="p">[</span><span class="s1">'no_txt'</span><span class="p">]</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">no_action</span><span class="p">)</span>
|
||||
<span class="n">no_action</span> <span class="o">=</span> <span class="n">_callable_no_txt</span>
|
||||
|
||||
<span class="c1"># prepare the prompt with suffix</span>
|
||||
<span class="n">suffix</span> <span class="o">=</span> <span class="s2">"Y/N"</span>
|
||||
<span class="n">abort_txt</span> <span class="o">=</span> <span class="s2">"/Abort"</span> <span class="k">if</span> <span class="n">allow_abort</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
<span class="k">if</span> <span class="n">default</span><span class="p">:</span>
|
||||
<span class="n">default</span> <span class="o">=</span> <span class="n">default</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">default</span> <span class="o">==</span> <span class="s2">"y"</span><span class="p">:</span>
|
||||
<span class="n">suffix</span> <span class="o">=</span> <span class="s2">"[Y]/N"</span>
|
||||
<span class="k">elif</span> <span class="n">default</span> <span class="o">==</span> <span class="s2">"n"</span><span class="p">:</span>
|
||||
<span class="n">suffix</span> <span class="o">=</span> <span class="s2">"Y/[N]"</span>
|
||||
<span class="k">elif</span> <span class="n">default</span> <span class="o">==</span> <span class="s2">"a"</span><span class="p">:</span>
|
||||
<span class="n">allow_abort</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
<span class="n">abort_txt</span> <span class="o">=</span> <span class="s2">"/[A]bort"</span>
|
||||
<span class="n">suffix</span> <span class="o">+=</span> <span class="n">abort_txt</span>
|
||||
<span class="n">prompt</span> <span class="o">=</span> <span class="n">prompt</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">suffix</span><span class="o">=</span><span class="n">suffix</span><span class="p">)</span>
|
||||
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">ndb</span><span class="o">.</span><span class="n">_yes_no_question</span> <span class="o">=</span> <span class="n">_Prompt</span><span class="p">()</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">ndb</span><span class="o">.</span><span class="n">_yes_no_question</span><span class="o">.</span><span class="n">session</span> <span class="o">=</span> <span class="n">session</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">ndb</span><span class="o">.</span><span class="n">_yes_no_question</span><span class="o">.</span><span class="n">prompt</span> <span class="o">=</span> <span class="n">prompt</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">ndb</span><span class="o">.</span><span class="n">_yes_no_question</span><span class="o">.</span><span class="n">default</span> <span class="o">=</span> <span class="n">default</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">ndb</span><span class="o">.</span><span class="n">_yes_no_question</span><span class="o">.</span><span class="n">allow_abort</span> <span class="o">=</span> <span class="n">allow_abort</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">ndb</span><span class="o">.</span><span class="n">_yes_no_question</span><span class="o">.</span><span class="n">yes_callable</span> <span class="o">=</span> <span class="n">yes_action</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">ndb</span><span class="o">.</span><span class="n">_yes_no_question</span><span class="o">.</span><span class="n">no_callable</span> <span class="o">=</span> <span class="n">no_action</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">ndb</span><span class="o">.</span><span class="n">_yes_no_question</span><span class="o">.</span><span class="n">args</span> <span class="o">=</span> <span class="n">args</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">ndb</span><span class="o">.</span><span class="n">_yes_no_question</span><span class="o">.</span><span class="n">kwargs</span> <span class="o">=</span> <span class="n">kwargs</span>
|
||||
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">cmdset</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">YesNoQuestionCmdSet</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="n">prompt</span><span class="p">,</span> <span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<span class="c1"># -------------------------------------------------------------</span>
|
||||
<span class="c1">#</span>
|
||||
<span class="c1"># Menu generation from menu template string</span>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue