Updated HTML docs

This commit is contained in:
Griatch 2021-10-30 22:40:55 +02:00
parent 92c6c7ccd2
commit 65b2a14153
82 changed files with 2549 additions and 198 deletions

View file

@ -706,8 +706,7 @@
<span class="s2"> |wCode|n https://github.com/evennia/evennia</span>
<span class="s2"> |wDemo|n https://demo.evennia.com</span>
<span class="s2"> |wGame listing|n https://games.evennia.com</span>
<span class="s2"> |wIrc|n #evennia on irc.freenode.net:6667</span>
<span class="s2"> |wDiscord|n https://discord.gg/SVCkd4cY3q</span>
<span class="s2"> |wChat|n https://discord.gg/AJJpcRUhtF</span>
<span class="s2"> |wForum|n https://github.com/evennia/evennia/discussions</span>
<span class="s2"> |wLicence|n https://opensource.org/licenses/BSD-3-Clause</span>
<span class="s2"> |wMaintainer|n (2010-) Griatch (griatch AT gmail DOT com)</span>

View file

@ -82,13 +82,8 @@
<span class="c1"># the sessid_max is based on the length of the db_sessid csv field (excluding commas)</span>
<span class="n">_SESSID_MAX</span> <span class="o">=</span> <span class="mi">16</span> <span class="k">if</span> <span class="n">_MULTISESSION_MODE</span> <span class="ow">in</span> <span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span> <span class="k">else</span> <span class="mi">1</span>
<span class="n">_MSG_CONTENTS_PARSER</span> <span class="o">=</span> <span class="n">funcparser</span><span class="o">.</span><span class="n">FuncParser</span><span class="p">(</span>
<span class="p">{</span>
<span class="s2">&quot;you&quot;</span><span class="p">:</span> <span class="n">funcparser</span><span class="o">.</span><span class="n">funcparser_callable_you</span><span class="p">,</span>
<span class="s2">&quot;You&quot;</span><span class="p">:</span> <span class="n">funcparser</span><span class="o">.</span><span class="n">funcparser_callable_You</span><span class="p">,</span>
<span class="s2">&quot;conj&quot;</span><span class="p">:</span> <span class="n">funcparser</span><span class="o">.</span><span class="n">funcparser_callable_conjugate</span>
<span class="p">}</span>
<span class="p">)</span>
<span class="c1"># init the actor-stance funcparser for msg_contents</span>
<span class="n">_MSG_CONTENTS_PARSER</span> <span class="o">=</span> <span class="n">funcparser</span><span class="o">.</span><span class="n">FuncParser</span><span class="p">(</span><span class="n">funcparser</span><span class="o">.</span><span class="n">ACTOR_STANCE_CALLABLES</span><span class="p">)</span>
<div class="viewcode-block" id="ObjectSessionHandler"><a class="viewcode-back" href="../../../api/evennia.objects.objects.html#evennia.objects.objects.ObjectSessionHandler">[docs]</a><span class="k">class</span> <span class="nc">ObjectSessionHandler</span><span class="p">:</span>
@ -773,8 +768,9 @@
<span class="sd"> on the valid OOB outmessage form `(message, {kwargs})`,</span>
<span class="sd"> where kwargs are optional data passed to the `text`</span>
<span class="sd"> outputfunc. The message will be parsed for `{key}` formatting and</span>
<span class="sd"> `$You/$you()/$You(key)` and `$conj(verb)` inline function callables.</span>
<span class="sd"> The `key` is taken from the `mapping` kwarg {&quot;key&quot;: object, ...}`.</span>
<span class="sd"> `$You/$you()/$You()`, `$obj(name)`, `$conj(verb)` and `$pron(pronoun, option)`</span>
<span class="sd"> inline function callables.</span>
<span class="sd"> The `name` is taken from the `mapping` kwarg {&quot;name&quot;: object, ...}`.</span>
<span class="sd"> The `mapping[key].get_display_name(looker=recipient)` will be called</span>
<span class="sd"> for that key for every recipient of the string.</span>
<span class="sd"> exclude (list, optional): A list of objects not to send to.</span>

View file

@ -331,7 +331,7 @@
<span class="s2"> Licence: BSD 3-Clause Licence</span>
<span class="s2"> Web: http://www.evennia.com</span>
<span class="s2"> Irc: #evennia on FreeNode</span>
<span class="s2"> Chat: https://discord.gg/AJJpcRUhtF</span>
<span class="s2"> Forum: http://www.evennia.com/discussions</span>
<span class="s2"> Maintainer (2006-10): Greg Taylor</span>
<span class="s2"> Maintainer (2010-): Griatch (griatch AT gmail DOT com)</span>

View file

@ -97,6 +97,7 @@
<span class="n">safe_convert_to_types</span><span class="p">)</span>
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="kn">import</span> <span class="n">search</span>
<span class="kn">from</span> <span class="nn">evennia.utils.verb_conjugation.conjugate</span> <span class="kn">import</span> <span class="n">verb_actor_stance_components</span>
<span class="kn">from</span> <span class="nn">evennia.utils.verb_conjugation.pronouns</span> <span class="kn">import</span> <span class="n">pronoun_to_viewpoints</span>
<span class="c1"># setup</span>
@ -1126,8 +1127,8 @@
<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">&quot;get_display_name&quot;</span><span class="p">)</span> <span class="k">else</span> <span class="nb">str</span><span class="p">(</span><span class="n">caller</span><span class="p">))</span></div>
<div class="viewcode-block" id="funcparser_callable_You"><a class="viewcode-back" href="../../../api/evennia.utils.funcparser.html#evennia.utils.funcparser.funcparser_callable_You">[docs]</a><span class="k">def</span> <span class="nf">funcparser_callable_You</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">you</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">mapping</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>
<div class="viewcode-block" id="funcparser_callable_you_capitalize"><a class="viewcode-back" href="../../../api/evennia.utils.funcparser.html#evennia.utils.funcparser.funcparser_callable_you_capitalize">[docs]</a><span class="k">def</span> <span class="nf">funcparser_callable_you_capitalize</span><span class="p">(</span>
<span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">you</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">mapping</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">&quot;&quot;&quot;</span>
<span class="sd"> Usage: $You() - capitalizes the &#39;you&#39; output.</span>
@ -1138,6 +1139,8 @@
<div class="viewcode-block" id="funcparser_callable_conjugate"><a class="viewcode-back" href="../../../api/evennia.utils.funcparser.html#evennia.utils.funcparser.funcparser_callable_conjugate">[docs]</a><span class="k">def</span> <span class="nf">funcparser_callable_conjugate</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="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Usage: $conj(word, [options])</span>
<span class="sd"> Conjugate a verb according to if it should be 2nd or third person.</span>
<span class="sd"> Keyword Args:</span>
@ -1174,6 +1177,146 @@
<span class="k">return</span> <span class="n">second_person_str</span> <span class="k">if</span> <span class="n">caller</span> <span class="o">==</span> <span class="n">receiver</span> <span class="k">else</span> <span class="n">third_person_str</span></div>
<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">&quot;&quot;&quot;</span>
<span class="sd"> Usage: $prop(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 &#39;him&#39;, &#39;herself&#39;, &#39;theirs&#39; etc. These look different</span>
<span class="sd"> depending on who sees the outgoing string.</span>
<span class="sd"> The parser maps between this table ...</span>
<span class="sd"> ==================== ======= ======= ========== ========== ===========</span>
<span class="sd"> 1st/2nd person Subject Object Possessive Possessive Reflexive</span>
<span class="sd"> Pronoun Pronoun Adjective Pronoun Pronoun</span>
<span class="sd"> ==================== ======= ======= ========== ========== ===========</span>
<span class="sd"> 1st person I me my mine myself</span>
<span class="sd"> 1st person plural we us our ours ourselves</span>
<span class="sd"> 2nd person you you your yours yourself</span>
<span class="sd"> 2nd person plural you you your yours yourselves</span>
<span class="sd"> ==================== ======= ======= ========== ========== ===========</span>
<span class="sd"> ... and this table (and vice versa).</span>
<span class="sd"> ==================== ======= ======= ========== ========== ===========</span>
<span class="sd"> 3rd person Subject Object Possessive Possessive Reflexive</span>
<span class="sd"> Pronoun Pronoun Adjective Pronoun Pronoun</span>
<span class="sd"> ==================== ======= ======= ========== ========== ===========</span>
<span class="sd"> 3rd person male he him his his himself</span>
<span class="sd"> 3rd person female she her her hers herself</span>
<span class="sd"> 3rd person neutral it it its itself</span>
<span class="sd"> 3rd person plural they them their theirs themselves</span>
<span class="sd"> ==================== ======= ======= ========== ========== ===========</span>
<span class="sd"> This system will examine `caller` for either a property or a callable `.gender` to</span>
<span class="sd"> get a default gender fallback (if not specified in the call). If a callable,</span>
<span class="sd"> `.gender` will be called without arguments and should return a string</span>
<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"> Args:</span>
<span class="sd"> pronoun (str): Input argument to parsed call. This can be any of the pronouns</span>
<span class="sd"> in the table above. If given in 1st/second form, they will be mappped to</span>
<span class="sd"> 3rd-person form for others viewing the message (but will need extra input</span>
<span class="sd"> via the `gender`, see below). If given on 3rd person form, this will be</span>
<span class="sd"> mapped to 2nd person form for `caller` unless `viewpoint` is specified</span>
<span class="sd"> in options.</span>
<span class="sd"> options (str, optional): A space- or comma-separated string detailing `pronoun_type`,</span>
<span class="sd"> `gender`/`plural` and/or `viewpoint` to help the mapper differentiate between</span>
<span class="sd"> non-unique cases (such as if `you` should become `him` or `they`).</span>
<span class="sd"> Allowed values are:</span>
<span class="sd"> - `subject pronoun`/`subject`/`sp` (I, you, he, they)</span>
<span class="sd"> - `object pronoun`/`object/`/`op` (me, you, him, them)</span>
<span class="sd"> - `possessive adjective`/`adjective`/`pa` (my, your, his, their)</span>
<span class="sd"> - `possessive pronoun`/`pronoun`/`pp` (mine, yours, his, theirs)</span>
<span class="sd"> - `male`/`m`</span>
<span class="sd"> - `female`/`f`</span>
<span class="sd"> - `neutral`/`n`</span>
<span class="sd"> - `plural`/`p`</span>
<span class="sd"> - `1st person`/`1st`/`1`</span>
<span class="sd"> - `2nd person`/`2nd`/`2`</span>
<span class="sd"> - `3rd person`/`3rd`/`3`</span>
<span class="sd"> Keyword Args:</span>
<span class="sd"> caller (Object): The object creating the string. If this has a property &#39;gender&#39;,</span>
<span class="sd"> it will be checked for a string &#39;male/female/neutral&#39; to determine</span>
<span class="sd"> the 3rd person gender (but if `pronoun_type` contains a gender</span>
<span class="sd"> component, that takes precedence). Provided automatically to the</span>
<span class="sd"> funcparser.</span>
<span class="sd"> receiver (Object): The recipient of the string. This being the same as</span>
<span class="sd"> `caller` or not helps determine 2nd vs 3rd-person forms. This is</span>
<span class="sd"> provided automatically by the funcparser.</span>
<span class="sd"> capitalize (bool): The input retains its capitalization. If this is set the output is</span>
<span class="sd"> always capitalized.</span>
<span class="sd"> Examples:</span>
<span class="sd"> ====================== ============= ===========</span>
<span class="sd"> Input caller sees others see</span>
<span class="sd"> ====================== ============= ===========</span>
<span class="sd"> $pron(I, m) I he</span>
<span class="sd"> $pron(you,fo) you her</span>
<span class="sd"> $pron(yourself) yourself itself</span>
<span class="sd"> $pron(its) your its</span>
<span class="sd"> $pron(you,op,p) you them</span>
<span class="sd"> ====================== ============= ===========</span>
<span class="sd"> Notes:</span>
<span class="sd"> There is no option to specify reflexive pronouns since they are all unique</span>
<span class="sd"> and the mapping can always be auto-detected.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">args</span><span class="p">:</span>
<span class="k">return</span> <span class="s1">&#39;&#39;</span>
<span class="n">pronoun</span><span class="p">,</span> <span class="o">*</span><span class="n">options</span> <span class="o">=</span> <span class="n">args</span>
<span class="c1"># options is either multiple args or a space-separated string</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">options</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
<span class="n">options</span> <span class="o">=</span> <span class="n">options</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="c1"># default differentiators</span>
<span class="n">default_pronoun_type</span> <span class="o">=</span> <span class="s2">&quot;subject pronoun&quot;</span>
<span class="n">default_gender</span> <span class="o">=</span> <span class="s2">&quot;neutral&quot;</span>
<span class="n">default_viewpoint</span> <span class="o">=</span> <span class="s2">&quot;2nd person&quot;</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">&quot;gender&quot;</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="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>
<span class="k">if</span> <span class="s2">&quot;viewpoint&quot;</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
<span class="c1"># passed into FuncParser initialization</span>
<span class="n">default_viewpoint</span> <span class="o">=</span> <span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;viewpoint&quot;</span><span class="p">]</span>
<span class="n">pronoun_1st_or_2nd_person</span><span class="p">,</span> <span class="n">pronoun_3rd_person</span> <span class="o">=</span> <span class="n">pronoun_to_viewpoints</span><span class="p">(</span>
<span class="n">pronoun</span><span class="p">,</span> <span class="n">options</span><span class="p">,</span>
<span class="n">pronoun_type</span><span class="o">=</span><span class="n">default_pronoun_type</span><span class="p">,</span> <span class="n">gender</span><span class="o">=</span><span class="n">default_gender</span><span class="p">,</span> <span class="n">viewpoint</span><span class="o">=</span><span class="n">default_viewpoint</span><span class="p">)</span>
<span class="k">if</span> <span class="n">capitalize</span><span class="p">:</span>
<span class="n">pronoun_1st_or_2nd_person</span> <span class="o">=</span> <span class="n">pronoun_1st_or_2nd_person</span><span class="o">.</span><span class="n">capitalize</span><span class="p">()</span>
<span class="n">pronoun_3rd_person</span> <span class="o">=</span> <span class="n">pronoun_3rd_person</span><span class="o">.</span><span class="n">capitalize</span><span class="p">()</span>
<span class="k">return</span> <span class="n">pronoun_1st_or_2nd_person</span> <span class="k">if</span> <span class="n">caller</span> <span class="o">==</span> <span class="n">receiver</span> <span class="k">else</span> <span class="n">pronoun_3rd_person</span></div>
<div class="viewcode-block" id="funcparser_callable_pronoun_capitalize"><a class="viewcode-back" href="../../../api/evennia.utils.funcparser.html#evennia.utils.funcparser.funcparser_callable_pronoun_capitalize">[docs]</a><span class="k">def</span> <span class="nf">funcparser_callable_pronoun_capitalize</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">True</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Usage: $Pron(word) - always maps to a capitalized word.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">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="n">caller</span><span class="p">,</span> <span class="n">receiver</span><span class="o">=</span><span class="n">receiver</span><span class="p">,</span> <span class="n">capitalize</span><span class="o">=</span><span class="n">capitalize</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></div>
<span class="c1"># these are made available as callables by adding &#39;evennia.utils.funcparser&#39; as</span>
<span class="c1"># a callable-path when initializing the FuncParser.</span>
@ -1220,8 +1363,12 @@
<span class="n">ACTOR_STANCE_CALLABLES</span> <span class="o">=</span> <span class="p">{</span>
<span class="c1"># requires `you`, `receiver` and `mapping` to be passed into parser</span>
<span class="s2">&quot;you&quot;</span><span class="p">:</span> <span class="n">funcparser_callable_you</span><span class="p">,</span>
<span class="s2">&quot;You&quot;</span><span class="p">:</span> <span class="n">funcparser_callable_You</span><span class="p">,</span>
<span class="s2">&quot;You&quot;</span><span class="p">:</span> <span class="n">funcparser_callable_you_capitalize</span><span class="p">,</span>
<span class="s2">&quot;obj&quot;</span><span class="p">:</span> <span class="n">funcparser_callable_you</span><span class="p">,</span>
<span class="s2">&quot;Obj&quot;</span><span class="p">:</span> <span class="n">funcparser_callable_you_capitalize</span><span class="p">,</span>
<span class="s2">&quot;conj&quot;</span><span class="p">:</span> <span class="n">funcparser_callable_conjugate</span><span class="p">,</span>
<span class="s2">&quot;pron&quot;</span><span class="p">:</span> <span class="n">funcparser_callable_pronoun</span><span class="p">,</span>
<span class="s2">&quot;Pron&quot;</span><span class="p">:</span> <span class="n">funcparser_callable_pronoun_capitalize</span><span class="p">,</span>
<span class="p">}</span>
</pre></div>

View file

@ -48,6 +48,7 @@
<span class="sd">It also supplies some useful methods to convert between</span>
<span class="sd">in-mud time and real-world time as well allows to get the</span>
<span class="sd">total runtime of the server and the current uptime.</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="kn">import</span> <span class="nn">time</span>
@ -288,8 +289,11 @@
<span class="sd"> script (Script): The created Script handling the sceduling.</span>
<span class="sd"> Examples:</span>
<span class="sd"> schedule(func, min=5, sec=0) # Will call 5 minutes past the next (in-game) hour.</span>
<span class="sd"> schedule(func, hour=2, min=30, sec=0) # Will call the next (in-game) day at 02:30.</span>
<span class="sd"> ::</span>
<span class="sd"> schedule(func, min=5, sec=0) # Will call 5 minutes past the next (in-game) hour.</span>
<span class="sd"> schedule(func, hour=2, min=30, sec=0) # Will call the next (in-game) day at 02:30.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">seconds</span> <span class="o">=</span> <span class="n">real_seconds_until</span><span class="p">(</span><span class="n">sec</span><span class="o">=</span><span class="n">sec</span><span class="p">,</span> <span class="nb">min</span><span class="o">=</span><span class="nb">min</span><span class="p">,</span> <span class="n">hour</span><span class="o">=</span><span class="n">hour</span><span class="p">,</span> <span class="n">day</span><span class="o">=</span><span class="n">day</span><span class="p">,</span> <span class="n">month</span><span class="o">=</span><span class="n">month</span><span class="p">,</span> <span class="n">year</span><span class="o">=</span><span class="n">year</span><span class="p">)</span>
<span class="n">script</span> <span class="o">=</span> <span class="n">create_script</span><span class="p">(</span>

View file

@ -2672,6 +2672,43 @@
<span class="n">txt</span> <span class="o">=</span> <span class="n">strip_tags</span><span class="p">(</span><span class="n">txt</span><span class="p">)</span>
<span class="n">txt</span> <span class="o">=</span> <span class="n">_STRIP_UNSAFE_TOKENS</span><span class="p">(</span><span class="n">txt</span><span class="p">)</span>
<span class="k">return</span> <span class="n">txt</span></div>
<div class="viewcode-block" id="copy_word_case"><a class="viewcode-back" href="../../../api/evennia.utils.utils.html#evennia.commands.default.building.copy_word_case">[docs]</a><span class="k">def</span> <span class="nf">copy_word_case</span><span class="p">(</span><span class="n">base_word</span><span class="p">,</span> <span class="n">new_word</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Converts a word to use the same capitalization as a first word.</span>
<span class="sd"> Args:</span>
<span class="sd"> base_word (str): A word to get the capitalization from.</span>
<span class="sd"> new_word (str): A new word to capitalize in the same way as `base_word`.</span>
<span class="sd"> Returns:</span>
<span class="sd"> str: The `new_word` with capitalization matching the first word.</span>
<span class="sd"> Notes:</span>
<span class="sd"> This is meant for words. Longer sentences may get unexpected results.</span>
<span class="sd"> If the two words have a mix of capital/lower letters _and_ `new_word`</span>
<span class="sd"> is longer than `base_word`, the excess will retain its original case.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="c1"># Word</span>
<span class="k">if</span> <span class="n">base_word</span><span class="o">.</span><span class="n">istitle</span><span class="p">():</span>
<span class="k">return</span> <span class="n">new_word</span><span class="o">.</span><span class="n">title</span><span class="p">()</span>
<span class="c1"># word</span>
<span class="k">elif</span> <span class="n">base_word</span><span class="o">.</span><span class="n">islower</span><span class="p">():</span>
<span class="k">return</span> <span class="n">new_word</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
<span class="c1"># WORD</span>
<span class="k">elif</span> <span class="n">base_word</span><span class="o">.</span><span class="n">isupper</span><span class="p">():</span>
<span class="k">return</span> <span class="n">new_word</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span>
<span class="k">else</span><span class="p">:</span>
<span class="c1"># WorD - a mix. Handle each character</span>
<span class="n">maxlen</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">base_word</span><span class="p">)</span>
<span class="n">shared</span><span class="p">,</span> <span class="n">excess</span> <span class="o">=</span> <span class="n">new_word</span><span class="p">[:</span><span class="n">maxlen</span><span class="p">],</span> <span class="n">new_word</span><span class="p">[</span><span class="n">maxlen</span> <span class="o">-</span> <span class="mi">1</span><span class="p">:]</span>
<span class="k">return</span> <span class="s2">&quot;&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">char</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="k">if</span> <span class="n">base_word</span><span class="p">[</span><span class="n">ic</span><span class="p">]</span><span class="o">.</span><span class="n">isupper</span><span class="p">()</span> <span class="k">else</span> <span class="n">char</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
<span class="k">for</span> <span class="n">ic</span><span class="p">,</span> <span class="n">char</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">new_word</span><span class="p">))</span> <span class="o">+</span> <span class="n">excess</span></div>
</pre></div>
<div class="clearer"></div>

View file

@ -0,0 +1,667 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>evennia.utils.verb_conjugation.pronouns &#8212; Evennia 1.0-dev documentation</title>
<link rel="stylesheet" href="../../../../_static/nature.css" type="text/css" />
<link rel="stylesheet" href="../../../../_static/pygments.css" type="text/css" />
<script id="documentation_options" data-url_root="../../../../" src="../../../../_static/documentation_options.js"></script>
<script src="../../../../_static/jquery.js"></script>
<script src="../../../../_static/underscore.js"></script>
<script src="../../../../_static/doctools.js"></script>
<script src="../../../../_static/language_data.js"></script>
<script async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>
<script type="text/x-mathjax-config">MathJax.Hub.Config({"tex2jax": {"processClass": "tex2jax_process|mathjax_process|math|output_area"}})</script>
<link rel="shortcut icon" href="../../../../_static/favicon.ico"/>
<link rel="index" title="Index" href="../../../../genindex.html" />
<link rel="search" title="Search" href="../../../../search.html" />
</head><body>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../../../../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="../../../../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="nav-item nav-item-0"><a href="../../../../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../../../index.html" >Module code</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="../../../evennia.html" accesskey="U">evennia</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">evennia.utils.verb_conjugation.pronouns</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<h1>Source code for evennia.utils.verb_conjugation.pronouns</h1><div class="highlight"><pre>
<span></span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd">English pronoun mapping between 1st/2nd person and 3rd person perspective (and vice-versa).</span>
<span class="sd">This file is released under the Evennia regular BSD License.</span>
<span class="sd">(Griatch 2021)</span>
<span class="sd">Pronouns are words you use instead of a proper name, such as &#39;him&#39;, &#39;herself&#39;, &#39;theirs&#39; etc. These</span>
<span class="sd">look different depending on who sees the outgoing string. This mapping maps between 1st/2nd case and</span>
<span class="sd">the 3rd person case and back. In some cases, the mapping is not unique; it is assumed the system can</span>
<span class="sd">differentiate between the options in some other way.</span>
<span class="sd">==================== ======= ======== ========== ========== ===========</span>
<span class="sd">viewpoint/pronouns Subject Object Possessive Possessive Reflexive</span>
<span class="sd"> Pronoun Pronoun Adjective Pronoun Pronoun</span>
<span class="sd">==================== ======= ======== ========== ========== ===========</span>
<span class="sd">1st person I me my mine myself</span>
<span class="sd">1st person plural we us our ours ourselves</span>
<span class="sd">2nd person you you your yours yourself</span>
<span class="sd">2nd person plural you you your yours yourselves</span>
<span class="sd">3rd person male he him his his himself</span>
<span class="sd">3rd person female she her her hers herself</span>
<span class="sd">3rd person neutral it it its theirs* itself</span>
<span class="sd">3rd person plural they them their theirs themselves</span>
<span class="sd">==================== ======= ======== ========== ========== ===========</span>
<span class="sd">&gt; `*`) Not formally used, we use `theirs` here as a filler.</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="kn">import</span> <span class="n">copy_word_case</span>
<span class="n">DEFAULT_PRONOUN_TYPE</span> <span class="o">=</span> <span class="s2">&quot;object_pronoun&quot;</span>
<span class="n">DEFAULT_VIEWPOINT</span> <span class="o">=</span> <span class="s2">&quot;2nd person&quot;</span>
<span class="n">DEFAULT_GENDER</span> <span class="o">=</span> <span class="s2">&quot;neutral&quot;</span>
<span class="n">PRONOUN_MAPPING</span> <span class="o">=</span> <span class="p">{</span>
<span class="c1"># 1st/2nd person -&gt; 3rd person mappings</span>
<span class="s2">&quot;I&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;subject pronoun&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;3rd person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;male&quot;</span><span class="p">:</span> <span class="s2">&quot;he&quot;</span><span class="p">,</span>
<span class="s2">&quot;female&quot;</span><span class="p">:</span> <span class="s2">&quot;she&quot;</span><span class="p">,</span>
<span class="s2">&quot;neutral&quot;</span><span class="p">:</span> <span class="s2">&quot;it&quot;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="s2">&quot;me&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;object pronoun&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;3rd person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;male&quot;</span><span class="p">:</span> <span class="s2">&quot;him&quot;</span><span class="p">,</span>
<span class="s2">&quot;female&quot;</span><span class="p">:</span> <span class="s2">&quot;her&quot;</span><span class="p">,</span>
<span class="s2">&quot;neutral&quot;</span><span class="p">:</span> <span class="s2">&quot;it&quot;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="s2">&quot;my&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;possessive adjective&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;3rd person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;male&quot;</span><span class="p">:</span> <span class="s2">&quot;his&quot;</span><span class="p">,</span>
<span class="s2">&quot;female&quot;</span><span class="p">:</span> <span class="s2">&quot;her&quot;</span><span class="p">,</span>
<span class="s2">&quot;neutral&quot;</span><span class="p">:</span> <span class="s2">&quot;its&quot;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="s2">&quot;mine&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;possessive pronoun&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;3rd person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;male&quot;</span><span class="p">:</span> <span class="s2">&quot;his&quot;</span><span class="p">,</span>
<span class="s2">&quot;female&quot;</span><span class="p">:</span> <span class="s2">&quot;hers&quot;</span><span class="p">,</span>
<span class="s2">&quot;neutral&quot;</span><span class="p">:</span> <span class="s2">&quot;theirs&quot;</span><span class="p">,</span> <span class="c1"># colloqial,</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="s2">&quot;myself&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;reflexive_pronoun&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;3rd person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;male&quot;</span><span class="p">:</span> <span class="s2">&quot;himself&quot;</span><span class="p">,</span>
<span class="s2">&quot;female&quot;</span><span class="p">:</span> <span class="s2">&quot;herself&quot;</span><span class="p">,</span>
<span class="s2">&quot;neutral&quot;</span><span class="p">:</span> <span class="s2">&quot;itself&quot;</span><span class="p">,</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;themselves&quot;</span><span class="p">,</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="s2">&quot;you&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;subject pronoun&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;3rd person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;male&quot;</span><span class="p">:</span> <span class="s2">&quot;he&quot;</span><span class="p">,</span>
<span class="s2">&quot;female&quot;</span><span class="p">:</span> <span class="s2">&quot;she&quot;</span><span class="p">,</span>
<span class="s2">&quot;neutral&quot;</span><span class="p">:</span> <span class="s2">&quot;it&quot;</span><span class="p">,</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;they&quot;</span><span class="p">,</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="s2">&quot;object pronoun&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;3rd person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;male&quot;</span><span class="p">:</span> <span class="s2">&quot;him&quot;</span><span class="p">,</span>
<span class="s2">&quot;female&quot;</span><span class="p">:</span> <span class="s2">&quot;her&quot;</span><span class="p">,</span>
<span class="s2">&quot;neutral&quot;</span><span class="p">:</span> <span class="s2">&quot;it&quot;</span><span class="p">,</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;them&quot;</span><span class="p">,</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="s2">&quot;your&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;possessive adjective&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;3rd person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;male&quot;</span><span class="p">:</span> <span class="s2">&quot;his&quot;</span><span class="p">,</span>
<span class="s2">&quot;female&quot;</span><span class="p">:</span> <span class="s2">&quot;her&quot;</span><span class="p">,</span>
<span class="s2">&quot;neutral&quot;</span><span class="p">:</span> <span class="s2">&quot;its&quot;</span><span class="p">,</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;their&quot;</span><span class="p">,</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="s2">&quot;yours&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;possessive pronoun&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;3rd person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;male&quot;</span><span class="p">:</span> <span class="s2">&quot;his&quot;</span><span class="p">,</span>
<span class="s2">&quot;female&quot;</span><span class="p">:</span> <span class="s2">&quot;hers&quot;</span><span class="p">,</span>
<span class="s2">&quot;neutral&quot;</span><span class="p">:</span> <span class="s2">&quot;theirs&quot;</span><span class="p">,</span> <span class="c1"># colloqial</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;theirs&quot;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="s2">&quot;yourself&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;reflexive_pronoun&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;3rd person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;male&quot;</span><span class="p">:</span> <span class="s2">&quot;himself&quot;</span><span class="p">,</span>
<span class="s2">&quot;female&quot;</span><span class="p">:</span> <span class="s2">&quot;herself&quot;</span><span class="p">,</span>
<span class="s2">&quot;neutral&quot;</span><span class="p">:</span> <span class="s2">&quot;itself&quot;</span><span class="p">,</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="s2">&quot;we&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;subject pronoun&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;3rd person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;they&quot;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="s2">&quot;us&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;object pronoun&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;3rd person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;them&quot;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="s2">&quot;our&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;possessive adjective&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;3rd person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;their&quot;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="s2">&quot;ours&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;possessive pronoun&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;3rd person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;theirs&quot;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="s2">&quot;ourselves&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;reflexive pronoun&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;3rd person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;themselves&quot;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="s2">&quot;ours&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;possessive pronoun&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;3rd person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;theirs&quot;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="s2">&quot;ourselves&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;reflexive pronoun&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;3rd person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;themselves&quot;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="s2">&quot;yourselves&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;reflexive_pronoun&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;3rd person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;themselves&quot;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="c1"># 3rd person to 1st/second person mappings</span>
<span class="s2">&quot;he&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;subject pronoun&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;1st person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;neutral&quot;</span><span class="p">:</span> <span class="s2">&quot;I&quot;</span><span class="p">,</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;we&quot;</span> <span class="c1"># pluralis majestatis</span>
<span class="p">},</span>
<span class="s2">&quot;2nd person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;neutral&quot;</span><span class="p">:</span> <span class="s2">&quot;you&quot;</span><span class="p">,</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;you&quot;</span> <span class="c1"># pluralis majestatis</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="s2">&quot;him&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;object pronoun&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;1st person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;neutral&quot;</span><span class="p">:</span> <span class="s2">&quot;me&quot;</span><span class="p">,</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;us&quot;</span> <span class="c1"># pluralis majestatis</span>
<span class="p">},</span>
<span class="s2">&quot;2nd person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;neutral&quot;</span><span class="p">:</span> <span class="s2">&quot;you&quot;</span><span class="p">,</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;you&quot;</span> <span class="c1"># pluralis majestatis</span>
<span class="p">},</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="s2">&quot;his&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;possessive adjective&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;1st person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;neutral&quot;</span><span class="p">:</span> <span class="s2">&quot;my&quot;</span><span class="p">,</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;our&quot;</span> <span class="c1"># pluralis majestatis</span>
<span class="p">},</span>
<span class="s2">&quot;2nd person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;neutral&quot;</span><span class="p">:</span> <span class="s2">&quot;your&quot;</span><span class="p">,</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;your&quot;</span> <span class="c1"># pluralis majestatis</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="s2">&quot;possessive pronoun&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;1st person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;neutral&quot;</span><span class="p">:</span> <span class="s2">&quot;mine&quot;</span><span class="p">,</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;ours&quot;</span> <span class="c1"># pluralis majestatis</span>
<span class="p">},</span>
<span class="s2">&quot;2nd person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;neutral&quot;</span><span class="p">:</span> <span class="s2">&quot;yours&quot;</span><span class="p">,</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;yours&quot;</span> <span class="c1"># pluralis majestatis</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="s2">&quot;himself&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;reflexive pronoun&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;1st person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;neutral&quot;</span><span class="p">:</span> <span class="s2">&quot;myself&quot;</span><span class="p">,</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;ourselves&quot;</span> <span class="c1"># pluralis majestatis</span>
<span class="p">},</span>
<span class="s2">&quot;2nd person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;neutral&quot;</span><span class="p">:</span> <span class="s2">&quot;yours&quot;</span><span class="p">,</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;yours&quot;</span> <span class="c1"># pluralis majestatis</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="p">},</span>
<span class="s2">&quot;she&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;subject pronoun&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;1st person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;neutral&quot;</span><span class="p">:</span> <span class="s2">&quot;I&quot;</span><span class="p">,</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;you&quot;</span> <span class="c1"># pluralis majestatis</span>
<span class="p">},</span>
<span class="s2">&quot;2nd person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;neutral&quot;</span><span class="p">:</span> <span class="s2">&quot;you&quot;</span><span class="p">,</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;we&quot;</span> <span class="c1"># pluralis majestatis</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="s2">&quot;her&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;object pronoun&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;1st person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;neutral&quot;</span><span class="p">:</span> <span class="s2">&quot;me&quot;</span><span class="p">,</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;us&quot;</span> <span class="c1"># pluralis majestatis</span>
<span class="p">},</span>
<span class="s2">&quot;2nd person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;neutral&quot;</span><span class="p">:</span> <span class="s2">&quot;you&quot;</span><span class="p">,</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;you&quot;</span> <span class="c1"># pluralis majestatis</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="s2">&quot;possessive adjective&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;1st person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;neutral&quot;</span><span class="p">:</span> <span class="s2">&quot;my&quot;</span><span class="p">,</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;our&quot;</span> <span class="c1"># pluralis majestatis</span>
<span class="p">},</span>
<span class="s2">&quot;2nd person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;neutral&quot;</span><span class="p">:</span> <span class="s2">&quot;your&quot;</span><span class="p">,</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;your&quot;</span> <span class="c1"># pluralis majestatis</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="p">},</span>
<span class="s2">&quot;hers&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;possessive pronoun&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;1st person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;neutral&quot;</span><span class="p">:</span> <span class="s2">&quot;mine&quot;</span><span class="p">,</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;ours&quot;</span> <span class="c1"># pluralis majestatis</span>
<span class="p">},</span>
<span class="s2">&quot;2nd person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;neutral&quot;</span><span class="p">:</span> <span class="s2">&quot;yours&quot;</span><span class="p">,</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;yours&quot;</span> <span class="c1"># pluralis majestatis</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="s2">&quot;herself&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;reflexive pronoun&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;1st person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;neutral&quot;</span><span class="p">:</span> <span class="s2">&quot;myself&quot;</span><span class="p">,</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;ourselves&quot;</span> <span class="c1"># pluralis majestatis</span>
<span class="p">},</span>
<span class="s2">&quot;2nd person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;neutral&quot;</span><span class="p">:</span> <span class="s2">&quot;yourself&quot;</span><span class="p">,</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;yourselves&quot;</span> <span class="c1"># pluralis majestatis</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="p">},</span>
<span class="s2">&quot;it&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;subject pronoun&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;1st person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;neutral&quot;</span><span class="p">:</span> <span class="s2">&quot;I&quot;</span><span class="p">,</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;we&quot;</span> <span class="c1"># pluralis majestatis</span>
<span class="p">},</span>
<span class="s2">&quot;2nd person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;neutral&quot;</span><span class="p">:</span> <span class="s2">&quot;you&quot;</span><span class="p">,</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;you&quot;</span> <span class="c1"># pluralis majestatis</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="s2">&quot;object pronoun&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;1st person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;neutral&quot;</span><span class="p">:</span> <span class="s2">&quot;me&quot;</span><span class="p">,</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;us&quot;</span> <span class="c1"># pluralis majestatis</span>
<span class="p">},</span>
<span class="s2">&quot;2nd person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;neutral&quot;</span><span class="p">:</span> <span class="s2">&quot;you&quot;</span><span class="p">,</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;you&quot;</span> <span class="c1"># pluralis majestatis</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="s2">&quot;its&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;possessive adjective&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;1st person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;neutral&quot;</span><span class="p">:</span> <span class="s2">&quot;my&quot;</span><span class="p">,</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;our&quot;</span> <span class="c1"># pluralis majestatis</span>
<span class="p">},</span>
<span class="s2">&quot;2nd person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;neutral&quot;</span><span class="p">:</span> <span class="s2">&quot;your&quot;</span><span class="p">,</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;your&quot;</span> <span class="c1"># pluralis majestatis</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="s2">&quot;theirs&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;possessive pronoun&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;1st person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;neutral&quot;</span><span class="p">:</span> <span class="s2">&quot;mine&quot;</span><span class="p">,</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;ours&quot;</span> <span class="c1"># pluralis majestatis</span>
<span class="p">},</span>
<span class="s2">&quot;2nd person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;neutral&quot;</span><span class="p">:</span> <span class="s2">&quot;yours&quot;</span><span class="p">,</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;yours&quot;</span> <span class="c1"># pluralis majestatis</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="s2">&quot;itself&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;reflexive pronoun&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;1st person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;neutral&quot;</span><span class="p">:</span> <span class="s2">&quot;myself&quot;</span><span class="p">,</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;ourselves&quot;</span> <span class="c1"># pluralis majestatis</span>
<span class="p">},</span>
<span class="s2">&quot;2nd person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;neutral&quot;</span><span class="p">:</span> <span class="s2">&quot;yourself&quot;</span><span class="p">,</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;yourselves&quot;</span> <span class="c1"># pluralis majestatis</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="p">},</span>
<span class="s2">&quot;they&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;subject pronoun&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;1st person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;we&quot;</span><span class="p">,</span>
<span class="p">},</span>
<span class="s2">&quot;2nd person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;you&quot;</span><span class="p">,</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="s2">&quot;them&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;object pronoun&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;1st person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;us&quot;</span><span class="p">,</span>
<span class="p">},</span>
<span class="s2">&quot;2nd person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;you&quot;</span><span class="p">,</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="s2">&quot;their&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;possessive adjective&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;1st person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;our&quot;</span><span class="p">,</span>
<span class="p">},</span>
<span class="s2">&quot;2nd person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;your&quot;</span><span class="p">,</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="s2">&quot;themselves&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;reflexive pronoun&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;1st person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;ourselves&quot;</span><span class="p">,</span>
<span class="p">},</span>
<span class="s2">&quot;2nd person&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;plural&quot;</span><span class="p">:</span> <span class="s2">&quot;yourselves&quot;</span><span class="p">,</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="n">ALIASES</span> <span class="o">=</span> <span class="p">{</span>
<span class="s2">&quot;m&quot;</span><span class="p">:</span> <span class="s2">&quot;male&quot;</span><span class="p">,</span>
<span class="s2">&quot;f&quot;</span><span class="p">:</span> <span class="s2">&quot;female&quot;</span><span class="p">,</span>
<span class="s2">&quot;n&quot;</span><span class="p">:</span> <span class="s2">&quot;neutral&quot;</span><span class="p">,</span>
<span class="s2">&quot;p&quot;</span><span class="p">:</span> <span class="s2">&quot;plural&quot;</span><span class="p">,</span>
<span class="s2">&quot;1st&quot;</span><span class="p">:</span> <span class="s2">&quot;1st person&quot;</span><span class="p">,</span>
<span class="s2">&quot;2nd&quot;</span><span class="p">:</span> <span class="s2">&quot;2nd person&quot;</span><span class="p">,</span>
<span class="s2">&quot;3rd&quot;</span><span class="p">:</span> <span class="s2">&quot;3rd person&quot;</span><span class="p">,</span>
<span class="s2">&quot;1&quot;</span><span class="p">:</span> <span class="s2">&quot;1st person&quot;</span><span class="p">,</span>
<span class="s2">&quot;2&quot;</span><span class="p">:</span> <span class="s2">&quot;2nd person&quot;</span><span class="p">,</span>
<span class="s2">&quot;3&quot;</span><span class="p">:</span> <span class="s2">&quot;3rd person&quot;</span><span class="p">,</span>
<span class="s2">&quot;s&quot;</span><span class="p">:</span> <span class="s2">&quot;subject pronoun&quot;</span><span class="p">,</span>
<span class="s2">&quot;sp&quot;</span><span class="p">:</span> <span class="s2">&quot;subject pronoun&quot;</span><span class="p">,</span>
<span class="s2">&quot;subject&quot;</span><span class="p">:</span> <span class="s2">&quot;subject pronoun&quot;</span><span class="p">,</span>
<span class="s2">&quot;op&quot;</span><span class="p">:</span> <span class="s2">&quot;object pronoun&quot;</span><span class="p">,</span>
<span class="s2">&quot;object&quot;</span><span class="p">:</span> <span class="s2">&quot;object pronoun&quot;</span><span class="p">,</span>
<span class="s2">&quot;pa&quot;</span><span class="p">:</span> <span class="s2">&quot;possessive adjective&quot;</span><span class="p">,</span>
<span class="s2">&quot;pp&quot;</span><span class="p">:</span> <span class="s2">&quot;possessive pronoun&quot;</span><span class="p">,</span>
<span class="p">}</span>
<span class="n">PRONOUN_TYPES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;subject pronoun&quot;</span><span class="p">,</span> <span class="s2">&quot;object pronoun&quot;</span><span class="p">,</span> <span class="s2">&quot;possessive adjective&quot;</span><span class="p">,</span>
<span class="s2">&quot;possessive pronoun&quot;</span><span class="p">,</span> <span class="s2">&quot;reflexive pronoun&quot;</span><span class="p">]</span>
<span class="n">VIEWPOINTS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;1st person&quot;</span><span class="p">,</span> <span class="s2">&quot;2nd person&quot;</span><span class="p">,</span> <span class="s2">&quot;3rd person&quot;</span><span class="p">]</span>
<span class="n">GENDERS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;male&quot;</span><span class="p">,</span> <span class="s2">&quot;female&quot;</span><span class="p">,</span> <span class="s2">&quot;neutral&quot;</span><span class="p">,</span> <span class="s2">&quot;plural&quot;</span><span class="p">]</span> <span class="c1"># including plural as a gender for simplicity</span>
<div class="viewcode-block" id="pronoun_to_viewpoints"><a class="viewcode-back" href="../../../../api/evennia.utils.verb_conjugation.pronouns.html#evennia.utils.verb_conjugation.pronouns.pronoun_to_viewpoints">[docs]</a><span class="k">def</span> <span class="nf">pronoun_to_viewpoints</span><span class="p">(</span><span class="n">pronoun</span><span class="p">,</span>
<span class="n">options</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">pronoun_type</span><span class="o">=</span><span class="s2">&quot;object_pronoun&quot;</span><span class="p">,</span>
<span class="n">gender</span><span class="o">=</span><span class="s2">&quot;neutral&quot;</span><span class="p">,</span> <span class="n">viewpoint</span><span class="o">=</span><span class="s2">&quot;2nd person&quot;</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Access function for determining the forms of a pronount from different viewpoints.</span>
<span class="sd"> Args:</span>
<span class="sd"> pronoun (str): A valid English pronoun, such as &#39;you&#39;, &#39;his&#39;, &#39;themselves&#39; etc.</span>
<span class="sd"> options (str or list, optional): A list or space-separated string of options to help</span>
<span class="sd"> the engine when there is no unique mapping to use. This could for example</span>
<span class="sd"> be &quot;2nd female&quot; (alias &#39;f&#39;) or &quot;possessive adjective&quot; (alias &#39;pa&#39; or &#39;a&#39;).</span>
<span class="sd"> pronoun_type (str, optional): An explicit object pronoun to separate cases where</span>
<span class="sd"> there is no unique mapping. Pronoun types defined in `options` take precedence.</span>
<span class="sd"> Values are</span>
<span class="sd"> - `subject pronoun`/`subject`/`sp` (I, you, he, they)</span>
<span class="sd"> - `object pronoun`/`object/`/`op` (me, you, him, them)</span>
<span class="sd"> - `possessive adjective`/`adjective`/`pa` (my, your, his, their)</span>
<span class="sd"> - `possessive pronoun`/`pronoun`/`pp` (mine, yours, his, theirs)</span>
<span class="sd"> gender (str, optional): Specific gender to use (plural counts a gender for this purpose).</span>
<span class="sd"> A gender specified in `options` takes precedence. Values and aliases are:</span>
<span class="sd"> - `male`/`m`</span>
<span class="sd"> - `female`/`f`</span>
<span class="sd"> - `neutral`/`n`</span>
<span class="sd"> - `plural`/`p`</span>
<span class="sd"> viewpoint (str, optional): A specified viewpoint of the one talking, to use</span>
<span class="sd"> when there is no unique mapping. A viewpoint given in `options` take</span>
<span class="sd"> precedence. Values and aliases are:</span>
<span class="sd"> - `1st person`/`1st`/`1`</span>
<span class="sd"> - `2nd person`/`2nd`/`2`</span>
<span class="sd"> - `3rd person`/`3rd`/`3`</span>
<span class="sd"> Returns:</span>
<span class="sd"> tuple: A tuple `(1st/2nd_person_pronoun, 3rd_person_pronoun)` to show to the one sending the</span>
<span class="sd"> string and others respectively. If pronoun is invalid, the word is returned verbatim.</span>
<span class="sd"> Note:</span>
<span class="sd"> The capitalization of the original word will be retained.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">pronoun</span><span class="p">:</span>
<span class="k">return</span> <span class="n">pronoun</span>
<span class="n">pronoun_lower</span> <span class="o">=</span> <span class="s2">&quot;I&quot;</span> <span class="k">if</span> <span class="n">pronoun</span> <span class="o">==</span> <span class="s2">&quot;I&quot;</span> <span class="k">else</span> <span class="n">pronoun</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
<span class="k">if</span> <span class="n">pronoun_lower</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">PRONOUN_MAPPING</span><span class="p">:</span>
<span class="k">return</span> <span class="n">pronoun</span>
<span class="c1"># differentiators</span>
<span class="k">if</span> <span class="n">pronoun_type</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">PRONOUN_TYPES</span><span class="p">:</span>
<span class="n">pronoun_type</span> <span class="o">=</span> <span class="n">DEFAULT_PRONOUN_TYPE</span>
<span class="k">if</span> <span class="n">viewpoint</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">VIEWPOINTS</span><span class="p">:</span>
<span class="n">viewpoint</span> <span class="o">=</span> <span class="n">DEFAULT_VIEWPOINT</span>
<span class="k">if</span> <span class="n">gender</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">GENDERS</span><span class="p">:</span>
<span class="n">gender</span> <span class="o">=</span> <span class="n">DEFAULT_GENDER</span>
<span class="k">if</span> <span class="n">options</span><span class="p">:</span>
<span class="c1"># option string/list will override the kwargs differentiators given</span>
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">options</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
<span class="n">options</span> <span class="o">=</span> <span class="n">options</span><span class="o">.</span><span class="n">split</span><span class="p">()</span>
<span class="n">options</span> <span class="o">=</span> <span class="p">[</span><span class="nb">str</span><span class="p">(</span><span class="n">part</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="n">options</span><span class="p">]</span>
<span class="n">options</span> <span class="o">=</span> <span class="p">[</span><span class="n">ALIASES</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">opt</span><span class="p">,</span> <span class="n">opt</span><span class="p">)</span> <span class="k">for</span> <span class="n">opt</span> <span class="ow">in</span> <span class="n">options</span><span class="p">]</span>
<span class="k">for</span> <span class="n">opt</span> <span class="ow">in</span> <span class="n">options</span><span class="p">:</span>
<span class="k">if</span> <span class="n">opt</span> <span class="ow">in</span> <span class="n">PRONOUN_TYPES</span><span class="p">:</span>
<span class="n">pronoun_type</span> <span class="o">=</span> <span class="n">opt</span>
<span class="k">elif</span> <span class="n">opt</span> <span class="ow">in</span> <span class="n">VIEWPOINTS</span><span class="p">:</span>
<span class="n">viewpoint</span> <span class="o">=</span> <span class="n">opt</span>
<span class="k">elif</span> <span class="n">opt</span> <span class="ow">in</span> <span class="n">GENDERS</span><span class="p">:</span>
<span class="n">gender</span> <span class="o">=</span> <span class="n">opt</span>
<span class="c1"># step down into the mapping, using differentiators as needed</span>
<span class="n">pronoun_types</span> <span class="o">=</span> <span class="n">PRONOUN_MAPPING</span><span class="p">[</span><span class="n">pronoun_lower</span><span class="p">]</span>
<span class="c1"># this has one or more pronoun-types</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">pronoun_types</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
<span class="n">pronoun_type</span><span class="p">,</span> <span class="n">viewpoints</span> <span class="o">=</span> <span class="nb">next</span><span class="p">(</span><span class="nb">iter</span><span class="p">(</span><span class="n">pronoun_types</span><span class="o">.</span><span class="n">items</span><span class="p">()))</span>
<span class="k">elif</span> <span class="n">pronoun_type</span> <span class="ow">in</span> <span class="n">pronoun_types</span><span class="p">:</span>
<span class="n">viewpoints</span> <span class="o">=</span> <span class="n">pronoun_types</span><span class="p">[</span><span class="n">pronoun_type</span><span class="p">]</span>
<span class="k">elif</span> <span class="n">DEFAULT_PRONOUN_TYPE</span> <span class="ow">in</span> <span class="n">pronoun_types</span><span class="p">:</span>
<span class="n">pronoun_type</span> <span class="o">=</span> <span class="n">DEFAULT_PRONOUN_TYPE</span>
<span class="n">viewpoints</span> <span class="o">=</span> <span class="n">pronoun_types</span><span class="p">[</span><span class="n">pronoun_type</span><span class="p">]</span>
<span class="k">else</span><span class="p">:</span>
<span class="c1"># not enough info - grab the first of the mappings</span>
<span class="n">pronoun_type</span><span class="p">,</span> <span class="n">viewpoints</span> <span class="o">=</span> <span class="nb">next</span><span class="p">(</span><span class="nb">iter</span><span class="p">(</span><span class="n">pronoun_types</span><span class="o">.</span><span class="n">items</span><span class="p">()))</span>
<span class="c1"># we have one or more viewpoints at this point</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">viewpoints</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
<span class="n">viewpoint</span><span class="p">,</span> <span class="n">genders</span> <span class="o">=</span> <span class="nb">next</span><span class="p">(</span><span class="nb">iter</span><span class="p">(</span><span class="n">viewpoints</span><span class="o">.</span><span class="n">items</span><span class="p">()))</span>
<span class="k">elif</span> <span class="n">viewpoint</span> <span class="ow">in</span> <span class="n">viewpoints</span><span class="p">:</span>
<span class="n">genders</span> <span class="o">=</span> <span class="n">viewpoints</span><span class="p">[</span><span class="n">viewpoint</span><span class="p">]</span>
<span class="k">elif</span> <span class="n">DEFAULT_VIEWPOINT</span> <span class="ow">in</span> <span class="n">viewpoints</span><span class="p">:</span>
<span class="n">viewpoint</span> <span class="o">=</span> <span class="n">DEFAULT_VIEWPOINT</span>
<span class="n">genders</span> <span class="o">=</span> <span class="n">viewpoints</span><span class="p">[</span><span class="n">viewpoint</span><span class="p">]</span>
<span class="k">else</span><span class="p">:</span>
<span class="c1"># not enough info - grab first of mappings</span>
<span class="n">viewpoint</span><span class="p">,</span> <span class="n">genders</span> <span class="o">=</span> <span class="nb">next</span><span class="p">(</span><span class="nb">iter</span><span class="p">(</span><span class="n">viewpoints</span><span class="o">.</span><span class="n">items</span><span class="p">()))</span>
<span class="c1"># we have one or more possible genders (including plural forms)</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">genders</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
<span class="n">gender</span><span class="p">,</span> <span class="n">mapped_pronoun</span> <span class="o">=</span> <span class="nb">next</span><span class="p">(</span><span class="nb">iter</span><span class="p">(</span><span class="n">genders</span><span class="o">.</span><span class="n">items</span><span class="p">()))</span>
<span class="k">elif</span> <span class="n">gender</span> <span class="ow">in</span> <span class="n">genders</span><span class="p">:</span>
<span class="n">mapped_pronoun</span> <span class="o">=</span> <span class="n">genders</span><span class="p">[</span><span class="n">gender</span><span class="p">]</span>
<span class="k">elif</span> <span class="n">DEFAULT_GENDER</span> <span class="ow">in</span> <span class="n">genders</span><span class="p">:</span>
<span class="n">gender</span> <span class="o">=</span> <span class="n">DEFAULT_GENDER</span>
<span class="n">mapped_pronoun</span> <span class="o">=</span> <span class="n">genders</span><span class="p">[</span><span class="n">gender</span><span class="p">]</span>
<span class="k">else</span><span class="p">:</span>
<span class="c1"># not enough info - grab first mapping</span>
<span class="n">gender</span><span class="p">,</span> <span class="n">mapped_pronoun</span> <span class="o">=</span> <span class="nb">next</span><span class="p">(</span><span class="nb">iter</span><span class="p">(</span><span class="n">genders</span><span class="o">.</span><span class="n">items</span><span class="p">()))</span>
<span class="c1"># keep the same capitalization as the original</span>
<span class="k">if</span> <span class="n">pronoun</span> <span class="o">!=</span> <span class="s2">&quot;I&quot;</span><span class="p">:</span>
<span class="c1"># don&#39;t remap I, since this is always capitalized.</span>
<span class="n">mapped_pronoun</span> <span class="o">=</span> <span class="n">copy_word_case</span><span class="p">(</span><span class="n">pronoun</span><span class="p">,</span> <span class="n">mapped_pronoun</span><span class="p">)</span>
<span class="k">if</span> <span class="n">mapped_pronoun</span> <span class="o">==</span> <span class="s2">&quot;i&quot;</span><span class="p">:</span>
<span class="n">mapped_pronoun</span> <span class="o">=</span> <span class="n">mapped_pronoun</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span>
<span class="k">if</span> <span class="n">viewpoint</span> <span class="o">==</span> <span class="s2">&quot;3rd person&quot;</span><span class="p">:</span>
<span class="c1"># the remapped viewpoing is in 3rd person, meaning the ingoing viewpoing</span>
<span class="c1"># must have been 1st or 2nd person.</span>
<span class="k">return</span> <span class="n">pronoun</span><span class="p">,</span> <span class="n">mapped_pronoun</span>
<span class="k">else</span><span class="p">:</span>
<span class="c1"># the remapped viewpoint is 1st or 2nd person, so ingoing must have been</span>
<span class="c1"># in 3rd person form.</span>
<span class="k">return</span> <span class="n">mapped_pronoun</span><span class="p">,</span> <span class="n">pronoun</span></div>
</pre></div>
<div class="clearer"></div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<p class="logo"><a href="../../../../index.html">
<img class="logo" src="../../../../_static/evennia_logo.png" alt="Logo"/>
</a></p>
<div id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../../../../search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" />
<input type="submit" value="Go" />
</form>
</div>
</div>
<script>$('#searchbox').show(0);</script><h3>Links</h3>
<ul>
<li><a href="https://www.evennia.com">Home page</a> </li>
<li><a href="https://github.com/evennia/evennia">Evennia Github</a> </li>
<li><a href="http://games.evennia.com">Game Index</a> </li>
<li>
<a href="https://discord.gg/AJJpcRUhtF">Discord</a> -
<a href="https://github.com/evennia/evennia/discussions">Discussions</a> -
<a href="https://evennia.blogspot.com/">Blog</a>
</li>
</ul>
<h3>Versions</h3>
<ul>
<li><a href="pronouns.html">1.0-dev (develop branch)</a></li>
<li><a href="../../../../../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../../../../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="../../../../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="nav-item nav-item-0"><a href="../../../../index.html">Evennia 1.0-dev</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../../../index.html" >Module code</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="../../../evennia.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">evennia.utils.verb_conjugation.pronouns</a></li>
</ul>
<div class="develop">develop branch</div>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.2.1.
</div>
</body>
</html>

View file

@ -49,7 +49,7 @@
<span class="kn">from</span> <span class="nn">parameterized</span> <span class="kn">import</span> <span class="n">parameterized</span>
<span class="kn">from</span> <span class="nn">django.test</span> <span class="kn">import</span> <span class="n">TestCase</span>
<span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">conjugate</span>
<span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">conjugate</span><span class="p">,</span> <span class="n">pronouns</span>
<div class="viewcode-block" id="TestVerbConjugate"><a class="viewcode-back" href="../../../../api/evennia.utils.verb_conjugation.tests.html#evennia.utils.verb_conjugation.tests.TestVerbConjugate">[docs]</a><span class="k">class</span> <span class="nc">TestVerbConjugate</span><span class="p">(</span><span class="n">TestCase</span><span class="p">):</span>
@ -283,6 +283,52 @@
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">expected</span><span class="p">,</span> <span class="n">conjugate</span><span class="o">.</span><span class="n">verb_actor_stance_components</span><span class="p">(</span><span class="n">verb</span><span class="p">))</span></div>
<div class="viewcode-block" id="TestPronounMapping"><a class="viewcode-back" href="../../../../api/evennia.utils.verb_conjugation.tests.html#evennia.utils.verb_conjugation.tests.TestPronounMapping">[docs]</a><span class="k">class</span> <span class="nc">TestPronounMapping</span><span class="p">(</span><span class="n">TestCase</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Test pronoun viewpoint mapping</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="nd">@parameterized</span><span class="o">.</span><span class="n">expand</span><span class="p">([</span>
<span class="p">(</span><span class="s2">&quot;you&quot;</span><span class="p">,</span> <span class="s2">&quot;m&quot;</span><span class="p">,</span> <span class="s2">&quot;you&quot;</span><span class="p">,</span> <span class="s2">&quot;he&quot;</span><span class="p">),</span>
<span class="p">(</span><span class="s2">&quot;you&quot;</span><span class="p">,</span> <span class="s2">&quot;f op&quot;</span><span class="p">,</span> <span class="s2">&quot;you&quot;</span><span class="p">,</span> <span class="s2">&quot;her&quot;</span><span class="p">),</span>
<span class="p">(</span><span class="s2">&quot;I&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="s2">&quot;I&quot;</span><span class="p">,</span> <span class="s2">&quot;it&quot;</span><span class="p">),</span>
<span class="p">(</span><span class="s2">&quot;I&quot;</span><span class="p">,</span> <span class="s2">&quot;p&quot;</span><span class="p">,</span> <span class="s2">&quot;I&quot;</span><span class="p">,</span> <span class="s2">&quot;it&quot;</span><span class="p">),</span> <span class="c1"># plural is invalid</span>
<span class="p">(</span><span class="s2">&quot;I&quot;</span><span class="p">,</span> <span class="s2">&quot;m&quot;</span><span class="p">,</span> <span class="s2">&quot;I&quot;</span><span class="p">,</span> <span class="s2">&quot;he&quot;</span><span class="p">),</span>
<span class="p">(</span><span class="s2">&quot;Me&quot;</span><span class="p">,</span> <span class="s2">&quot;n&quot;</span><span class="p">,</span> <span class="s2">&quot;Me&quot;</span><span class="p">,</span> <span class="s2">&quot;It&quot;</span><span class="p">),</span>
<span class="p">(</span><span class="s2">&quot;your&quot;</span><span class="p">,</span> <span class="s2">&quot;p&quot;</span><span class="p">,</span> <span class="s2">&quot;your&quot;</span><span class="p">,</span> <span class="s2">&quot;their&quot;</span><span class="p">),</span>
<span class="p">(</span><span class="s2">&quot;ours&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="s2">&quot;ours&quot;</span><span class="p">,</span> <span class="s2">&quot;theirs&quot;</span><span class="p">),</span>
<span class="p">(</span><span class="s2">&quot;yourself&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="s2">&quot;yourself&quot;</span><span class="p">,</span> <span class="s2">&quot;itself&quot;</span><span class="p">),</span>
<span class="p">(</span><span class="s2">&quot;yourself&quot;</span><span class="p">,</span> <span class="s2">&quot;m&quot;</span><span class="p">,</span> <span class="s2">&quot;yourself&quot;</span><span class="p">,</span> <span class="s2">&quot;himself&quot;</span><span class="p">),</span>
<span class="p">(</span><span class="s2">&quot;yourself&quot;</span><span class="p">,</span> <span class="s2">&quot;f&quot;</span><span class="p">,</span> <span class="s2">&quot;yourself&quot;</span><span class="p">,</span> <span class="s2">&quot;herself&quot;</span><span class="p">),</span>
<span class="p">(</span><span class="s2">&quot;yourself&quot;</span><span class="p">,</span> <span class="s2">&quot;p&quot;</span><span class="p">,</span> <span class="s2">&quot;yourself&quot;</span><span class="p">,</span> <span class="s2">&quot;itself&quot;</span><span class="p">),</span> <span class="c1"># plural is invalid</span>
<span class="p">(</span><span class="s2">&quot;yourselves&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="s2">&quot;yourselves&quot;</span><span class="p">,</span> <span class="s2">&quot;themselves&quot;</span><span class="p">),</span>
<span class="p">(</span><span class="s2">&quot;he&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="s2">&quot;you&quot;</span><span class="p">,</span> <span class="s2">&quot;he&quot;</span><span class="p">),</span> <span class="c1"># assume 2nd person</span>
<span class="p">(</span><span class="s2">&quot;he&quot;</span><span class="p">,</span> <span class="s2">&quot;1&quot;</span><span class="p">,</span> <span class="s2">&quot;I&quot;</span><span class="p">,</span> <span class="s2">&quot;he&quot;</span><span class="p">),</span>
<span class="p">(</span><span class="s2">&quot;he&quot;</span><span class="p">,</span> <span class="s2">&quot;1 p&quot;</span><span class="p">,</span> <span class="s2">&quot;we&quot;</span><span class="p">,</span> <span class="s2">&quot;he&quot;</span><span class="p">),</span>
<span class="p">(</span><span class="s2">&quot;her&quot;</span><span class="p">,</span> <span class="s2">&quot;p&quot;</span><span class="p">,</span> <span class="s2">&quot;you&quot;</span><span class="p">,</span> <span class="s2">&quot;her&quot;</span><span class="p">),</span>
<span class="p">(</span><span class="s2">&quot;her&quot;</span><span class="p">,</span> <span class="s2">&quot;pa&quot;</span><span class="p">,</span> <span class="s2">&quot;your&quot;</span><span class="p">,</span> <span class="s2">&quot;her&quot;</span><span class="p">),</span>
<span class="p">(</span><span class="s2">&quot;their&quot;</span><span class="p">,</span> <span class="s2">&quot;pa&quot;</span><span class="p">,</span> <span class="s2">&quot;your&quot;</span><span class="p">,</span> <span class="s2">&quot;their&quot;</span><span class="p">),</span>
<span class="p">(</span><span class="s2">&quot;their&quot;</span><span class="p">,</span> <span class="s2">&quot;pa&quot;</span><span class="p">,</span> <span class="s2">&quot;your&quot;</span><span class="p">,</span> <span class="s2">&quot;their&quot;</span><span class="p">),</span>
<span class="p">(</span><span class="s2">&quot;itself&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="s2">&quot;yourself&quot;</span><span class="p">,</span> <span class="s2">&quot;itself&quot;</span><span class="p">),</span>
<span class="p">(</span><span class="s2">&quot;themselves&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="s2">&quot;yourselves&quot;</span><span class="p">,</span> <span class="s2">&quot;themselves&quot;</span><span class="p">),</span>
<span class="p">(</span><span class="s2">&quot;herself&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="s2">&quot;yourself&quot;</span><span class="p">,</span> <span class="s2">&quot;herself&quot;</span><span class="p">),</span>
<span class="p">])</span>
<span class="k">def</span> <span class="nf">test_mapping_with_options</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pronoun</span><span class="p">,</span> <span class="n">options</span><span class="p">,</span>
<span class="n">expected_1st_or_2nd_person</span><span class="p">,</span>
<span class="n">expected_3rd_person</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Test the pronoun mapper.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">received_1st_or_2nd_person</span><span class="p">,</span> <span class="n">received_3rd_person</span> <span class="o">=</span> <span class="p">(</span>
<span class="n">pronouns</span><span class="o">.</span><span class="n">pronoun_to_viewpoints</span><span class="p">(</span><span class="n">pronoun</span><span class="p">,</span> <span class="n">options</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="n">expected_1st_or_2nd_person</span><span class="p">,</span> <span class="n">received_1st_or_2nd_person</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">expected_3rd_person</span><span class="p">,</span> <span class="n">received_3rd_person</span><span class="p">)</span></div>
</pre></div>
<div class="clearer"></div>

View file

@ -237,6 +237,7 @@
<li><a href="evennia/utils/utils.html">evennia.utils.utils</a></li>
<li><a href="evennia/utils/validatorfuncs.html">evennia.utils.validatorfuncs</a></li>
<li><a href="evennia/utils/verb_conjugation/conjugate.html">evennia.utils.verb_conjugation.conjugate</a></li>
<li><a href="evennia/utils/verb_conjugation/pronouns.html">evennia.utils.verb_conjugation.pronouns</a></li>
<li><a href="evennia/utils/verb_conjugation/tests.html">evennia.utils.verb_conjugation.tests</a></li>
<li><a href="evennia/web/admin/accounts.html">evennia.web.admin.accounts</a></li>
<li><a href="evennia/web/admin/attributes.html">evennia.web.admin.attributes</a></li>