CINXE.COM
Module:gender and number - Wiktionary, the free dictionary
<!DOCTYPE html> <html class="client-nojs" lang="en" dir="ltr"> <head> <meta charset="UTF-8"> <title>Module:gender and number - Wiktionary, the free dictionary</title> <script>(function(){var className="client-js";var cookie=document.cookie.match(/(?:^|; )enwiktionarymwclientpreferences=([^;]+)/);if(cookie){cookie[1].split('%2C').forEach(function(pref){className=className.replace(new RegExp('(^| )'+pref.replace(/-clientpref-\w+$|[^\w-]+/g,'')+'-clientpref-\\w+( |$)'),'$1'+pref+'$2');});}document.documentElement.className=className;}());RLCONF={"wgBreakFrames":false,"wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"dmy","wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgRequestId":"7eda59ba-b690-46c0-b7df-6441675574ba","wgCanonicalNamespace":"Module","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":828,"wgPageName":"Module:gender_and_number","wgTitle":"gender and number","wgCurRevisionId":82297662,"wgRevisionId":82297662,"wgArticleId":3906346,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups": ["*"],"wgCategories":["Page generation modules"],"wgPageViewLanguage":"en","wgPageContentLanguage":"en","wgPageContentModel":"Scribunto","wgRelevantPageName":"Module:gender_and_number","wgRelevantArticleId":3906346,"wgIsProbablyEditable":false,"wgRelevantPageIsProbablyEditable":false,"wgRestrictionEdit":["templateeditor"],"wgRestrictionMove":["sysop"],"wgNoticeProject":"wiktionary","wgCiteReferencePreviewsActive":true,"wgMediaViewerOnClick":true,"wgMediaViewerEnabledByDefault":true,"wgVisualEditor":{"pageLanguageCode":"en","pageLanguageDir":"ltr","pageVariantFallbacks":"en"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":false,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":10000,"wgCentralAuthMobileDomain":false,"wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"interlanguage","wgULSisCompactLinksEnabled":true,"wgVector2022LanguageInHeader":false,"wgULSisLanguageSelectorEmpty":false,"wgWikibaseItemId":"Q30564497", "wgCheckUserClientHintsHeadersJsApi":["brands","architecture","bitness","fullVersionList","mobile","model","platform","platformVersion"]};RLSTATE={"ext.gadget.LanguagesAndScripts":"ready","ext.gadget.Palette":"ready","ext.gadget.Site":"ready","ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","ext.pygments":"ready","skins.vector.styles.legacy":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","codex-search-styles":"ready","ext.uls.interlanguage":"ready","wikibase.client.init":"ready","ext.wikimediaBadges":"ready"};RLPAGEMODULES=["ext.pygments.view","site","mediawiki.page.ready","mediawiki.toc","skins.vector.legacy.js","ext.centralNotice.geoIP","ext.centralNotice.startUp","ext.gadget.LegacyScripts","ext.gadget.DocTabs","ext.gadget.RevdelInfo","ext.gadget.PagePreviews","ext.gadget.Edittools","ext.gadget.defaultVisibilityToggles","ext.gadget.UnsupportedTitles", "ext.gadget.WiktGadgetPrefs","ext.urlShortener.toolbar","ext.centralauth.centralautologin","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.eventLogging","ext.wikimediaEvents","ext.navigationTiming","ext.uls.compactlinks","ext.uls.interface","ext.checkUser.clientHints","wikibase.sidebar.tracking"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/w/load.php?lang=en&modules=codex-search-styles%7Cext.pygments%2CwikimediaBadges%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cskins.vector.styles.legacy%7Cwikibase.client.init&only=styles&skin=vector"> <script async="" src="/w/load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=en&modules=ext.gadget.LanguagesAndScripts%2CPalette%2CSite&only=styles&skin=vector"> <link rel="stylesheet" href="/w/load.php?lang=en&modules=site.styles&only=styles&skin=vector"> <meta name="generator" content="MediaWiki 1.44.0-wmf.4"> <meta name="referrer" content="origin"> <meta name="referrer" content="origin-when-cross-origin"> <meta name="robots" content="max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta name="viewport" content="width=1120"> <meta property="og:site_name" content="Wiktionary"> <meta property="og:title" content="Module:gender and number - Wiktionary, the free dictionary"> <meta property="og:type" content="website"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//en.m.wiktionary.org/wiki/Module:gender_and_number"> <link rel="apple-touch-icon" href="/static/apple-touch/wiktionary/en.png"> <link rel="icon" href="/static/favicon/wiktionary/en.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="Wiktionary (en)"> <link rel="EditURI" type="application/rsd+xml" href="//en.wiktionary.org/w/api.php?action=rsd"> <link rel="canonical" href="https://en.wiktionary.org/wiki/Module:gender_and_number"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en"> <link rel="alternate" type="application/atom+xml" title="Wiktionary Atom feed" href="/w/index.php?title=Special:RecentChanges&feed=atom"> <link rel="dns-prefetch" href="//meta.wikimedia.org" /> <link rel="dns-prefetch" href="//login.wikimedia.org"> </head> <body class="skin-vector-legacy mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-828 ns-subject page-Module_gender_and_number rootpage-Module_gender_and_number skin-vector action-view"><div id="mw-page-base" class="noprint"></div> <div id="mw-head-base" class="noprint"></div> <div id="content" class="mw-body" role="main"> <a id="top"></a> <div id="siteNotice"><!-- CentralNotice --></div> <div class="mw-indicators"> </div> <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-namespace">Module</span><span class="mw-page-title-separator">:</span><span class="mw-page-title-main">gender and number</span></h1> <div id="bodyContent" class="vector-body"> <div id="siteSub" class="noprint">From Wiktionary, the free dictionary</div> <div id="contentSub"><div id="mw-content-subtitle"></div></div> <div id="contentSub2"></div> <div id="jump-to-nav"></div> <a class="mw-jump-link" href="#mw-head">Jump to navigation</a> <a class="mw-jump-link" href="#searchInput">Jump to search</a> <div id="mw-content-text" class="mw-body-content"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr"><div class="documentation" style="display:block; clear:both"> <hr /> <dl class="plainlinks" style="font-size: smaller;"><dd><i style="font-size: larger;">The following <a href="/wiki/Help:Documenting_templates_and_modules" title="Help:Documenting templates and modules">documentation</a> is located at <a href="/wiki/Module:gender_and_number/documentation" title="Module:gender and number/documentation">Module:gender and number/documentation</a>. <sup>[<a class="external text" href="https://en.wiktionary.org/w/index.php?title=Module:gender_and_number/documentation&action=edit">edit</a>]</sup></i></dd><dd> <i>Useful links</i>: <a href="/wiki/Special:PrefixIndex/Module:gender_and_number/" title="Special:PrefixIndex/Module:gender and number/">subpage list</a> • <a class="external text" href="https://en.wiktionary.org/w/index.php?title=Special%3AWhatLinksHere%2FModule%3Agender_and_number&hideredirs=1&hidetrans=1">links</a> • <a class="external text" href="https://en.wiktionary.org/w/index.php?title=Special%3AWhatLinksHere%2FModule%3Agender_and_number&hidelinks=1&hideredirs=1">transclusions</a> • <a href="/w/index.php?title=Module:gender_and_number/testcases&action=edit&redlink=1" class="new" title="Module:gender and number/testcases (page does not exist)">testcases</a> • <a href="/w/index.php?title=Module:gender_and_number/sandbox&action=edit&redlink=1" class="new" title="Module:gender and number/sandbox (page does not exist)">sandbox</a></dd></dl> This module shows gender/number annotations, such as <span class="gender"><abbr title="masculine gender">m</abbr></span> (masculine), <span class="gender"><abbr title="neuter gender">n</abbr> <abbr title="plural number">pl</abbr></span> (neuter plural) or <span class="gender"><abbr title="feminine gender">f</abbr> <abbr title="animate">anim</abbr> <abbr title="dual number">du</abbr></span> (feminine animate dual). "Gender" is something of a misnomer, as the available annotation categories include other similar lexical characteristics such as animacy and verb aspect (though the former is sometimes also considered a part of word gender). These annotations are attached to nouns, pronouns and other parts of speech that have such lexical categories, depending on the particular language. The annotations occur as parameters e.g. to headword templates such as <code style="white-space:pre-wrap">{{<a href="/wiki/Template:head#top" title="Template:head">head</a>}}</code>, <code style="white-space:pre-wrap">{{<a href="/wiki/Template:es-noun#top" title="Template:es-noun">es-noun</a>}}</code> (for Spanish nouns), <code style="white-space:pre-wrap">{{<a href="/wiki/Template:fr-proper_noun#top" title="Template:fr-proper noun">fr-proper noun</a>}}</code> (for French proper nouns) and <code style="white-space:pre-wrap">{{<a href="/wiki/Template:ru-verb#top" title="Template:ru-verb">ru-verb</a>}}</code> (for Russian verbs); to translation templates such as <code style="white-space:pre-wrap">{{<a href="/wiki/Template:t#top" title="Template:t">t</a>}}</code>, <code style="white-space:pre-wrap">{{<a href="/wiki/Template:t%2B#top" title="Template:t+">t+</a>}}</code> and <code style="white-space:pre-wrap">{{<a href="/wiki/Template:t-check#top" title="Template:t-check">t-check</a>}}</code>; to definition templates such as <code style="white-space:pre-wrap">{{<a href="/wiki/Template:demonym-noun#top" title="Template:demonym-noun">demonym-noun</a>}}</code>; and to dedicated gender/number templates such as <code style="white-space:pre-wrap">{{<a href="/wiki/Template:g#top" title="Template:g">g</a>}}</code>. <div id="toc" class="toc" role="navigation" aria-labelledby="mw-toc-heading"><input type="checkbox" role="button" id="toctogglecheckbox" class="toctogglecheckbox" style="display:none" /><div class="toctitle" lang="en" dir="ltr"><h2 id="mw-toc-heading">Contents</h2><span class="toctogglespan"><label class="toctogglelabel" for="toctogglecheckbox"></label></span></div> <ul> <li class="toclevel-1"><a href="#Gender/number_specifications"><span class="tocnumber">1</span> <span class="toctext">Gender/number specifications</span></a></li> <li class="toclevel-1"><a href="#Noun_classes"><span class="tocnumber">2</span> <span class="toctext">Noun classes</span></a></li> <li class="toclevel-1"><a href="#Usage"><span class="tocnumber">3</span> <span class="toctext">Usage</span></a></li> <li class="toclevel-1"><a href="#Exported_functions"><span class="tocnumber">4</span> <span class="toctext">Exported functions</span></a> <ul> <li class="toclevel-2"><a href="#export.show_list"><span class="tocnumber">4.1</span> <span class="toctext">export.show_list</span></a></li> <li class="toclevel-2"><a href="#export.format_list"><span class="tocnumber">4.2</span> <span class="toctext">export.format_list</span></a></li> <li class="toclevel-2"><a href="#export.format_genders"><span class="tocnumber">4.3</span> <span class="toctext">export.format_genders</span></a></li> </ul> </li> </ul> </div> <div class="mw-heading mw-heading2"><h2 id="Gender/number_specifications"><span id="Gender.2Fnumber_specifications"></span>Gender/number specifications</h2></div> <p>A given annotation is described using a <i>gender/number specification</i>. Each such specification is a hyphen-separated list of <i>gender/number codes</i>, where a given code describes a single value of a particular category (e.g. <i>m</i> for "masculine", <i>an</i> for "animate", <i>p</i> for "plural"). Often, templates accept a list of gender/number specifications rather than just a single one, since some terms belong to multiple possible gender/number categories. Depending on the template in question, these specifications will be given using separate parameters or a single comma-separated parameter. </p><p>When displaying a specification, each code in the specification is converted into the appropriate display form. The different codes within the specification are then added together, separated by spaces. </p><p>Some examples: </p> <table class="wikitable"> <tbody><tr> <th>List </th> <th>Result </th></tr> <tr> <td>{"m"}</td> <td><span class="gender"><abbr title="masculine gender">m</abbr></span> </td></tr> <tr> <td>{"m-p"}</td> <td><span class="gender"><abbr title="masculine gender">m</abbr> <abbr title="plural number">pl</abbr></span> </td></tr> <tr> <td>{"m-an-p"}</td> <td><span class="gender"><abbr title="masculine gender">m</abbr> <abbr title="animate">anim</abbr> <abbr title="plural number">pl</abbr></span> </td></tr> <tr> <td>{"mfbysense-p"}</td> <td><span class="gender"><abbr title="masculine gender">m</abbr> <abbr title="plural number">pl</abbr> or <abbr title="feminine gender">f</abbr> <abbr title="plural number">pl</abbr> <abbr title="according to the gender of the referent">by sense</abbr></span> </td></tr> <tr> <td>{"?-p"}</td> <td><span class="gender"><abbr title="gender incomplete">?</abbr> <abbr title="plural number">pl</abbr></span> </td></tr> <tr> <td>{"?!-an-s"}</td> <td><span class="gender"><abbr title="gender unattested">gender unattested</abbr> <abbr title="animate">anim</abbr> <abbr title="singular number">sg</abbr></span> </td></tr> <tr> <td>{"f-d", "m-p"}</td> <td><span class="gender"><abbr title="feminine gender">f</abbr> <abbr title="dual number">du</abbr> or <abbr title="masculine gender">m</abbr> <abbr title="plural number">pl</abbr></span> </td></tr> <tr> <td>{"m-p", "f-p"}</td> <td><span class="gender"><abbr title="masculine gender">m</abbr> <abbr title="plural number">pl</abbr> or <abbr title="feminine gender">f</abbr> <abbr title="plural number">pl</abbr></span> </td></tr> <tr> <td>{"m", "f", "p"}</td> <td><span class="gender"><abbr title="masculine gender">m</abbr> or <abbr title="feminine gender">f</abbr> or <abbr title="plural number">pl</abbr></span> </td></tr></tbody></table> <p>The source of truth for the current set of recognized codes is <a href="/wiki/Module:gender_and_number/data" title="Module:gender and number/data">Module:gender and number/data</a>. </p><p>The following table gives: </p> <ol><li>the currently recognized codes;</li> <li>the type category they belong to (in a given spec, only one code in a given type category can be present);</li> <li>how the codes display (hover over the display form to see an explanation of what the code means);</li> <li>which category (if any) that the term will be assigned to if the code in question is in the term's headword gender/number spec (where <code>POS</code> is replaced by the pluralized part of speech of the term).</li></ol> <table class="wikitable"> <tbody><tr> <th>Code</th> <th>Type</th> <th>Display form</th> <th>Category </th></tr> <tr style="border-top: 3px solid blue;"> <td><code>f</code></td> <td>gender</td> <td><abbr title="feminine gender">f</abbr></td> <td><code>feminine POS</code> </td></tr> <tr> <td><code>n</code></td> <td>gender</td> <td><abbr title="neuter gender">n</abbr></td> <td><code>neuter POS</code> </td></tr> <tr> <td><code>g?</code></td> <td>gender</td> <td>gender unspecified</td> <td>— </td></tr> <tr> <td><code>gneut</code></td> <td>gender</td> <td>gender-neutral</td> <td><code>gender-neutral POS</code> </td></tr> <tr> <td><code>m</code></td> <td>gender</td> <td><abbr title="masculine gender">m</abbr></td> <td><code>masculine POS</code> </td></tr> <tr> <td><code>c</code></td> <td>gender</td> <td><abbr title="common gender">c</abbr></td> <td><code>common-gender POS</code> </td></tr> <tr> <td><code>g!</code></td> <td>gender</td> <td>gender unattested</td> <td>— </td></tr> <tr style="border-top: 3px solid blue;"> <td><code>p</code></td> <td>number</td> <td><abbr title="plural number">pl</abbr></td> <td><code>pluralia tantum</code> </td></tr> <tr> <td><code>s</code></td> <td>number</td> <td><abbr title="singular number">sg</abbr></td> <td>— </td></tr> <tr> <td><code>d</code></td> <td>number</td> <td><abbr title="dual number">du</abbr></td> <td><code>dualia tantum</code> </td></tr> <tr> <td><code>num?</code></td> <td>number</td> <td>number unspecified</td> <td>— </td></tr> <tr> <td><code>num!</code></td> <td>number</td> <td>number unattested</td> <td>— </td></tr> <tr style="border-top: 3px solid blue;"> <td><code>an</code></td> <td>animacy</td> <td><abbr title="animate">anim</abbr></td> <td><code>animate POS</code> </td></tr> <tr> <td><code>in</code></td> <td>animacy</td> <td><abbr title="inanimate">inan</abbr></td> <td><code>inanimate POS</code> </td></tr> <tr> <td><code>an!</code></td> <td>animacy</td> <td>animacy unattested</td> <td>— </td></tr> <tr> <td><code>pr</code></td> <td>animacy</td> <td><abbr title="personal">pers</abbr></td> <td><code>personal POS</code> </td></tr> <tr> <td><code>an?</code></td> <td>animacy</td> <td>animacy unspecified</td> <td>— </td></tr> <tr> <td><code>np</code></td> <td>animacy</td> <td><abbr title="nonpersonal">npers</abbr></td> <td><code>nonpersonal POS</code> </td></tr> <tr> <td><code>anml</code></td> <td>animacy</td> <td>animal</td> <td><code>animal POS</code> </td></tr> <tr style="border-top: 3px solid blue;"> <td><code>vr</code></td> <td>virility</td> <td><abbr title="virile (= masculine personal)">vir</abbr></td> <td><code>virile POS</code> </td></tr> <tr> <td><code>nv</code></td> <td>virility</td> <td><abbr title="nonvirile (= other than masculine personal)">nvir</abbr></td> <td><code>nonvirile POS</code> </td></tr> <tr style="border-top: 3px solid blue;"> <td><code>impf</code></td> <td>aspect</td> <td><abbr title="imperfective aspect">impf</abbr></td> <td><code>imperfective POS</code> </td></tr> <tr> <td><code>asp?</code></td> <td>aspect</td> <td>aspect unspecified</td> <td>— </td></tr> <tr> <td><code>asp!</code></td> <td>aspect</td> <td>aspect unattested</td> <td>— </td></tr> <tr> <td><code>pf</code></td> <td>aspect</td> <td><abbr title="perfective aspect">pf</abbr></td> <td><code>perfective POS</code> </td></tr> <tr style="border-top: 3px solid blue;"> <td><code>?</code></td> <td>other</td> <td><abbr title="gender incomplete">?</abbr></td> <td>— </td></tr> <tr> <td><code>?!</code></td> <td>other</td> <td>gender unattested</td> <td>— </td></tr></tbody></table> <p>Certain gender/number codes are <i>combination codes</i> that are more or less equivalent to individually specifying two or more codes of a given type category in separate gender/number specs. Some combination codes categorize and display additionally. The following table gives these combination codes: </p> <table class="wikitable"> <tbody><tr> <th>Combination</th> <th>Individual codes</th> <th>Additional display text</th> <th>Category </th></tr> <tr> <td><code>biasp</code></td> <td><code>impf</code>, <code>pf</code></td> <td>—</td> <td>— </td></tr> <tr> <td><code>mf</code></td> <td><code>m</code>, <code>f</code></td> <td>—</td> <td>— </td></tr> <tr> <td><code>mfbysense</code></td> <td><code>m</code>, <code>f</code></td> <td><abbr title="according to the gender of the referent">by sense</abbr></td> <td><code>masculine and feminine POS by sense</code> </td></tr> <tr> <td><code>mfequiv</code></td> <td><code>m</code>, <code>f</code></td> <td><abbr title="different genders do not affect the meaning">same meaning</abbr></td> <td>— </td></tr></tbody></table> <p>In certain type categories, if more than one code of that category is given (necessarily in different gender/number specifications), the term is added to a special category. The following table gives these multi-code categories: </p> <table class="wikitable"> <tbody><tr> <th>Type</th> <th>Category when multiple codes of that type are present </th></tr> <tr> <td><code>gender</code></td> <td><code>POS with multiple genders</code> </td></tr> <tr> <td><code>animacy</code></td> <td><code>POS with multiple animacies</code> </td></tr> <tr> <td><code>aspect</code></td> <td><code>biaspectual POS</code> </td></tr></tbody></table> <div class="mw-heading mw-heading2"><h2 id="Noun_classes">Noun classes</h2></div> <p>Specifications that begin with "c" (but not "c" itself) are treated specially. They are considered noun classes, and the part immediately after the "c" is simply treated as some kind of name for a noun class; usually this will be a number. Noun classes do not have sub-parts, so they will not contain hyphens. When more than one specification is given, they must all be noun classes, and they are displayed separated with a forward slash instead, and preceded by <i>class</i>. </p><p>Examples: </p> <table class="wikitable"> <tbody><tr> <th>List </th> <th>Result </th></tr> <tr> <td>{"c1"}</td> <td><span class="gender">class <abbr class="noun-class" title="noun class 1">1</abbr></span> </td></tr> <tr> <td>{"c1", "c2"}</td> <td><span class="gender">class <abbr class="noun-class" title="noun class 1">1</abbr>/<abbr class="noun-class" title="noun class 2">2</abbr></span> </td></tr> <tr> <td>{"c1a", "c2a"}</td> <td><span class="gender">class <abbr class="noun-class" title="noun class 1a">1a</abbr>/<abbr class="noun-class" title="noun class 2a">2a</abbr></span> </td></tr></tbody></table> <div class="mw-heading mw-heading2"><h2 id="Usage">Usage</h2></div> <p>The module can be used from another module by importing it and calling the exported <code>format_list</code> function. It requires one parameter, which must be a table of zero or more strings. It will then return a string containing the result. For example: </p> <div class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><pre><span></span><span class="kd">local</span> <span class="n">gen</span> <span class="o">=</span> <span class="nb">require</span><span class="p">(</span><span class="s2">"Module:gender and number"</span><span class="p">)</span> <span class="kd">local</span> <span class="n">example1</span> <span class="o">=</span> <span class="n">gen</span><span class="p">.</span><span class="n">format_list</span><span class="p">({</span><span class="s2">"m"</span><span class="p">})</span> <span class="kd">local</span> <span class="n">example2</span> <span class="o">=</span> <span class="n">gen</span><span class="p">.</span><span class="n">format_list</span><span class="p">({</span><span class="s2">"m"</span><span class="p">,</span> <span class="s2">"f"</span><span class="p">})</span> <span class="kd">local</span> <span class="n">example3</span> <span class="o">=</span> <span class="n">gen</span><span class="p">.</span><span class="n">format_list</span><span class="p">({</span><span class="s2">"m-p"</span><span class="p">})</span> </pre></div> <p><b>WARNING: The list passed in will be overwritten.</b> </p><p>It can also be invoked from a template. The function <code>show_list</code> is used for this. It works the same way as the <code>format_list</code> function, but the specifications are passed as parameters to the module invocation, like so: </p> <pre>*{{#invoke:gender and number|show_list|m}} *{{#invoke:gender and number|show_list|m|f}} *{{#invoke:gender and number|show_list|m-p}} </pre> <dl><dd><ul><li><span class="gender"><abbr title="masculine gender">m</abbr></span></li> <li><span class="gender"><abbr title="masculine gender">m</abbr> or <abbr title="feminine gender">f</abbr></span></li> <li><span class="gender"><abbr title="masculine gender">m</abbr> <abbr title="plural number">pl</abbr></span></li></ul></dd></dl> <p>There is no limit to the number of parameters that can be given this way. The module will process all of its parameters until it finds one that is empty. This means that the following will display only "<span class="gender"><abbr title="masculine gender">m</abbr></span>" and not "<span class="gender"><abbr title="masculine gender">m</abbr> or <abbr title="neuter gender">n</abbr></span>": </p> <pre>{{#invoke:gender and number|show_list|m||n}} </pre> <div class="mw-heading mw-heading2"><h2 id="Exported_functions">Exported functions</h2></div> <p>This module creates standardised displays for gender and number. It converts a gender specification into Wiki/HTML format. </p><p>A gender/number specification consists of one or more gender/number elements, separated by hyphens. Examples are: <code class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><span class="s2">"n"</span></code> (neuter gender), <code class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><span class="s2">"f-p"</span></code> (feminine plural), <code class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><span class="s2">"m-an-p"</span></code> (masculine animate plural), <code class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><span class="s2">"pf"</span></code> (perfective aspect). Each gender/number element has the following properties: </p> <ol><li>A code, as used in the spec, e.g. <code class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><span class="s2">"f"</span></code> for feminine, <code class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><span class="s2">"p"</span></code> for plural.</li> <li>A type, e.g. <code>gender</code>, <code>number</code> or <code>animacy</code>. Each element in a given spec must be of a different type.</li> <li>A display form, which in turn consists of a display code and a tooltip gloss. The display code may not be the same as the spec code, e.g. the spec code <code class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><span class="s2">"an"</span></code> has display code <code class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><span class="s2">"anim"</span></code> and tooltip gloss <i>animate</i>.</li> <li>A category into which lemmas of the right part of speech are placed if they have a gender/number spec containing the given element. For example, a noun with gender/number spec <code class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><span class="s2">"m-an-p"</span></code> is placed into the categories <code><var>lang</var> masculine nouns</code>, <code><var>lang</var> animate nouns</code> and <code><var>lang</var> pluralia tantum</code>.</li></ol> <div class="mw-heading mw-heading3"><h3 id="export.show_list">export.show_list</h3></div> <p><code class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><span class="kr">function</span> <span class="nc">export</span><span class="p">.</span><span class="nf">show_list</span><span class="p">(</span><span class="n">frame</span><span class="p">)</span></code> </p><p>Version of format_list that can be invoked from a template. </p> <div class="mw-heading mw-heading3"><h3 id="export.format_list">export.format_list</h3></div> <p><code class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><span class="kr">function</span> <span class="nc">export</span><span class="p">.</span><span class="nf">format_list</span><span class="p">(</span><span class="n">specs</span><span class="p">,</span> <span class="n">lang</span><span class="p">,</span> <span class="n">pos_for_cat</span><span class="p">,</span> <span class="n">sort_key</span><span class="p">)</span></code> </p><p>Older entry point; equivalent to format_genders() except that it formats the categories and returns them appended to the formatted gender text rather than returning the formatted text and categories separately. </p> <div class="mw-heading mw-heading3"><h3 id="export.format_genders">export.format_genders</h3></div> <p><code class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><span class="kr">function</span> <span class="nc">export</span><span class="p">.</span><span class="nf">format_genders</span><span class="p">(</span><span class="n">specs</span><span class="p">,</span> <span class="n">lang</span><span class="p">,</span> <span class="n">pos_for_cat</span><span class="p">)</span></code> </p><p>Format one or more gender/number specifications. Each spec is either a string, e.g. <code class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><span class="s2">"f-p"</span></code>, or a table of the form <code class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><span class="p">{</span><span class="n">spec</span> <span class="o">=</span> <span class="s2">"SPEC"</span><span class="p">,</span> <span class="n">qualifiers</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"QUALIFIER"</span><span class="p">,</span> <span class="s2">"QUALIFIER"</span><span class="p">,</span> <span class="p">...}}</span></code> where <code>.spec</code> is a gender/number spec such as <code class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><span class="s2">"f-p"</span></code> and <code>.qualifiers</code> is a list of qualifiers to display before the formatted gender/number spec. <code>.spec</code> must be present but <code>.qualifiers</code> may be omitted. </p><p>The function returns two values: </p> <ol><li>the formatted text;</li> <li>a list of the categories to add.</li></ol> <p>If <code>lang</code> (which should be a language object) and <code>pos_for_cat</code> (which should be a plural part of speech) are given, gender categories such as <code>German masculine nouns</code> or <code>Russian imperfective verbs</code> are added to the categories, and request categories such as <code>Requests for gender in <var>lang</var> entries</code> or <code>Requests for animacy in <var>lang</var> entries</code> may also be added. Otherwise, if only <code>lang</code> is given, only request categories may be returned. If both are omitted, the returned list is empty. </p> <br style="clear: both;" /></div> <div class="mw-highlight mw-highlight-lang-lua mw-content-ltr mw-highlight-lines" dir="ltr"><pre><span></span><span id="L-1"><a href="#L-1"><span class="linenos" data-line="1"></span></a><span class="kd">local</span> <span class="n">export</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-2"><a href="#L-2"><span class="linenos" data-line="2"></span></a><span class="kd">local</span> <span class="n">data</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">loadData</span><span class="p">(</span><span class="s2">"Module:gender and number/data"</span><span class="p">)</span> </span><span id="L-3"><a href="#L-3"><span class="linenos" data-line="3"></span></a> </span><span id="L-4"><a href="#L-4"><span class="linenos" data-line="4"></span></a><span class="cm">--[==[ intro:</span> </span><span id="L-5"><a href="#L-5"><span class="linenos" data-line="5"></span></a><span class="cm">This module creates standardised displays for gender and number. It converts a gender specification into Wiki/HTML format.</span> </span><span id="L-6"><a href="#L-6"><span class="linenos" data-line="6"></span></a> </span><span id="L-7"><a href="#L-7"><span class="linenos" data-line="7"></span></a><span class="cm">A gender/number specification consists of one or more gender/number elements, separated by hyphens. Examples are:</span> </span><span id="L-8"><a href="#L-8"><span class="linenos" data-line="8"></span></a><span class="cm">{"n"} (neuter gender), {"f-p"} (feminine plural), {"m-an-p"} (masculine animate plural),</span> </span><span id="L-9"><a href="#L-9"><span class="linenos" data-line="9"></span></a><span class="cm">{"pf"} (perfective aspect). Each gender/number element has the following properties:</span> </span><span id="L-10"><a href="#L-10"><span class="linenos" data-line="10"></span></a><span class="cm"># A code, as used in the spec, e.g. {"f"} for feminine, {"p"} for plural.</span> </span><span id="L-11"><a href="#L-11"><span class="linenos" data-line="11"></span></a><span class="cm"># A type, e.g. `gender`, `number` or `animacy`. Each element in a given spec must be of a different type.</span> </span><span id="L-12"><a href="#L-12"><span class="linenos" data-line="12"></span></a><span class="cm"># A display form, which in turn consists of a display code and a tooltip gloss. The display code</span> </span><span id="L-13"><a href="#L-13"><span class="linenos" data-line="13"></span></a><span class="cm"> may not be the same as the spec code, e.g. the spec code {"an"} has display code {"anim"} and tooltip</span> </span><span id="L-14"><a href="#L-14"><span class="linenos" data-line="14"></span></a><span class="cm"> gloss ''animate''.</span> </span><span id="L-15"><a href="#L-15"><span class="linenos" data-line="15"></span></a><span class="cm"># A category into which lemmas of the right part of speech are placed if they have a gender/number</span> </span><span id="L-16"><a href="#L-16"><span class="linenos" data-line="16"></span></a><span class="cm"> spec containing the given element. For example, a noun with gender/number spec {"m-an-p"} is placed</span> </span><span id="L-17"><a href="#L-17"><span class="linenos" data-line="17"></span></a><span class="cm"> into the categories `<var>lang</var> masculine nouns`, `<var>lang</var> animate nouns` and `<var>lang</var> pluralia tantum`.</span> </span><span id="L-18"><a href="#L-18"><span class="linenos" data-line="18"></span></a><span class="cm">]==]</span> </span><span id="L-19"><a href="#L-19"><span class="linenos" data-line="19"></span></a> </span><span id="L-20"><a href="#L-20"><span class="linenos" data-line="20"></span></a><span class="cm">--[==[</span> </span><span id="L-21"><a href="#L-21"><span class="linenos" data-line="21"></span></a><span class="cm">Version of format_list that can be invoked from a template.</span> </span><span id="L-22"><a href="#L-22"><span class="linenos" data-line="22"></span></a><span class="cm">]==]</span> </span><span id="L-23"><a href="#L-23"><span class="linenos" data-line="23"></span></a><span class="kr">function</span> <span class="nc">export</span><span class="p">.</span><span class="nf">show_list</span><span class="p">(</span><span class="n">frame</span><span class="p">)</span> </span><span id="L-24"><a href="#L-24"><span class="linenos" data-line="24"></span></a> <span class="kd">local</span> <span class="n">params</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-25"><a href="#L-25"><span class="linenos" data-line="25"></span></a> <span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="n">list</span> <span class="o">=</span> <span class="kc">true</span><span class="p">},</span> </span><span id="L-26"><a href="#L-26"><span class="linenos" data-line="26"></span></a> <span class="p">[</span><span class="s2">"lang"</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="nb">type</span> <span class="o">=</span> <span class="s2">"language"</span><span class="p">},</span> </span><span id="L-27"><a href="#L-27"><span class="linenos" data-line="27"></span></a> <span class="p">}</span> </span><span id="L-28"><a href="#L-28"><span class="linenos" data-line="28"></span></a> <span class="kd">local</span> <span class="n">iargs</span> <span class="o">=</span> <span class="nb">require</span><span class="p">(</span><span class="s2">"Module:parameters"</span><span class="p">).</span><span class="n">process</span><span class="p">(</span><span class="n">frame</span><span class="p">.</span><span class="n">args</span><span class="p">,</span> <span class="n">params</span><span class="p">)</span> </span><span id="L-29"><a href="#L-29"><span class="linenos" data-line="29"></span></a> <span class="kr">return</span> <span class="n">export</span><span class="p">.</span><span class="n">format_list</span><span class="p">(</span><span class="n">iargs</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">iargs</span><span class="p">.</span><span class="n">lang</span><span class="p">)</span> </span><span id="L-30"><a href="#L-30"><span class="linenos" data-line="30"></span></a><span class="kr">end</span> </span><span id="L-31"><a href="#L-31"><span class="linenos" data-line="31"></span></a> </span><span id="L-32"><a href="#L-32"><span class="linenos" data-line="32"></span></a> </span><span id="L-33"><a href="#L-33"><span class="linenos" data-line="33"></span></a><span class="cm">--[==[</span> </span><span id="L-34"><a href="#L-34"><span class="linenos" data-line="34"></span></a><span class="cm">Older entry point; equivalent to format_genders() except that it formats the</span> </span><span id="L-35"><a href="#L-35"><span class="linenos" data-line="35"></span></a><span class="cm">categories and returns them appended to the formatted gender text rather than</span> </span><span id="L-36"><a href="#L-36"><span class="linenos" data-line="36"></span></a><span class="cm">returning the formatted text and categories separately.</span> </span><span id="L-37"><a href="#L-37"><span class="linenos" data-line="37"></span></a><span class="cm">]==]</span> </span><span id="L-38"><a href="#L-38"><span class="linenos" data-line="38"></span></a><span class="kr">function</span> <span class="nc">export</span><span class="p">.</span><span class="nf">format_list</span><span class="p">(</span><span class="n">specs</span><span class="p">,</span> <span class="n">lang</span><span class="p">,</span> <span class="n">pos_for_cat</span><span class="p">,</span> <span class="n">sort_key</span><span class="p">)</span> </span><span id="L-39"><a href="#L-39"><span class="linenos" data-line="39"></span></a> <span class="nb">require</span><span class="p">(</span><span class="s2">"Module:debug/track"</span><span class="p">)(</span><span class="s2">"gender and number/old-format-list"</span><span class="p">)</span> </span><span id="L-40"><a href="#L-40"><span class="linenos" data-line="40"></span></a> <span class="kd">local</span> <span class="n">text</span><span class="p">,</span> <span class="n">cats</span> <span class="o">=</span> <span class="n">export</span><span class="p">.</span><span class="n">format_genders</span><span class="p">(</span><span class="n">specs</span><span class="p">,</span> <span class="n">lang</span><span class="p">,</span> <span class="n">pos_for_cat</span><span class="p">)</span> </span><span id="L-41"><a href="#L-41"><span class="linenos" data-line="41"></span></a> <span class="kr">if</span> <span class="o">#</span><span class="n">cats</span> <span class="o">==</span> <span class="mi">0</span> <span class="kr">then</span> </span><span id="L-42"><a href="#L-42"><span class="linenos" data-line="42"></span></a> <span class="kr">return</span> <span class="n">text</span> </span><span id="L-43"><a href="#L-43"><span class="linenos" data-line="43"></span></a> <span class="kr">end</span> </span><span id="L-44"><a href="#L-44"><span class="linenos" data-line="44"></span></a> <span class="kr">return</span> <span class="n">text</span> <span class="o">..</span> <span class="nb">require</span><span class="p">(</span><span class="s2">"Module:utilities"</span><span class="p">).</span><span class="n">format_categories</span><span class="p">(</span><span class="n">cats</span><span class="p">,</span> <span class="n">lang</span><span class="p">,</span> <span class="n">sort_key</span><span class="p">)</span> </span><span id="L-45"><a href="#L-45"><span class="linenos" data-line="45"></span></a><span class="kr">end</span> </span><span id="L-46"><a href="#L-46"><span class="linenos" data-line="46"></span></a> </span><span id="L-47"><a href="#L-47"><span class="linenos" data-line="47"></span></a> </span><span id="L-48"><a href="#L-48"><span class="linenos" data-line="48"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">autoadd_abbr</span><span class="p">(</span><span class="n">display</span><span class="p">)</span> </span><span id="L-49"><a href="#L-49"><span class="linenos" data-line="49"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">display</span> <span class="kr">then</span> </span><span id="L-50"><a href="#L-50"><span class="linenos" data-line="50"></span></a> <span class="nb">error</span><span class="p">(</span><span class="s2">"Internal error: '.display' for gender/number code is missing"</span><span class="p">)</span> </span><span id="L-51"><a href="#L-51"><span class="linenos" data-line="51"></span></a> <span class="kr">end</span> </span><span id="L-52"><a href="#L-52"><span class="linenos" data-line="52"></span></a> <span class="kr">if</span> <span class="n">display</span><span class="p">:</span><span class="n">find</span><span class="p">(</span><span class="s2">"<abbr"</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-53"><a href="#L-53"><span class="linenos" data-line="53"></span></a> <span class="kr">return</span> <span class="n">display</span> </span><span id="L-54"><a href="#L-54"><span class="linenos" data-line="54"></span></a> <span class="kr">else</span> </span><span id="L-55"><a href="#L-55"><span class="linenos" data-line="55"></span></a> <span class="kr">return</span> <span class="p">(</span><span class="s1">'<abbr title="%s">%s</abbr>'</span><span class="p">):</span><span class="n">format</span><span class="p">(</span><span class="n">display</span><span class="p">,</span> <span class="n">display</span><span class="p">)</span> </span><span id="L-56"><a href="#L-56"><span class="linenos" data-line="56"></span></a> <span class="kr">end</span> </span><span id="L-57"><a href="#L-57"><span class="linenos" data-line="57"></span></a><span class="kr">end</span> </span><span id="L-58"><a href="#L-58"><span class="linenos" data-line="58"></span></a> </span><span id="L-59"><a href="#L-59"><span class="linenos" data-line="59"></span></a><span class="cm">--[==[</span> </span><span id="L-60"><a href="#L-60"><span class="linenos" data-line="60"></span></a><span class="cm">Format one or more gender/number specifications. Each spec is either a string, e.g. {"f-p"}, or a table of the form</span> </span><span id="L-61"><a href="#L-61"><span class="linenos" data-line="61"></span></a><span class="cm">{ {spec = "SPEC", qualifiers = {"QUALIFIER", "QUALIFIER", ...}}} where `.spec` is a gender/number spec such as {"f-p"}</span> </span><span id="L-62"><a href="#L-62"><span class="linenos" data-line="62"></span></a><span class="cm">and `.qualifiers` is a list of qualifiers to display before the formatted gender/number spec. `.spec` must be present</span> </span><span id="L-63"><a href="#L-63"><span class="linenos" data-line="63"></span></a><span class="cm">but `.qualifiers` may be omitted.</span> </span><span id="L-64"><a href="#L-64"><span class="linenos" data-line="64"></span></a> </span><span id="L-65"><a href="#L-65"><span class="linenos" data-line="65"></span></a><span class="cm">The function returns two values:</span> </span><span id="L-66"><a href="#L-66"><span class="linenos" data-line="66"></span></a><span class="cm"># the formatted text;</span> </span><span id="L-67"><a href="#L-67"><span class="linenos" data-line="67"></span></a><span class="cm"># a list of the categories to add.</span> </span><span id="L-68"><a href="#L-68"><span class="linenos" data-line="68"></span></a> </span><span id="L-69"><a href="#L-69"><span class="linenos" data-line="69"></span></a><span class="cm">If `lang` (which should be a language object) and `pos_for_cat` (which should be a plural part of speech) are given,</span> </span><span id="L-70"><a href="#L-70"><span class="linenos" data-line="70"></span></a><span class="cm">gender categories such as `German masculine nouns` or `Russian imperfective verbs` are added to the categories, and</span> </span><span id="L-71"><a href="#L-71"><span class="linenos" data-line="71"></span></a><span class="cm">request categories such as `Requests for gender in <var>lang</var> entries` or</span> </span><span id="L-72"><a href="#L-72"><span class="linenos" data-line="72"></span></a><span class="cm">`Requests for animacy in <var>lang</var> entries` may also be added. Otherwise, if only `lang` is given, only request</span> </span><span id="L-73"><a href="#L-73"><span class="linenos" data-line="73"></span></a><span class="cm">categories may be returned. If both are omitted, the returned list is empty.</span> </span><span id="L-74"><a href="#L-74"><span class="linenos" data-line="74"></span></a><span class="cm">]==]</span> </span><span id="L-75"><a href="#L-75"><span class="linenos" data-line="75"></span></a><span class="kr">function</span> <span class="nc">export</span><span class="p">.</span><span class="nf">format_genders</span><span class="p">(</span><span class="n">specs</span><span class="p">,</span> <span class="n">lang</span><span class="p">,</span> <span class="n">pos_for_cat</span><span class="p">)</span> </span><span id="L-76"><a href="#L-76"><span class="linenos" data-line="76"></span></a> <span class="kd">local</span> <span class="n">formatted_specs</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-77"><a href="#L-77"><span class="linenos" data-line="77"></span></a> <span class="kd">local</span> <span class="n">categories</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-78"><a href="#L-78"><span class="linenos" data-line="78"></span></a> <span class="kd">local</span> <span class="n">seen_types</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-79"><a href="#L-79"><span class="linenos" data-line="79"></span></a> <span class="kd">local</span> <span class="n">category_text</span> <span class="o">=</span> <span class="s2">""</span> </span><span id="L-80"><a href="#L-80"><span class="linenos" data-line="80"></span></a> <span class="kd">local</span> <span class="n">all_is_nounclass</span> <span class="o">=</span> <span class="kc">nil</span> </span><span id="L-81"><a href="#L-81"><span class="linenos" data-line="81"></span></a> <span class="c1">-- Currently we only use the language for categories, so fetch the full parent. Change this if we</span> </span><span id="L-82"><a href="#L-82"><span class="linenos" data-line="82"></span></a> <span class="c1">-- use the language for any other purpose.</span> </span><span id="L-83"><a href="#L-83"><span class="linenos" data-line="83"></span></a> <span class="n">lang</span> <span class="o">=</span> <span class="n">lang</span> <span class="ow">and</span> <span class="n">lang</span><span class="p">:</span><span class="n">getFull</span><span class="p">()</span> <span class="ow">or</span> <span class="kc">nil</span> </span><span id="L-84"><a href="#L-84"><span class="linenos" data-line="84"></span></a> </span><span id="L-85"><a href="#L-85"><span class="linenos" data-line="85"></span></a> <span class="kd">local</span> <span class="kr">function</span> <span class="nf">do_gender_spec</span><span class="p">(</span><span class="n">spec</span><span class="p">,</span> <span class="n">parts</span><span class="p">)</span> </span><span id="L-86"><a href="#L-86"><span class="linenos" data-line="86"></span></a> <span class="kd">local</span> <span class="n">types</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-87"><a href="#L-87"><span class="linenos" data-line="87"></span></a> <span class="kd">local</span> <span class="n">codes</span> <span class="o">=</span> <span class="n">data</span><span class="p">.</span><span class="n">codes</span> </span><span id="L-88"><a href="#L-88"><span class="linenos" data-line="88"></span></a> </span><span id="L-89"><a href="#L-89"><span class="linenos" data-line="89"></span></a> <span class="kr">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">code</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span><span class="n">parts</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-90"><a href="#L-90"><span class="linenos" data-line="90"></span></a> <span class="c1">-- Is this code valid?</span> </span><span id="L-91"><a href="#L-91"><span class="linenos" data-line="91"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">codes</span><span class="p">[</span><span class="n">code</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-92"><a href="#L-92"><span class="linenos" data-line="92"></span></a> <span class="nb">error</span><span class="p">(</span><span class="s1">'The tag "'</span> <span class="o">..</span> <span class="n">code</span> <span class="o">..</span> <span class="s1">'" in the gender specification "'</span> <span class="o">..</span> <span class="n">spec</span><span class="p">.</span><span class="n">spec</span> <span class="o">..</span> <span class="s1">'" is not valid. See [[Module:gender and number]] for a list of valid tags.'</span><span class="p">)</span> </span><span id="L-93"><a href="#L-93"><span class="linenos" data-line="93"></span></a> <span class="kr">end</span> </span><span id="L-94"><a href="#L-94"><span class="linenos" data-line="94"></span></a> </span><span id="L-95"><a href="#L-95"><span class="linenos" data-line="95"></span></a> <span class="c1">-- Check for multiple genders/numbers/animacies in a single spec.</span> </span><span id="L-96"><a href="#L-96"><span class="linenos" data-line="96"></span></a> <span class="kd">local</span> <span class="n">typ</span> <span class="o">=</span> <span class="n">codes</span><span class="p">[</span><span class="n">code</span><span class="p">].</span><span class="nb">type</span> </span><span id="L-97"><a href="#L-97"><span class="linenos" data-line="97"></span></a> <span class="kr">if</span> <span class="n">typ</span> <span class="o">~=</span> <span class="s2">"other"</span> <span class="ow">and</span> <span class="n">types</span><span class="p">[</span><span class="n">typ</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-98"><a href="#L-98"><span class="linenos" data-line="98"></span></a> <span class="nb">error</span><span class="p">(</span><span class="s1">'The gender specification "'</span> <span class="o">..</span> <span class="n">spec</span><span class="p">.</span><span class="n">spec</span> <span class="o">..</span> <span class="s1">'" contains multiple tags of type "'</span> <span class="o">..</span> <span class="n">typ</span> <span class="o">..</span> <span class="s1">'".'</span><span class="p">)</span> </span><span id="L-99"><a href="#L-99"><span class="linenos" data-line="99"></span></a> <span class="kr">end</span> </span><span id="L-100"><a href="#L-100"><span class="linenos" data-line="100"></span></a> <span class="n">types</span><span class="p">[</span><span class="n">typ</span><span class="p">]</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-101"><a href="#L-101"><span class="linenos" data-line="101"></span></a> </span><span id="L-102"><a href="#L-102"><span class="linenos" data-line="102"></span></a> <span class="kr">if</span> <span class="n">key</span> <span class="o">==</span> <span class="mi">1</span> <span class="ow">and</span> <span class="n">spec</span><span class="p">.</span><span class="n">qualifiers</span> <span class="ow">and</span> <span class="o">#</span><span class="n">spec</span><span class="p">.</span><span class="n">qualifiers</span> <span class="o">></span> <span class="mi">0</span> <span class="kr">then</span> </span><span id="L-103"><a href="#L-103"><span class="linenos" data-line="103"></span></a> <span class="n">parts</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="nb">require</span><span class="p">(</span><span class="s2">"Module:qualifier"</span><span class="p">).</span><span class="n">format_qualifier</span><span class="p">(</span><span class="n">spec</span><span class="p">.</span><span class="n">qualifiers</span><span class="p">)</span> <span class="o">..</span> <span class="s2">" "</span> <span class="o">..</span> </span><span id="L-104"><a href="#L-104"><span class="linenos" data-line="104"></span></a> <span class="n">autoadd_abbr</span><span class="p">(</span><span class="n">codes</span><span class="p">[</span><span class="n">code</span><span class="p">].</span><span class="n">display</span><span class="p">)</span> </span><span id="L-105"><a href="#L-105"><span class="linenos" data-line="105"></span></a> <span class="kr">else</span> </span><span id="L-106"><a href="#L-106"><span class="linenos" data-line="106"></span></a> <span class="n">parts</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">autoadd_abbr</span><span class="p">(</span><span class="n">codes</span><span class="p">[</span><span class="n">code</span><span class="p">].</span><span class="n">display</span><span class="p">)</span> </span><span id="L-107"><a href="#L-107"><span class="linenos" data-line="107"></span></a> <span class="kr">end</span> </span><span id="L-108"><a href="#L-108"><span class="linenos" data-line="108"></span></a> </span><span id="L-109"><a href="#L-109"><span class="linenos" data-line="109"></span></a> <span class="c1">-- Generate categories if called for.</span> </span><span id="L-110"><a href="#L-110"><span class="linenos" data-line="110"></span></a> <span class="kr">if</span> <span class="n">lang</span> <span class="ow">and</span> <span class="n">pos_for_cat</span> <span class="kr">then</span> </span><span id="L-111"><a href="#L-111"><span class="linenos" data-line="111"></span></a> <span class="kd">local</span> <span class="n">cat</span> <span class="o">=</span> <span class="n">codes</span><span class="p">[</span><span class="n">code</span><span class="p">].</span><span class="n">cat</span> </span><span id="L-112"><a href="#L-112"><span class="linenos" data-line="112"></span></a> <span class="kr">if</span> <span class="n">cat</span> <span class="kr">then</span> </span><span id="L-113"><a href="#L-113"><span class="linenos" data-line="113"></span></a> <span class="nb">table.insert</span><span class="p">(</span><span class="n">categories</span><span class="p">,</span> <span class="n">lang</span><span class="p">:</span><span class="n">getCanonicalName</span><span class="p">()</span> <span class="o">..</span> <span class="s2">" "</span> <span class="o">..</span> <span class="n">cat</span><span class="p">)</span> </span><span id="L-114"><a href="#L-114"><span class="linenos" data-line="114"></span></a> <span class="kr">end</span> </span><span id="L-115"><a href="#L-115"><span class="linenos" data-line="115"></span></a> <span class="kr">if</span> <span class="n">seen_types</span><span class="p">[</span><span class="n">typ</span><span class="p">]</span> <span class="ow">and</span> <span class="n">seen_types</span><span class="p">[</span><span class="n">typ</span><span class="p">]</span> <span class="o">~=</span> <span class="n">code</span> <span class="kr">then</span> </span><span id="L-116"><a href="#L-116"><span class="linenos" data-line="116"></span></a> <span class="n">cat</span> <span class="o">=</span> <span class="n">data</span><span class="p">.</span><span class="n">multicode_cats</span><span class="p">[</span><span class="n">typ</span><span class="p">]</span> </span><span id="L-117"><a href="#L-117"><span class="linenos" data-line="117"></span></a> <span class="kr">if</span> <span class="n">cat</span> <span class="kr">then</span> </span><span id="L-118"><a href="#L-118"><span class="linenos" data-line="118"></span></a> <span class="nb">table.insert</span><span class="p">(</span><span class="n">categories</span><span class="p">,</span> <span class="n">lang</span><span class="p">:</span><span class="n">getCanonicalName</span><span class="p">()</span> <span class="o">..</span> <span class="s2">" "</span> <span class="o">..</span> <span class="n">cat</span><span class="p">)</span> </span><span id="L-119"><a href="#L-119"><span class="linenos" data-line="119"></span></a> <span class="kr">end</span> </span><span id="L-120"><a href="#L-120"><span class="linenos" data-line="120"></span></a> <span class="kr">end</span> </span><span id="L-121"><a href="#L-121"><span class="linenos" data-line="121"></span></a> </span><span id="L-122"><a href="#L-122"><span class="linenos" data-line="122"></span></a> <span class="n">seen_types</span><span class="p">[</span><span class="n">typ</span><span class="p">]</span> <span class="o">=</span> <span class="n">code</span> </span><span id="L-123"><a href="#L-123"><span class="linenos" data-line="123"></span></a> <span class="kr">end</span> </span><span id="L-124"><a href="#L-124"><span class="linenos" data-line="124"></span></a> <span class="kr">if</span> <span class="n">lang</span> <span class="ow">and</span> <span class="n">codes</span><span class="p">[</span><span class="n">code</span><span class="p">].</span><span class="n">req</span> <span class="kr">then</span> </span><span id="L-125"><a href="#L-125"><span class="linenos" data-line="125"></span></a> <span class="kd">local</span> <span class="n">type_for_req</span> <span class="o">=</span> <span class="n">typ</span> </span><span id="L-126"><a href="#L-126"><span class="linenos" data-line="126"></span></a> <span class="kr">if</span> <span class="n">code</span> <span class="o">==</span> <span class="s2">"?"</span> <span class="kr">then</span> </span><span id="L-127"><a href="#L-127"><span class="linenos" data-line="127"></span></a> <span class="c1">-- Keep in mind `pos_for_cat` may be nil here.</span> </span><span id="L-128"><a href="#L-128"><span class="linenos" data-line="128"></span></a> <span class="n">type_for_req</span> <span class="o">=</span> <span class="n">pos_for_cat</span> <span class="o">==</span> <span class="s2">"verbs"</span> <span class="ow">and</span> <span class="s2">"aspect"</span> <span class="ow">or</span> <span class="s2">"gender"</span> </span><span id="L-129"><a href="#L-129"><span class="linenos" data-line="129"></span></a> <span class="kr">end</span> </span><span id="L-130"><a href="#L-130"><span class="linenos" data-line="130"></span></a> <span class="nb">table.insert</span><span class="p">(</span><span class="n">categories</span><span class="p">,</span> <span class="s2">"Requests for "</span> <span class="o">..</span> <span class="n">type_for_req</span> <span class="o">..</span> <span class="s2">" in "</span> <span class="o">..</span> </span><span id="L-131"><a href="#L-131"><span class="linenos" data-line="131"></span></a> <span class="n">lang</span><span class="p">:</span><span class="n">getCanonicalName</span><span class="p">()</span> <span class="o">..</span> <span class="s2">" entries"</span><span class="p">)</span> </span><span id="L-132"><a href="#L-132"><span class="linenos" data-line="132"></span></a> <span class="kr">end</span> </span><span id="L-133"><a href="#L-133"><span class="linenos" data-line="133"></span></a> <span class="kr">end</span> </span><span id="L-134"><a href="#L-134"><span class="linenos" data-line="134"></span></a> </span><span id="L-135"><a href="#L-135"><span class="linenos" data-line="135"></span></a> <span class="c1">-- Add the processed codes together with non-breaking spaces</span> </span><span id="L-136"><a href="#L-136"><span class="linenos" data-line="136"></span></a> <span class="kr">if</span> <span class="o">#</span><span class="n">parts</span> <span class="o">==</span> <span class="mi">1</span> <span class="kr">then</span> </span><span id="L-137"><a href="#L-137"><span class="linenos" data-line="137"></span></a> <span class="kr">return</span> <span class="n">parts</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> </span><span id="L-138"><a href="#L-138"><span class="linenos" data-line="138"></span></a> <span class="kr">end</span> </span><span id="L-139"><a href="#L-139"><span class="linenos" data-line="139"></span></a> <span class="kr">return</span> <span class="nb">table.concat</span><span class="p">(</span><span class="n">parts</span><span class="p">,</span> <span class="s2">"&nbsp;"</span><span class="p">)</span> </span><span id="L-140"><a href="#L-140"><span class="linenos" data-line="140"></span></a> <span class="kr">end</span> </span><span id="L-141"><a href="#L-141"><span class="linenos" data-line="141"></span></a> </span><span id="L-142"><a href="#L-142"><span class="linenos" data-line="142"></span></a> <span class="kr">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">spec</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span><span class="n">specs</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-143"><a href="#L-143"><span class="linenos" data-line="143"></span></a> <span class="kr">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">spec</span><span class="p">)</span> <span class="o">~=</span> <span class="s2">"table"</span> <span class="kr">then</span> </span><span id="L-144"><a href="#L-144"><span class="linenos" data-line="144"></span></a> <span class="n">spec</span> <span class="o">=</span> <span class="p">{</span><span class="n">spec</span> <span class="o">=</span> <span class="n">spec</span><span class="p">}</span> </span><span id="L-145"><a href="#L-145"><span class="linenos" data-line="145"></span></a> <span class="kr">end</span> </span><span id="L-146"><a href="#L-146"><span class="linenos" data-line="146"></span></a> <span class="kd">local</span> <span class="n">is_nounclass</span> </span><span id="L-147"><a href="#L-147"><span class="linenos" data-line="147"></span></a> <span class="c1">-- If the specification starts with cX, then it is a noun class specification.</span> </span><span id="L-148"><a href="#L-148"><span class="linenos" data-line="148"></span></a> <span class="kr">if</span> <span class="n">spec</span><span class="p">.</span><span class="n">spec</span><span class="p">:</span><span class="n">find</span><span class="p">(</span><span class="s2">"^[1-9]"</span><span class="p">)</span> <span class="ow">or</span> <span class="n">spec</span><span class="p">.</span><span class="n">spec</span><span class="p">:</span><span class="n">find</span><span class="p">(</span><span class="s2">"^c[^-]"</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-149"><a href="#L-149"><span class="linenos" data-line="149"></span></a> <span class="n">is_nounclass</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-150"><a href="#L-150"><span class="linenos" data-line="150"></span></a> <span class="kd">local</span> <span class="n">code</span> <span class="o">=</span> <span class="n">spec</span><span class="p">.</span><span class="n">spec</span><span class="p">:</span><span class="n">gsub</span><span class="p">(</span><span class="s2">"^c"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span> </span><span id="L-151"><a href="#L-151"><span class="linenos" data-line="151"></span></a> </span><span id="L-152"><a href="#L-152"><span class="linenos" data-line="152"></span></a> <span class="kd">local</span> <span class="n">text</span> </span><span id="L-153"><a href="#L-153"><span class="linenos" data-line="153"></span></a> <span class="kr">if</span> <span class="n">code</span> <span class="o">==</span> <span class="s2">"?"</span> <span class="kr">then</span> </span><span id="L-154"><a href="#L-154"><span class="linenos" data-line="154"></span></a> <span class="n">text</span> <span class="o">=</span> <span class="s1">'<abbr class="noun-class" title="noun class missing">?</abbr>'</span> </span><span id="L-155"><a href="#L-155"><span class="linenos" data-line="155"></span></a> <span class="kr">else</span> </span><span id="L-156"><a href="#L-156"><span class="linenos" data-line="156"></span></a> <span class="n">text</span> <span class="o">=</span> <span class="s1">'<abbr class="noun-class" title="noun class '</span> <span class="o">..</span> <span class="n">code</span> <span class="o">..</span> <span class="s1">'">'</span> <span class="o">..</span> <span class="n">code</span> <span class="o">..</span> <span class="s2">"</abbr>"</span> </span><span id="L-157"><a href="#L-157"><span class="linenos" data-line="157"></span></a> <span class="kr">if</span> <span class="n">lang</span> <span class="ow">and</span> <span class="n">pos_for_cat</span> <span class="kr">then</span> </span><span id="L-158"><a href="#L-158"><span class="linenos" data-line="158"></span></a> <span class="nb">table.insert</span><span class="p">(</span><span class="n">categories</span><span class="p">,</span> <span class="n">lang</span><span class="p">:</span><span class="n">getCanonicalName</span><span class="p">()</span> <span class="o">..</span> <span class="s2">" class "</span> <span class="o">..</span> <span class="n">code</span> <span class="o">..</span> <span class="s2">" POS"</span><span class="p">)</span> </span><span id="L-159"><a href="#L-159"><span class="linenos" data-line="159"></span></a> <span class="kr">end</span> </span><span id="L-160"><a href="#L-160"><span class="linenos" data-line="160"></span></a> <span class="kr">end</span> </span><span id="L-161"><a href="#L-161"><span class="linenos" data-line="161"></span></a> <span class="kd">local</span> <span class="n">text_with_qual</span> </span><span id="L-162"><a href="#L-162"><span class="linenos" data-line="162"></span></a> <span class="kr">if</span> <span class="n">spec</span><span class="p">.</span><span class="n">qualifiers</span> <span class="ow">and</span> <span class="o">#</span><span class="n">spec</span><span class="p">.</span><span class="n">qualifiers</span> <span class="o">></span> <span class="mi">0</span> <span class="kr">then</span> </span><span id="L-163"><a href="#L-163"><span class="linenos" data-line="163"></span></a> <span class="n">text_with_qual</span> <span class="o">=</span> <span class="nb">require</span><span class="p">(</span><span class="s2">"Module:qualifier"</span><span class="p">).</span><span class="n">format_qualifier</span><span class="p">(</span><span class="n">spec</span><span class="p">.</span><span class="n">qualifiers</span><span class="p">)</span> <span class="o">..</span> <span class="s2">" "</span> <span class="o">..</span> <span class="n">text</span> </span><span id="L-164"><a href="#L-164"><span class="linenos" data-line="164"></span></a> <span class="kr">else</span> </span><span id="L-165"><a href="#L-165"><span class="linenos" data-line="165"></span></a> <span class="n">text_with_qual</span> <span class="o">=</span> <span class="n">text</span> </span><span id="L-166"><a href="#L-166"><span class="linenos" data-line="166"></span></a> <span class="kr">end</span> </span><span id="L-167"><a href="#L-167"><span class="linenos" data-line="167"></span></a> <span class="nb">table.insert</span><span class="p">(</span><span class="n">formatted_specs</span><span class="p">,</span> <span class="n">text_with_qual</span><span class="p">)</span> </span><span id="L-168"><a href="#L-168"><span class="linenos" data-line="168"></span></a> <span class="kr">else</span> </span><span id="L-169"><a href="#L-169"><span class="linenos" data-line="169"></span></a> <span class="c1">-- Split the parts and iterate over each part, converting it into its display form</span> </span><span id="L-170"><a href="#L-170"><span class="linenos" data-line="170"></span></a> <span class="kd">local</span> <span class="n">parts</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">text</span><span class="p">.</span><span class="n">split</span><span class="p">(</span><span class="n">spec</span><span class="p">.</span><span class="n">spec</span><span class="p">,</span> <span class="s2">"%-"</span><span class="p">)</span> </span><span id="L-171"><a href="#L-171"><span class="linenos" data-line="171"></span></a> <span class="kd">local</span> <span class="n">combined_codes</span> <span class="o">=</span> <span class="n">data</span><span class="p">.</span><span class="n">combinations</span> </span><span id="L-172"><a href="#L-172"><span class="linenos" data-line="172"></span></a> </span><span id="L-173"><a href="#L-173"><span class="linenos" data-line="173"></span></a> <span class="kr">if</span> <span class="n">lang</span> <span class="kr">then</span> </span><span id="L-174"><a href="#L-174"><span class="linenos" data-line="174"></span></a> <span class="c1">-- Check if the specification is valid</span> </span><span id="L-175"><a href="#L-175"><span class="linenos" data-line="175"></span></a> <span class="c1">--elseif langinfo.genders then</span> </span><span id="L-176"><a href="#L-176"><span class="linenos" data-line="176"></span></a> <span class="c1">-- local valid_genders = {}</span> </span><span id="L-177"><a href="#L-177"><span class="linenos" data-line="177"></span></a> <span class="c1">-- for _, g in ipairs(langinfo.genders) do valid_genders[g] = true end</span> </span><span id="L-178"><a href="#L-178"><span class="linenos" data-line="178"></span></a> <span class="c1">-- </span> </span><span id="L-179"><a href="#L-179"><span class="linenos" data-line="179"></span></a> <span class="c1">-- if not valid_genders[spec.spec] then</span> </span><span id="L-180"><a href="#L-180"><span class="linenos" data-line="180"></span></a> <span class="c1">-- local valid_string = {}</span> </span><span id="L-181"><a href="#L-181"><span class="linenos" data-line="181"></span></a> <span class="c1">-- for i, g in ipairs(langinfo.genders) do valid_string[i] = g end</span> </span><span id="L-182"><a href="#L-182"><span class="linenos" data-line="182"></span></a> <span class="c1">-- error('The gender specification "' .. spec.spec .. '" is not valid for ' .. langinfo.names[1] .. ". Valid are: " .. table.concat(valid_string, ", "))</span> </span><span id="L-183"><a href="#L-183"><span class="linenos" data-line="183"></span></a> <span class="c1">-- end</span> </span><span id="L-184"><a href="#L-184"><span class="linenos" data-line="184"></span></a> <span class="c1">--end</span> </span><span id="L-185"><a href="#L-185"><span class="linenos" data-line="185"></span></a> <span class="kr">end</span> </span><span id="L-186"><a href="#L-186"><span class="linenos" data-line="186"></span></a> </span><span id="L-187"><a href="#L-187"><span class="linenos" data-line="187"></span></a> <span class="kd">local</span> <span class="n">has_combined</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-188"><a href="#L-188"><span class="linenos" data-line="188"></span></a> <span class="kr">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">code</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span><span class="n">parts</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-189"><a href="#L-189"><span class="linenos" data-line="189"></span></a> <span class="kr">if</span> <span class="n">combined_codes</span><span class="p">[</span><span class="n">code</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-190"><a href="#L-190"><span class="linenos" data-line="190"></span></a> <span class="n">has_combined</span> <span class="o">=</span> <span class="kc">true</span> </span><span id="L-191"><a href="#L-191"><span class="linenos" data-line="191"></span></a> <span class="kr">break</span> </span><span id="L-192"><a href="#L-192"><span class="linenos" data-line="192"></span></a> <span class="kr">end</span> </span><span id="L-193"><a href="#L-193"><span class="linenos" data-line="193"></span></a> <span class="kr">end</span> </span><span id="L-194"><a href="#L-194"><span class="linenos" data-line="194"></span></a> </span><span id="L-195"><a href="#L-195"><span class="linenos" data-line="195"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">has_combined</span> <span class="kr">then</span> </span><span id="L-196"><a href="#L-196"><span class="linenos" data-line="196"></span></a> <span class="kr">if</span> <span class="o">#</span><span class="n">formatted_specs</span> <span class="o">></span> <span class="mi">0</span> <span class="kr">then</span> </span><span id="L-197"><a href="#L-197"><span class="linenos" data-line="197"></span></a> <span class="nb">table.insert</span><span class="p">(</span><span class="n">formatted_specs</span><span class="p">,</span> <span class="s2">"or"</span><span class="p">)</span> </span><span id="L-198"><a href="#L-198"><span class="linenos" data-line="198"></span></a> <span class="kr">end</span> </span><span id="L-199"><a href="#L-199"><span class="linenos" data-line="199"></span></a> <span class="nb">table.insert</span><span class="p">(</span><span class="n">formatted_specs</span><span class="p">,</span> <span class="n">do_gender_spec</span><span class="p">(</span><span class="n">spec</span><span class="p">,</span> <span class="n">parts</span><span class="p">))</span> </span><span id="L-200"><a href="#L-200"><span class="linenos" data-line="200"></span></a> <span class="kr">else</span> </span><span id="L-201"><a href="#L-201"><span class="linenos" data-line="201"></span></a> <span class="c1">-- This logic is to handle combined gender specs like 'mf' and 'mfbysense'.</span> </span><span id="L-202"><a href="#L-202"><span class="linenos" data-line="202"></span></a> <span class="kd">local</span> <span class="n">all_parts</span> <span class="o">=</span> <span class="p">{{}}</span> </span><span id="L-203"><a href="#L-203"><span class="linenos" data-line="203"></span></a> <span class="kd">local</span> <span class="n">extra_cats</span> </span><span id="L-204"><a href="#L-204"><span class="linenos" data-line="204"></span></a> <span class="kd">local</span> <span class="n">extra_displays</span> </span><span id="L-205"><a href="#L-205"><span class="linenos" data-line="205"></span></a> </span><span id="L-206"><a href="#L-206"><span class="linenos" data-line="206"></span></a> <span class="kr">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">code</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span><span class="n">parts</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-207"><a href="#L-207"><span class="linenos" data-line="207"></span></a> <span class="kr">if</span> <span class="n">combined_codes</span><span class="p">[</span><span class="n">code</span><span class="p">]</span> <span class="kr">then</span> </span><span id="L-208"><a href="#L-208"><span class="linenos" data-line="208"></span></a> <span class="kd">local</span> <span class="n">new_all_parts</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-209"><a href="#L-209"><span class="linenos" data-line="209"></span></a> <span class="kr">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">one_parts</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span><span class="n">all_parts</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-210"><a href="#L-210"><span class="linenos" data-line="210"></span></a> <span class="kr">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">one_code</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span><span class="n">combined_codes</span><span class="p">[</span><span class="n">code</span><span class="p">].</span><span class="n">codes</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-211"><a href="#L-211"><span class="linenos" data-line="211"></span></a> <span class="kd">local</span> <span class="n">new_combined_parts</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">clone</span><span class="p">(</span><span class="n">one_parts</span><span class="p">)</span> </span><span id="L-212"><a href="#L-212"><span class="linenos" data-line="212"></span></a> <span class="nb">table.insert</span><span class="p">(</span><span class="n">new_combined_parts</span><span class="p">,</span> <span class="n">one_code</span><span class="p">)</span> </span><span id="L-213"><a href="#L-213"><span class="linenos" data-line="213"></span></a> <span class="nb">table.insert</span><span class="p">(</span><span class="n">new_all_parts</span><span class="p">,</span> <span class="n">new_combined_parts</span><span class="p">)</span> </span><span id="L-214"><a href="#L-214"><span class="linenos" data-line="214"></span></a> <span class="kr">end</span> </span><span id="L-215"><a href="#L-215"><span class="linenos" data-line="215"></span></a> <span class="kr">end</span> </span><span id="L-216"><a href="#L-216"><span class="linenos" data-line="216"></span></a> <span class="n">all_parts</span> <span class="o">=</span> <span class="n">new_all_parts</span> </span><span id="L-217"><a href="#L-217"><span class="linenos" data-line="217"></span></a> <span class="kr">if</span> <span class="n">lang</span> <span class="ow">and</span> <span class="n">pos_for_cat</span> <span class="kr">then</span> </span><span id="L-218"><a href="#L-218"><span class="linenos" data-line="218"></span></a> <span class="kd">local</span> <span class="n">extra_cat</span> <span class="o">=</span> <span class="n">combined_codes</span><span class="p">[</span><span class="n">code</span><span class="p">].</span><span class="n">cat</span> </span><span id="L-219"><a href="#L-219"><span class="linenos" data-line="219"></span></a> <span class="kr">if</span> <span class="n">extra_cat</span> <span class="kr">then</span> </span><span id="L-220"><a href="#L-220"><span class="linenos" data-line="220"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">extra_cats</span> <span class="kr">then</span> </span><span id="L-221"><a href="#L-221"><span class="linenos" data-line="221"></span></a> <span class="n">extra_cats</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-222"><a href="#L-222"><span class="linenos" data-line="222"></span></a> <span class="kr">end</span> </span><span id="L-223"><a href="#L-223"><span class="linenos" data-line="223"></span></a> <span class="nb">table.insert</span><span class="p">(</span><span class="n">extra_cats</span><span class="p">,</span> <span class="n">lang</span><span class="p">:</span><span class="n">getCanonicalName</span><span class="p">()</span> <span class="o">..</span> <span class="s2">" "</span> <span class="o">..</span> <span class="n">extra_cat</span><span class="p">)</span> </span><span id="L-224"><a href="#L-224"><span class="linenos" data-line="224"></span></a> <span class="kr">end</span> </span><span id="L-225"><a href="#L-225"><span class="linenos" data-line="225"></span></a> <span class="kr">end</span> </span><span id="L-226"><a href="#L-226"><span class="linenos" data-line="226"></span></a> <span class="kd">local</span> <span class="n">extra_display</span> <span class="o">=</span> <span class="n">combined_codes</span><span class="p">[</span><span class="n">code</span><span class="p">].</span><span class="n">display</span> </span><span id="L-227"><a href="#L-227"><span class="linenos" data-line="227"></span></a> <span class="kr">if</span> <span class="n">extra_display</span> <span class="kr">then</span> </span><span id="L-228"><a href="#L-228"><span class="linenos" data-line="228"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">extra_displays</span> <span class="kr">then</span> </span><span id="L-229"><a href="#L-229"><span class="linenos" data-line="229"></span></a> <span class="n">extra_displays</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-230"><a href="#L-230"><span class="linenos" data-line="230"></span></a> <span class="kr">end</span> </span><span id="L-231"><a href="#L-231"><span class="linenos" data-line="231"></span></a> <span class="nb">table.insert</span><span class="p">(</span><span class="n">extra_displays</span><span class="p">,</span> <span class="n">autoadd_abbr</span><span class="p">(</span><span class="n">extra_display</span><span class="p">))</span> </span><span id="L-232"><a href="#L-232"><span class="linenos" data-line="232"></span></a> <span class="kr">end</span> </span><span id="L-233"><a href="#L-233"><span class="linenos" data-line="233"></span></a> <span class="kr">else</span> </span><span id="L-234"><a href="#L-234"><span class="linenos" data-line="234"></span></a> <span class="kr">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">one_parts</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span><span class="n">all_parts</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-235"><a href="#L-235"><span class="linenos" data-line="235"></span></a> <span class="nb">table.insert</span><span class="p">(</span><span class="n">one_parts</span><span class="p">,</span> <span class="n">code</span><span class="p">)</span> </span><span id="L-236"><a href="#L-236"><span class="linenos" data-line="236"></span></a> <span class="kr">end</span> </span><span id="L-237"><a href="#L-237"><span class="linenos" data-line="237"></span></a> <span class="kr">end</span> </span><span id="L-238"><a href="#L-238"><span class="linenos" data-line="238"></span></a> <span class="kr">end</span> </span><span id="L-239"><a href="#L-239"><span class="linenos" data-line="239"></span></a> </span><span id="L-240"><a href="#L-240"><span class="linenos" data-line="240"></span></a> <span class="kr">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">parts</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span><span class="n">all_parts</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-241"><a href="#L-241"><span class="linenos" data-line="241"></span></a> <span class="kr">if</span> <span class="o">#</span><span class="n">formatted_specs</span> <span class="o">></span> <span class="mi">0</span> <span class="kr">then</span> </span><span id="L-242"><a href="#L-242"><span class="linenos" data-line="242"></span></a> <span class="nb">table.insert</span><span class="p">(</span><span class="n">formatted_specs</span><span class="p">,</span> <span class="s2">"or"</span><span class="p">)</span> </span><span id="L-243"><a href="#L-243"><span class="linenos" data-line="243"></span></a> <span class="kr">end</span> </span><span id="L-244"><a href="#L-244"><span class="linenos" data-line="244"></span></a> <span class="nb">table.insert</span><span class="p">(</span><span class="n">formatted_specs</span><span class="p">,</span> <span class="n">do_gender_spec</span><span class="p">(</span><span class="n">spec</span><span class="p">,</span> <span class="n">parts</span><span class="p">))</span> </span><span id="L-245"><a href="#L-245"><span class="linenos" data-line="245"></span></a> <span class="kr">end</span> </span><span id="L-246"><a href="#L-246"><span class="linenos" data-line="246"></span></a> </span><span id="L-247"><a href="#L-247"><span class="linenos" data-line="247"></span></a> <span class="kr">if</span> <span class="n">extra_cats</span> <span class="kr">then</span> </span><span id="L-248"><a href="#L-248"><span class="linenos" data-line="248"></span></a> <span class="kr">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">cat</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span><span class="n">extra_cats</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-249"><a href="#L-249"><span class="linenos" data-line="249"></span></a> <span class="nb">table.insert</span><span class="p">(</span><span class="n">categories</span><span class="p">,</span> <span class="n">cat</span><span class="p">)</span> </span><span id="L-250"><a href="#L-250"><span class="linenos" data-line="250"></span></a> <span class="kr">end</span> </span><span id="L-251"><a href="#L-251"><span class="linenos" data-line="251"></span></a> <span class="kr">end</span> </span><span id="L-252"><a href="#L-252"><span class="linenos" data-line="252"></span></a> </span><span id="L-253"><a href="#L-253"><span class="linenos" data-line="253"></span></a> <span class="kr">if</span> <span class="n">extra_displays</span> <span class="kr">then</span> </span><span id="L-254"><a href="#L-254"><span class="linenos" data-line="254"></span></a> <span class="kr">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">display</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span><span class="n">extra_displays</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-255"><a href="#L-255"><span class="linenos" data-line="255"></span></a> <span class="nb">table.insert</span><span class="p">(</span><span class="n">formatted_specs</span><span class="p">,</span> <span class="n">display</span><span class="p">)</span> </span><span id="L-256"><a href="#L-256"><span class="linenos" data-line="256"></span></a> <span class="kr">end</span> </span><span id="L-257"><a href="#L-257"><span class="linenos" data-line="257"></span></a> <span class="kr">end</span> </span><span id="L-258"><a href="#L-258"><span class="linenos" data-line="258"></span></a> <span class="kr">end</span> </span><span id="L-259"><a href="#L-259"><span class="linenos" data-line="259"></span></a> </span><span id="L-260"><a href="#L-260"><span class="linenos" data-line="260"></span></a> <span class="n">is_nounclass</span> <span class="o">=</span> <span class="kc">false</span> </span><span id="L-261"><a href="#L-261"><span class="linenos" data-line="261"></span></a> <span class="kr">end</span> </span><span id="L-262"><a href="#L-262"><span class="linenos" data-line="262"></span></a> </span><span id="L-263"><a href="#L-263"><span class="linenos" data-line="263"></span></a> <span class="c1">-- Ensure that the specifications are either all noun classes, or none are.</span> </span><span id="L-264"><a href="#L-264"><span class="linenos" data-line="264"></span></a> <span class="kr">if</span> <span class="n">all_is_nounclass</span> <span class="o">==</span> <span class="kc">nil</span> <span class="kr">then</span> </span><span id="L-265"><a href="#L-265"><span class="linenos" data-line="265"></span></a> <span class="n">all_is_nounclass</span> <span class="o">=</span> <span class="n">is_nounclass</span> </span><span id="L-266"><a href="#L-266"><span class="linenos" data-line="266"></span></a> <span class="kr">elseif</span> <span class="n">all_is_nounclass</span> <span class="o">~=</span> <span class="n">is_nounclass</span> <span class="kr">then</span> </span><span id="L-267"><a href="#L-267"><span class="linenos" data-line="267"></span></a> <span class="nb">error</span><span class="p">(</span><span class="s2">"Noun classes and genders cannot be mixed. Please use either one or the other."</span><span class="p">)</span> </span><span id="L-268"><a href="#L-268"><span class="linenos" data-line="268"></span></a> <span class="kr">end</span> </span><span id="L-269"><a href="#L-269"><span class="linenos" data-line="269"></span></a> <span class="kr">end</span> </span><span id="L-270"><a href="#L-270"><span class="linenos" data-line="270"></span></a> </span><span id="L-271"><a href="#L-271"><span class="linenos" data-line="271"></span></a> <span class="kr">if</span> <span class="n">lang</span> <span class="ow">and</span> <span class="n">pos_for_cat</span> <span class="kr">then</span> </span><span id="L-272"><a href="#L-272"><span class="linenos" data-line="272"></span></a> <span class="kr">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">cat</span> <span class="kr">in</span> <span class="nb">ipairs</span><span class="p">(</span><span class="n">categories</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-273"><a href="#L-273"><span class="linenos" data-line="273"></span></a> <span class="n">categories</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">cat</span><span class="p">:</span><span class="n">gsub</span><span class="p">(</span><span class="s2">"POS"</span><span class="p">,</span> <span class="n">pos_for_cat</span><span class="p">)</span> </span><span id="L-274"><a href="#L-274"><span class="linenos" data-line="274"></span></a> <span class="kr">end</span> </span><span id="L-275"><a href="#L-275"><span class="linenos" data-line="275"></span></a> <span class="kr">end</span> </span><span id="L-276"><a href="#L-276"><span class="linenos" data-line="276"></span></a> </span><span id="L-277"><a href="#L-277"><span class="linenos" data-line="277"></span></a> <span class="kr">if</span> <span class="n">all_is_nounclass</span> <span class="kr">then</span> </span><span id="L-278"><a href="#L-278"><span class="linenos" data-line="278"></span></a> <span class="c1">-- Add the processed codes together with slashes</span> </span><span id="L-279"><a href="#L-279"><span class="linenos" data-line="279"></span></a> <span class="kr">return</span> <span class="s1">'<span class="gender">class '</span> <span class="o">..</span> <span class="nb">table.concat</span><span class="p">(</span><span class="n">formatted_specs</span><span class="p">,</span> <span class="s2">"/"</span><span class="p">)</span> <span class="o">..</span> <span class="s2">"</span>"</span><span class="p">,</span> <span class="n">categories</span> </span><span id="L-280"><a href="#L-280"><span class="linenos" data-line="280"></span></a> <span class="kr">else</span> </span><span id="L-281"><a href="#L-281"><span class="linenos" data-line="281"></span></a> <span class="c1">-- Add the processed codes together with spaces</span> </span><span id="L-282"><a href="#L-282"><span class="linenos" data-line="282"></span></a> <span class="kr">return</span> <span class="s1">'<span class="gender">'</span> <span class="o">..</span> <span class="nb">table.concat</span><span class="p">(</span><span class="n">formatted_specs</span><span class="p">,</span> <span class="s2">" "</span><span class="p">)</span> <span class="o">..</span> <span class="s2">"</span>"</span><span class="p">,</span> <span class="n">categories</span> </span><span id="L-283"><a href="#L-283"><span class="linenos" data-line="283"></span></a> <span class="kr">end</span> </span><span id="L-284"><a href="#L-284"><span class="linenos" data-line="284"></span></a><span class="kr">end</span> </span><span id="L-285"><a href="#L-285"><span class="linenos" data-line="285"></span></a> </span><span id="L-286"><a href="#L-286"><span class="linenos" data-line="286"></span></a><span class="kr">return</span> <span class="n">export</span> </span></pre></div> <!-- NewPP limit report Parsed by mw‐web.codfw.main‐f69cdc8f6‐rzfvc Cached time: 20241124062626 Cache expiry: 2592000 Reduced expiry: false Complications: [vary‐revision‐sha1, show‐toc] CPU time usage: 0.144 seconds Real time usage: 0.382 seconds Preprocessor visited node count: 334/1000000 Post‐expand include size: 46158/2097152 bytes Template argument size: 10/2097152 bytes Highest expansion depth: 6/100 Expensive parser function count: 30/500 Unstrip recursion depth: 0/20 Unstrip post‐expand size: 4325/5000000 bytes Lua time usage: 0.102/10.000 seconds Lua memory usage: 3284235/104857600 bytes Number of Wikibase entities loaded: 0/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 349.853 1 Template:documentation 100.00% 349.853 1 -total 59.42% 207.892 1 Template:module_documentation 7.34% 25.688 9 Template:tl 3.89% 13.613 3 Template:g 2.20% 7.680 1 Template:module_cat --> </div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">Retrieved from "<a dir="ltr" href="https://en.wiktionary.org/w/index.php?title=Module:gender_and_number&oldid=82297662">https://en.wiktionary.org/w/index.php?title=Module:gender_and_number&oldid=82297662</a>"</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Special:Categories" title="Special:Categories">Category</a>: <ul><li><a href="/wiki/Category:Page_generation_modules" title="Category:Page generation modules">Page generation modules</a></li></ul></div></div> </div> </div> <div id="mw-navigation"> <h2>Navigation menu</h2> <div id="mw-head"> <nav id="p-personal" class="mw-portlet mw-portlet-personal vector-user-menu-legacy vector-menu" aria-labelledby="p-personal-label" > <h3 id="p-personal-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Personal tools</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-anonuserpage" class="mw-list-item"><span title="The user page for the IP address you are editing as">Not logged in</span></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/Special:MyTalk" title="Discussion about edits from this IP address [n]" accesskey="n"><span>Talk</span></a></li><li id="pt-anoncontribs" class="mw-list-item"><a href="/wiki/Special:MyContributions" title="A list of edits made from this IP address [y]" accesskey="y"><span>Contributions</span></a></li><li id="pt-createaccount" class="mw-list-item"><a href="/w/index.php?title=Special:CreateAccount&returnto=Module%3Agender+and+number" title="You are encouraged to create an account and log in; however, it is not mandatory"><span>Create account</span></a></li><li id="pt-login" class="mw-list-item"><a href="/w/index.php?title=Special:UserLogin&returnto=Module%3Agender+and+number" title="You are encouraged to log in; however, it is not mandatory [o]" accesskey="o"><span>Log in</span></a></li> </ul> </div> </nav> <div id="left-navigation"> <nav id="p-namespaces" class="mw-portlet mw-portlet-namespaces vector-menu-tabs vector-menu-tabs-legacy vector-menu" aria-labelledby="p-namespaces-label" > <h3 id="p-namespaces-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Namespaces</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-nstab-module" class="selected mw-list-item"><a href="/wiki/Module:gender_and_number" title="View the module page [c]" accesskey="c"><span>Module</span></a></li><li id="ca-talk" class="mw-list-item"><a href="/wiki/Module_talk:gender_and_number" rel="discussion" title="Discussion about the content page [t]" accesskey="t"><span>Discussion</span></a></li> </ul> </div> </nav> <nav id="p-variants" class="mw-portlet mw-portlet-variants emptyPortlet vector-menu-dropdown vector-menu" aria-labelledby="p-variants-label" > <input type="checkbox" id="p-variants-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-variants" class="vector-menu-checkbox" aria-labelledby="p-variants-label" > <label id="p-variants-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">English</span> </label> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </nav> </div> <div id="right-navigation"> <nav id="p-views" class="mw-portlet mw-portlet-views vector-menu-tabs vector-menu-tabs-legacy vector-menu" aria-labelledby="p-views-label" > <h3 id="p-views-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Views</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-view" class="selected mw-list-item"><a href="/wiki/Module:gender_and_number"><span>Read</span></a></li><li id="ca-viewsource" class="mw-list-item"><a href="/w/index.php?title=Module:gender_and_number&action=edit" title="This page is protected. You can view its source [e]" accesskey="e"><span>View source</span></a></li><li id="ca-history" class="mw-list-item"><a href="/w/index.php?title=Module:gender_and_number&action=history" title="Past revisions of this page [h]" accesskey="h"><span>History</span></a></li> </ul> </div> </nav> <nav id="p-cactions" class="mw-portlet mw-portlet-cactions emptyPortlet vector-menu-dropdown vector-menu" aria-labelledby="p-cactions-label" title="More options" > <input type="checkbox" id="p-cactions-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-cactions" class="vector-menu-checkbox" aria-labelledby="p-cactions-label" > <label id="p-cactions-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">More</span> </label> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </nav> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box"> <h3 >Search</h3> <form action="/w/index.php" id="searchform" class="vector-search-box-form"> <div id="simpleSearch" class="vector-search-box-inner" data-search-loc="header-navigation"> <input class="vector-search-box-input" type="search" name="search" placeholder="Search Wiktionary" aria-label="Search Wiktionary" autocapitalize="none" title="Search Wiktionary [f]" accesskey="f" id="searchInput" > <input type="hidden" name="title" value="Special:Search"> <input id="mw-searchButton" class="searchButton mw-fallbackSearchButton" type="submit" name="fulltext" title="Search the pages for this text" value="Search"> <input id="searchButton" class="searchButton" type="submit" name="go" title="Go to a page with this exact name if it exists" value="Go"> </div> </form> </div> </div> </div> <div id="mw-panel" class="vector-legacy-sidebar"> <div id="p-logo" role="banner"> <a class="mw-wiki-logo" href="/wiki/Wiktionary:Main_Page" title="Visit the main page"></a> </div> <nav id="p-navigation" class="mw-portlet mw-portlet-navigation vector-menu-portal portal vector-menu" aria-labelledby="p-navigation-label" > <h3 id="p-navigation-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Navigation</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage-text" class="mw-list-item"><a href="/wiki/Wiktionary:Main_Page"><span>Main Page</span></a></li><li id="n-portal" class="mw-list-item"><a href="/wiki/Wiktionary:Community_portal" title="About the project, what you can do, where to find things"><span>Community portal</span></a></li><li id="n-requestedarticles" class="mw-list-item"><a href="/wiki/Wiktionary:Requested_entries"><span>Requested entries</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/Special:RecentChanges" title="A list of recent changes in the wiki [r]" accesskey="r"><span>Recent changes</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/Special:Random" title="Load a random page [x]" accesskey="x"><span>Random entry</span></a></li><li id="n-help" class="mw-list-item"><a href="https://en.wiktionary.org/wiki/Help:Contents" title="The place to find out"><span>Help</span></a></li><li id="n-Glossary" class="mw-list-item"><a href="/wiki/Appendix:Glossary"><span>Glossary</span></a></li><li id="n-sitesupport" class="mw-list-item"><a href="//donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_en.wiktionary.org&uselang=en" title="Support us"><span>Donations</span></a></li><li id="n-contact" class="mw-list-item"><a href="/wiki/Wiktionary:Contact_us"><span>Contact us</span></a></li> </ul> </div> </nav> <nav id="p-tb" class="mw-portlet mw-portlet-tb vector-menu-portal portal vector-menu" aria-labelledby="p-tb-label" > <h3 id="p-tb-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Tools</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/Special:WhatLinksHere/Module:gender_and_number" title="A list of all wiki pages that link here [j]" accesskey="j"><span>What links here</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/Special:RecentChangesLinked/Module:gender_and_number" rel="nofollow" title="Recent changes in pages linked from this page [k]" accesskey="k"><span>Related changes</span></a></li><li id="t-upload" class="mw-list-item"><a href="//commons.wikimedia.org/wiki/Special:UploadWizard?uselang=en" title="Upload files [u]" accesskey="u"><span>Upload file</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/wiki/Special:SpecialPages" title="A list of all special pages [q]" accesskey="q"><span>Special pages</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=Module:gender_and_number&oldid=82297662" title="Permanent link to this revision of this page"><span>Permanent link</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=Module:gender_and_number&action=info" title="More information about this page"><span>Page information</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Special:UrlShortener&url=https%3A%2F%2Fen.wiktionary.org%2Fwiki%2FModule%3Agender_and_number"><span>Get shortened URL</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Special:QrCode&url=https%3A%2F%2Fen.wiktionary.org%2Fwiki%2FModule%3Agender_and_number"><span>Download QR code</span></a></li> </ul> </div> </nav> <nav id="p-electronpdfservice-sidebar-portlet-heading" class="mw-portlet mw-portlet-electronpdfservice-sidebar-portlet-heading vector-menu-portal portal vector-menu" aria-labelledby="p-electronpdfservice-sidebar-portlet-heading-label" > <h3 id="p-electronpdfservice-sidebar-portlet-heading-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Print/export</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="electron-print_pdf" class="mw-list-item"><a href="/w/index.php?title=Special:DownloadAsPdf&page=Module%3Agender_and_number&action=show-download-screen"><span>Download as PDF</span></a></li><li id="t-print" class="mw-list-item"><a href="javascript:print();" rel="alternate" title="Printable version of this page [p]" accesskey="p"><span>Printable version</span></a></li> </ul> </div> </nav> <nav id="p-wikibase-otherprojects" class="mw-portlet mw-portlet-wikibase-otherprojects vector-menu-portal portal vector-menu" aria-labelledby="p-wikibase-otherprojects-label" > <h3 id="p-wikibase-otherprojects-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">In other projects</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q30564497" title="Link to connected data repository item [g]" accesskey="g"><span>Wikidata item</span></a></li> </ul> </div> </nav> <nav id="p-lang" class="mw-portlet mw-portlet-lang vector-menu-portal portal vector-menu" aria-labelledby="p-lang-label" > <h3 id="p-lang-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">In other languages</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="interlanguage-link interwiki-af mw-list-item"><a href="https://af.wiktionary.org/wiki/Module:gender_and_number" title="Module:gender and number – Afrikaans" lang="af" hreflang="af" data-title="Module:gender and number" data-language-autonym="Afrikaans" data-language-local-name="Afrikaans" class="interlanguage-link-target"><span>Afrikaans</span></a></li><li class="interlanguage-link interwiki-ar mw-list-item"><a href="https://ar.wiktionary.org/wiki/%D9%88%D8%AD%D8%AF%D8%A9:gender_and_number" title="وحدة:gender and number – Arabic" lang="ar" hreflang="ar" data-title="وحدة:gender and number" data-language-autonym="العربية" data-language-local-name="Arabic" class="interlanguage-link-target"><span>العربية</span></a></li><li class="interlanguage-link interwiki-bn mw-list-item"><a href="https://bn.wiktionary.org/wiki/%E0%A6%AE%E0%A6%A1%E0%A6%BF%E0%A6%89%E0%A6%B2:gender_and_number" title="মডিউল:gender and number – Bangla" lang="bn" hreflang="bn" data-title="মডিউল:gender and number" data-language-autonym="বাংলা" data-language-local-name="Bangla" class="interlanguage-link-target"><span>বাংলা</span></a></li><li class="interlanguage-link interwiki-zh-min-nan mw-list-item"><a href="https://zh-min-nan.wiktionary.org/wiki/%E6%A8%A1%E7%B5%84:gender_and_number" title="模組:gender and number – Minnan" lang="nan" hreflang="nan" data-title="模組:gender and number" data-language-autonym="閩南語 / Bân-lâm-gú" data-language-local-name="Minnan" class="interlanguage-link-target"><span>閩南語 / Bân-lâm-gú</span></a></li><li class="interlanguage-link interwiki-ca mw-list-item"><a href="https://ca.wiktionary.org/wiki/M%C3%B2dul:categoria_gramatical" title="Mòdul:categoria gramatical – Catalan" lang="ca" hreflang="ca" data-title="Mòdul:categoria gramatical" data-language-autonym="Català" data-language-local-name="Catalan" class="interlanguage-link-target"><span>Català</span></a></li><li class="interlanguage-link interwiki-eu mw-list-item"><a href="https://eu.wiktionary.org/wiki/Modulu:generoa_eta_numeroa" title="Modulu:generoa eta numeroa – Basque" lang="eu" hreflang="eu" data-title="Modulu:generoa eta numeroa" data-language-autonym="Euskara" data-language-local-name="Basque" class="interlanguage-link-target"><span>Euskara</span></a></li><li class="interlanguage-link interwiki-fy mw-list-item"><a href="https://fy.wiktionary.org/wiki/Module:gender_and_number" title="Module:gender and number – Western Frisian" lang="fy" hreflang="fy" data-title="Module:gender and number" data-language-autonym="Frysk" data-language-local-name="Western Frisian" class="interlanguage-link-target"><span>Frysk</span></a></li><li class="interlanguage-link interwiki-hi mw-list-item"><a href="https://hi.wiktionary.org/wiki/%E0%A4%85%E0%A4%A8%E0%A5%81%E0%A4%96%E0%A4%82%E0%A4%A1:gender_and_number" title="अनुखंड:gender and number – Hindi" lang="hi" hreflang="hi" data-title="अनुखंड:gender and number" data-language-autonym="हिन्दी" data-language-local-name="Hindi" class="interlanguage-link-target"><span>हिन्दी</span></a></li><li class="interlanguage-link interwiki-hsb mw-list-item"><a href="https://hsb.wiktionary.org/wiki/Modul:gender_and_number" title="Modul:gender and number – Upper Sorbian" lang="hsb" hreflang="hsb" data-title="Modul:gender and number" data-language-autonym="Hornjoserbsce" data-language-local-name="Upper Sorbian" class="interlanguage-link-target"><span>Hornjoserbsce</span></a></li><li class="interlanguage-link interwiki-id mw-list-item"><a href="https://id.wiktionary.org/wiki/Modul:gender_and_number" title="Modul:gender and number – Indonesian" lang="id" hreflang="id" data-title="Modul:gender and number" data-language-autonym="Bahasa Indonesia" data-language-local-name="Indonesian" class="interlanguage-link-target"><span>Bahasa Indonesia</span></a></li><li class="interlanguage-link interwiki-ka mw-list-item"><a href="https://ka.wiktionary.org/wiki/%E1%83%9B%E1%83%9D%E1%83%93%E1%83%A3%E1%83%9A%E1%83%98:gender_and_number" title="მოდული:gender and number – Georgian" lang="ka" hreflang="ka" data-title="მოდული:gender and number" data-language-autonym="ქართული" data-language-local-name="Georgian" class="interlanguage-link-target"><span>ქართული</span></a></li><li class="interlanguage-link interwiki-ky mw-list-item"><a href="https://ky.wiktionary.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:gender_and_number" title="Модуль:gender and number – Kyrgyz" lang="ky" hreflang="ky" data-title="Модуль:gender and number" data-language-autonym="Кыргызча" data-language-local-name="Kyrgyz" class="interlanguage-link-target"><span>Кыргызча</span></a></li><li class="interlanguage-link interwiki-lo mw-list-item"><a href="https://lo.wiktionary.org/wiki/Module:gender_and_number" title="Module:gender and number – Lao" lang="lo" hreflang="lo" data-title="Module:gender and number" data-language-autonym="ລາວ" data-language-local-name="Lao" class="interlanguage-link-target"><span>ລາວ</span></a></li><li class="interlanguage-link interwiki-hu mw-list-item"><a href="https://hu.wiktionary.org/wiki/Modul:gender_and_number" title="Modul:gender and number – Hungarian" lang="hu" hreflang="hu" data-title="Modul:gender and number" data-language-autonym="Magyar" data-language-local-name="Hungarian" class="interlanguage-link-target"><span>Magyar</span></a></li><li class="interlanguage-link interwiki-mg mw-list-item"><a href="https://mg.wiktionary.org/wiki/Module:gender_and_number" title="Module:gender and number – Malagasy" lang="mg" hreflang="mg" data-title="Module:gender and number" data-language-autonym="Malagasy" data-language-local-name="Malagasy" class="interlanguage-link-target"><span>Malagasy</span></a></li><li class="interlanguage-link interwiki-mnw mw-list-item"><a href="https://mnw.wiktionary.org/wiki/%E1%80%99%E1%80%9D%E1%80%BA%E1%80%82%E1%80%BB%E1%80%B0:gender_and_number" title="မဝ်ဂျူ:gender and number – Mon" lang="mnw" hreflang="mnw" data-title="မဝ်ဂျူ:gender and number" data-language-autonym="ဘာသာမန်" data-language-local-name="Mon" class="interlanguage-link-target"><span>ဘာသာမန်</span></a></li><li class="interlanguage-link interwiki-ms mw-list-item"><a href="https://ms.wiktionary.org/wiki/Modul:gender_and_number" title="Modul:gender and number – Malay" lang="ms" hreflang="ms" data-title="Modul:gender and number" data-language-autonym="Bahasa Melayu" data-language-local-name="Malay" class="interlanguage-link-target"><span>Bahasa Melayu</span></a></li><li class="interlanguage-link interwiki-my mw-list-item"><a href="https://my.wiktionary.org/wiki/%E1%80%99%E1%80%B1%E1%80%AC%E1%80%BA%E1%80%82%E1%80%BB%E1%80%B0%E1%80%B8:gender_and_number" title="မော်ဂျူး:gender and number – Burmese" lang="my" hreflang="my" data-title="မော်ဂျူး:gender and number" data-language-autonym="မြန်မာဘာသာ" data-language-local-name="Burmese" class="interlanguage-link-target"><span>မြန်မာဘာသာ</span></a></li><li class="interlanguage-link interwiki-nl mw-list-item"><a href="https://nl.wiktionary.org/wiki/Module:gender_and_number" title="Module:gender and number – Dutch" lang="nl" hreflang="nl" data-title="Module:gender and number" data-language-autonym="Nederlands" data-language-local-name="Dutch" class="interlanguage-link-target"><span>Nederlands</span></a></li><li class="interlanguage-link interwiki-ja mw-list-item"><a href="https://ja.wiktionary.org/wiki/%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:gender_and_number" title="モジュール:gender and number – Japanese" lang="ja" hreflang="ja" data-title="モジュール:gender and number" data-language-autonym="日本語" data-language-local-name="Japanese" class="interlanguage-link-target"><span>日本語</span></a></li><li class="interlanguage-link interwiki-nn mw-list-item"><a href="https://nn.wiktionary.org/wiki/Modul:gender_and_number" title="Modul:gender and number – Norwegian Nynorsk" lang="nn" hreflang="nn" data-title="Modul:gender and number" data-language-autonym="Norsk nynorsk" data-language-local-name="Norwegian Nynorsk" class="interlanguage-link-target"><span>Norsk nynorsk</span></a></li><li class="interlanguage-link interwiki-uz mw-list-item"><a href="https://uz.wiktionary.org/wiki/Modul:gender_and_number" title="Modul:gender and number – Uzbek" lang="uz" hreflang="uz" data-title="Modul:gender and number" data-language-autonym="Oʻzbekcha / ўзбекча" data-language-local-name="Uzbek" class="interlanguage-link-target"><span>Oʻzbekcha / ўзбекча</span></a></li><li class="interlanguage-link interwiki-pa mw-list-item"><a href="https://pa.wiktionary.org/wiki/%E0%A8%AE%E0%A9%8C%E0%A8%A1%E0%A8%BF%E0%A8%8A%E0%A8%B2:gender_and_number" title="ਮੌਡਿਊਲ:gender and number – Punjabi" lang="pa" hreflang="pa" data-title="ਮੌਡਿਊਲ:gender and number" data-language-autonym="ਪੰਜਾਬੀ" data-language-local-name="Punjabi" class="interlanguage-link-target"><span>ਪੰਜਾਬੀ</span></a></li><li class="interlanguage-link interwiki-blk mw-list-item"><a href="https://blk.wiktionary.org/wiki/%E1%80%99%E1%80%B1%E1%80%AC%E1%80%BA%E1%80%82%E1%80%BB%E1%80%B0%E1%80%B8:gender_and_number" title="မော်ဂျူး:gender and number – Pa'O" lang="blk" hreflang="blk" data-title="မော်ဂျူး:gender and number" data-language-autonym="ပအိုဝ်ႏဘာႏသာႏ" data-language-local-name="Pa'O" class="interlanguage-link-target"><span>ပအိုဝ်ႏဘာႏသာႏ</span></a></li><li class="interlanguage-link interwiki-km mw-list-item"><a href="https://km.wiktionary.org/wiki/Module:gender_and_number" title="Module:gender and number – Khmer" lang="km" hreflang="km" data-title="Module:gender and number" data-language-autonym="ភាសាខ្មែរ" data-language-local-name="Khmer" class="interlanguage-link-target"><span>ភាសាខ្មែរ</span></a></li><li class="interlanguage-link interwiki-si mw-list-item"><a href="https://si.wiktionary.org/wiki/Module:gender_and_number" title="Module:gender and number – Sinhala" lang="si" hreflang="si" data-title="Module:gender and number" data-language-autonym="සිංහල" data-language-local-name="Sinhala" class="interlanguage-link-target"><span>සිංහල</span></a></li><li class="interlanguage-link interwiki-simple mw-list-item"><a href="https://simple.wiktionary.org/wiki/Module:gender_and_number" title="Module:gender and number – Simple English" lang="en-simple" hreflang="en-simple" data-title="Module:gender and number" data-language-autonym="Simple English" data-language-local-name="Simple English" class="interlanguage-link-target"><span>Simple English</span></a></li><li class="interlanguage-link interwiki-ckb mw-list-item"><a href="https://ckb.wiktionary.org/wiki/%D9%85%DB%86%D8%AF%DB%8C%D9%88%D9%88%D9%84:gender_and_number" title="مۆدیوول:gender and number – Central Kurdish" lang="ckb" hreflang="ckb" data-title="مۆدیوول:gender and number" data-language-autonym="کوردی" data-language-local-name="Central Kurdish" class="interlanguage-link-target"><span>کوردی</span></a></li><li class="interlanguage-link interwiki-sr mw-list-item"><a href="https://sr.wiktionary.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB:gender_and_number" title="Модул:gender and number – Serbian" lang="sr" hreflang="sr" data-title="Модул:gender and number" data-language-autonym="Српски / srpski" data-language-local-name="Serbian" class="interlanguage-link-target"><span>Српски / srpski</span></a></li><li class="interlanguage-link interwiki-shn mw-list-item"><a href="https://shn.wiktionary.org/wiki/%E1%80%99%E1%80%B1%E1%82%83%E1%82%87%E1%81%B5%E1%80%BB%E1%80%B0%E1%80%B8:gender_and_number" title="မေႃႇၵျူး:gender and number – Shan" lang="shn" hreflang="shn" data-title="မေႃႇၵျူး:gender and number" data-language-autonym="ၽႃႇသႃႇတႆး " data-language-local-name="Shan" class="interlanguage-link-target"><span>ၽႃႇသႃႇတႆး </span></a></li><li class="interlanguage-link interwiki-th mw-list-item"><a href="https://th.wiktionary.org/wiki/%E0%B8%A1%E0%B8%AD%E0%B8%94%E0%B8%B9%E0%B8%A5:gender_and_number" title="มอดูล:gender and number – Thai" lang="th" hreflang="th" data-title="มอดูล:gender and number" data-language-autonym="ไทย" data-language-local-name="Thai" class="interlanguage-link-target"><span>ไทย</span></a></li><li class="interlanguage-link interwiki-tr mw-list-item"><a href="https://tr.wiktionary.org/wiki/Mod%C3%BCl:cinsiyet_ve_numara" title="Modül:cinsiyet ve numara – Turkish" lang="tr" hreflang="tr" data-title="Modül:cinsiyet ve numara" data-language-autonym="Türkçe" data-language-local-name="Turkish" class="interlanguage-link-target"><span>Türkçe</span></a></li><li class="interlanguage-link interwiki-ur mw-list-item"><a href="https://ur.wiktionary.org/wiki/%D9%85%D8%A7%DA%88%DB%8C%D9%88%D9%84:gender_and_number" title="ماڈیول:gender and number – Urdu" lang="ur" hreflang="ur" data-title="ماڈیول:gender and number" data-language-autonym="اردو" data-language-local-name="Urdu" class="interlanguage-link-target"><span>اردو</span></a></li><li class="interlanguage-link interwiki-vi mw-list-item"><a href="https://vi.wiktionary.org/wiki/M%C3%B4_%C4%91un:gender_and_number" title="Mô đun:gender and number – Vietnamese" lang="vi" hreflang="vi" data-title="Mô đun:gender and number" data-language-autonym="Tiếng Việt" data-language-local-name="Vietnamese" class="interlanguage-link-target"><span>Tiếng Việt</span></a></li><li class="interlanguage-link interwiki-yue mw-list-item"><a href="https://yue.wiktionary.org/wiki/%E6%A8%A1%E7%B5%84:gender_and_number" title="模組:gender and number – Cantonese" lang="yue" hreflang="yue" data-title="模組:gender and number" data-language-autonym="粵語" data-language-local-name="Cantonese" class="interlanguage-link-target"><span>粵語</span></a></li><li class="interlanguage-link interwiki-zh mw-list-item"><a href="https://zh.wiktionary.org/wiki/Module:Gender_and_number" title="Module:Gender and number – Chinese" lang="zh" hreflang="zh" data-title="Module:Gender and number" data-language-autonym="中文" data-language-local-name="Chinese" class="interlanguage-link-target"><span>中文</span></a></li> </ul> <div class="after-portlet after-portlet-lang"><span class="wb-langlinks-edit wb-langlinks-link"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q30564497#sitelinks-wiktionary" title="Edit interlanguage links" class="wbc-editpage">Edit links</a></span></div> </div> </nav> </div> </div> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <li id="footer-info-lastmod"> This page was last edited on 6 October 2024, at 07:54.</li> <li id="footer-info-copyright">Definitions and other text are available under the <a rel="nofollow" class="external text" href="//creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike License</a>; additional terms may apply. By using this site, you agree to the <a class="external text" href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use">Terms of Use</a> and <a class="external text" href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">Privacy Policy.</a></li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">Privacy policy</a></li> <li id="footer-places-about"><a href="/wiki/Wiktionary:About">About Wiktionary</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Wiktionary:General_disclaimer">Disclaimers</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct">Code of Conduct</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">Developers</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/en.wiktionary.org">Statistics</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Cookie statement</a></li> <li id="footer-places-mobileview"><a href="//en.m.wiktionary.org/w/index.php?title=Module:gender_and_number&mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Mobile view</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="https://wikimediafoundation.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/static/images/footer/wikimedia-button.svg" width="84" height="29" alt="Wikimedia Foundation" loading="lazy"></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/w/resources/assets/poweredby_mediawiki.svg" alt="Powered by MediaWiki" width="88" height="31" loading="lazy"></a></li> </ul> </footer> <script>(RLQ=window.RLQ||[]).push(function(){mw.log.warn("This page is using the deprecated ResourceLoader module \"codex-search-styles\".\n[1.43] Use a CodexModule with codexComponents to set your specific components used: https://www.mediawiki.org/wiki/Codex#Using_a_limited_subset_of_components");mw.config.set({"wgHostname":"mw-web.codfw.main-f69cdc8f6-rzfvc","wgBackendResponseTime":522,"wgPageParseReport":{"limitreport":{"cputime":"0.144","walltime":"0.382","ppvisitednodes":{"value":334,"limit":1000000},"postexpandincludesize":{"value":46158,"limit":2097152},"templateargumentsize":{"value":10,"limit":2097152},"expansiondepth":{"value":6,"limit":100},"expensivefunctioncount":{"value":30,"limit":500},"unstrip-depth":{"value":0,"limit":20},"unstrip-size":{"value":4325,"limit":5000000},"entityaccesscount":{"value":0,"limit":400},"timingprofile":["100.00% 349.853 1 Template:documentation","100.00% 349.853 1 -total"," 59.42% 207.892 1 Template:module_documentation"," 7.34% 25.688 9 Template:tl"," 3.89% 13.613 3 Template:g"," 2.20% 7.680 1 Template:module_cat"]},"scribunto":{"limitreport-timeusage":{"value":"0.102","limit":"10.000"},"limitreport-memusage":{"value":3284235,"limit":104857600}},"cachereport":{"origin":"mw-web.codfw.main-f69cdc8f6-rzfvc","timestamp":"20241124062626","ttl":2592000,"transientcontent":false}}});});</script> </body> </html>