Wiktionary:Coding conventions: difference between revisions

Content deleted Content added
m Reverted edits by 2600:1004:B058:F01C:0:4A:9683:F801. If you think this rollback is in error, please leave a message on my talk page.
Tag: Rollback
→‎Customary abbreviations: delete form-of inflection tag abbreviations; out of date; properly maintained version found on Template:inflection of documentation
 
(38 intermediate revisions by 30 users not shown)
Line 4:
* Language, family and script codes are based on [[w:BCP 47|BCP 47]].
** Non-standard language and family codes should consist of a (preferably standard) parent family code and a Wiktionary-specific suffix.
** Codes for proto-languagesprotolanguages should consist of a family code and a <code>-pro</code> suffix.
** Non-standard script codes should consist of a language code prefix, and a standard {{w|ISO 15924}} script code. (Exceptions: <code>IPAcharIpach</code>, <code>LatinxMusic</code>, <code>musicalPolyt</code>, <code>polytonic</code>, <code>RuminumeralsRumin</code>.)
 
== Templates ==
* Names of templates related to a particular language should be prefixed by the language code, see [[WT:List of languages]]. Likewise for templates specific to a script; see [[WT:List of scripts]] for a list of script codes.
** For proto-languages, it is permitted to drop <code>-pro</code> from the code, and use the code of the family alone.
* Names of reference templates should have the prefix "<code>R:</code>". If the reference is for one specific language, it is often followed by language code and a colon.
* Likewise, usage note templates should have the prefix "<code>U:</code>".
* Relatively complex templates, especially those with parser functions (like {{temp|#if:}} or {{temp|#switch:}}), should have the code split up onto multiple lines for readability. Wikicode constructs should be aligned so that the starting curly braces and ending curly braces line up vertically. The line breaks themselves should be wrapped in comments; each line should end with a begin-comment tag <code><nowiki><!--</nowiki></code> paired with an end-comment tag <code><nowiki>--></nowiki></code> on the next line. This avoids line breaks accidentally appearing in the output or parameters of templates. Like so:
<pre><!--
-->{{#if:{{{something|}}}<!--
-->|<!--
-->do things<!--
-->}}<!--
-->
</pre>
* Templates which add categories that are only intended for entries should have extra code that only adds the category in the entry namespaces (main namespace and Appendix:). The templates {{temp|categorizecat}} (for ''raw categories''), {{temp|catlangnamecln}} (for categories beginning with a language name, aka ''grammar categories'') and {{temp|catlangcodeC}} (for categories beginning with a language code, aka ''topic categories'') do this automatically, so using them is preferred.
* If a template adds a category, but it would be desirable to suppress that category in some cases, it should have a {{para|nocat}} parameter which prevents that.
* If you want to accept a variable number of named parameters of the same type in a template, the first shall be named {{para|<var>foo</var>}}, while the rest shall be {{para|<var>foo</var>2}}, {{para|<var>foo</var>3}}, {{para|<var>foo</var>4}} and so on.
Line 24 ⟶ 26:
* Headword-line templates should either be implemented in a separate module using [[Module:headword]], or use {{temp|head}}.
* Redirects for templates intended for entries should be created sparingly.
* Avoid doing string processing in templates. If you find yourself in need of a "substring"“substring” function, you might have crossed the point where the template should be converted to Lua.
 
== Lua ==
Line 33 ⟶ 35:
* Variables holding return values from {{code|lua|require()}} (i.e. imported modules) should have their names prefixed with <code>m_</code>.
* Words in variable and function names should be separated with underscores. Variables should be all-lowercase unless other reasons dictate otherwise.
* [http://blog.codinghorror.com/coding-without-comments/ Comments should be used sparingly; good code does not need much commenting.] Keep comments brief and to the point. Do not put [[ASCII art]] in comments.
** Comments should not be used for documentation; use the documentation subpage instead.
* Unit tests for a module, if any, shall be put on a <code>/testcases</code> subpage.
** Unit test modules should use [[Module:UnitTests]]. See that module'smodule’s page for usage details.
** If a specific kind of test is to be performed repeatedly, it shall have its own method whose name starts with <code>check_</code>.
** An alternative test framework, [[Module:ScribuntoUnit]], has been imported from Wikipedia and can also be used.
Line 55:
 
== Customary abbreviations ==
* <code>a</code> - aspect
* <code>adj</code> -&nbsp;– adjective
* <code>adv</code> -&nbsp;– adverb
* <code>alt</code> -&nbsp;– alternative display (link label)
* <code>c</code> -&nbsp;– common gender
* <code>conj</code> -&nbsp;– conjugation ''or'' conjunction
* <code>d</code> ''or'' <code>du</code> -&nbsp;– dual
* <code>decl</code> -&nbsp;– declension
* <code>f</code> -&nbsp;– feminine
* <code>g</code> -&nbsp;– gender
* <code>gloss</code> ''or'' <code>t</code> -&nbsp;– translation gloss (for non-English terms)
* <code>id</code> -&nbsp;– sense ID (see {{temp|senseid}})
* <code>impf</code> -&nbsp;– imperfective
* <code>infl</code> -&nbsp;– inflection
* <code>lang</code> -&nbsp;– language code
* <code>m</code> -&nbsp;– masculine (exception: {{temp|m}} = mention)
* <code>n</code> -&nbsp;– neuter
* <code>p</code> ''or'' <code>pl</code> -&nbsp;– plural
* <code>pf</code> -&nbsp;– perfective
* <code>pos</code> -&nbsp;– part of speech
* <code>pron</code> -&nbsp;– pronoun ''or'' pronunciation
* <code>pronunc</code> -&nbsp;– pronunciation
* <code>rf...</code> -&nbsp;– request for...
* <code>s</code> ''or'' <code>sg</code> -&nbsp;– singular
* <code>sc</code> -&nbsp;– script code
* <code>tr</code>, <code>translit</code> -&nbsp;– transliteration
 
=== Verb inflection ===
* <code>actv</code> - [[active voice]]
* <code>aori</code> - [[aorist tense]]
* <code>cond</code> - [[conditional mood]]
* <code>futr</code> - [[future tense]]
* <code>imp</code> ''or'' <code>impr</code> - [[imperative mood]]
* <code>impf</code> - [[imperfect tense]]
* <code>ind</code> ''or'' <code>indc</code> - [[indicative mood]]
* <code>inf</code> - [[infinitive]]
* <code>ptc</code> ''or'' <code>part</code> - [[participle]]
* <code>past</code> - [[past tense]]
* <code>pasv</code> - [[passive voice]]
* <code>perf</code> - [[perfect tense]]
* <code>potn</code> - [[potential mood]]
* <code>pres</code> - [[present tense]]
* <code>pret</code> - [[preterite tense]]
* <code>sub</code> ''or'' <code>subj</code> - [[subjunctive mood]]
* <code>opt</code> - [[optative mood]]
 
=== Grammatical cases ===
* <code>abe</code> - [[abessive case]]
* <code>abl</code> - [[ablative case]]
* <code>abs</code> - [[absolutive case]]
* <code>acc</code> - [[accusative case]]
* <code>ade</code> - [[adessive case]]
* <code>all</code> - [[allative case]]
* <code>cfi</code> - [[causal-final case]]
* <code>com</code> - [[comitative case]]
* <code>dat</code> - [[dative case]]
* <code>del</code> - [[delative case]]
* <code>ela</code> - [[elative case]]
* <code>erg</code> - [[ergative case]]
* <code>esf</code> - [[essive-formal case]]
* <code>esm</code> - [[essive-modal case]]
* <code>ess</code> - [[essive case]]
* <code>gen</code> - [[genitive case]]
* <code>ill</code> - [[illative case]]
* <code>ine</code> - [[inessive case]]
* <code>ins</code> - [[instrumental case]] ''or'' [[instructive case]]
* <code>loc</code> - [[locative case]]
* <code>nom</code> - [[nominative case]]
* <code>par</code> - [[partitive case]]
* <code>pre</code> ''or'' <code>prep</code> - [[prepositional case]]
* <code>sbl</code> - [[sublative case]]
* <code>spe</code> - [[superessive case]]
* <code>ter</code> - [[terminative case]]
* <code>tra</code> - [[translative case]]
* <code>voc</code> - [[vocative case]]
 
== And above all ==
Line 135 ⟶ 86:
 
== External links ==
* [http://blog.codinghorror.com/spartan-programming/ Jeff Atwood, "Spartan“Spartan Programming"Programming”]
* [http://javascript.crockford.com/code.html Douglas Crockford'sCrockford’s coding style guidelines]
 
[[Category:Modules| ]]