Modul:grammar-table/dok

Definition från Wiktionary, den fria ordlistan.
Hoppa till: navigering, sök

Detta är dokumentationssidan för Modul:grammar-table

Syfte[redigera]

Modulens syfte är att generera wikitabellkod som ska användas som byggstenar i grammatiktabeller. Med hjälp av modulen kan grammatikmoduler skapa grammatiktabeller på ett mer läsbart och överskådligt sätt.

Användning[redigera]

Den här modulen bör bara användas av grammatikmoduler, inte av mallar eller andra moduler.
local gt = require("Modul:grammar-table")

local str = gt.getStart(3, "mallnamn", quality_check_bool, "adjektiv")
         .. gt.getRow({"!", "Rubrik"}, "böjningsform")
         .. gt.getRow({"!", "Rubrik"}, "böjningsform")
         .. gt.getEnd(3, "Kommentar", "förled")

Specifikation[redigera]

getStart
Denna funktion används för att skapa den övre delen av grammatiktabellen.
getRow
Denna funktion används för att skapa en tabellrad. Den tar ett löpande antal icke namngivna argument.
1=, 2=, 3=, osv. Ett argument bestående av {"cellmeta", "cellinnehåll", type="css-klass"} alternativt "cellinnehåll" för varje cell.
1= (obligatorisk) "cellmeta": typiskt ! eller |, eventuellt följt av class, rowspan och/eller colspan i wikisyntax:
!, |, |class="min", |rowspan="2", |class="min" colspan="3"
Wiktionary:Stilguide/Grammatik/Skapa en mall finns en mer ingående beskrivning av grammatiktabellens delar, layout och css-klasser.
2= "cellinnehåll": Detta är själva textinnehållet i rutan, vanligtvis rubriknamnet eller böjningsformen.
Parametern kan utelämnas helt och får då "&‌nbsp;" som defaultvärde. Utan "&‌nbsp;" skulle tabellrutan bli helt tom och försvinna eftersom den skulle sakna innehåll.
type= länktyp som används för att ange en css-klass i en omgivande span-tagg runt länken: <span class="infl">[[böjningsform]]</span>
Om ingen länk finns, skapas heller ingen span-tagg.
infl är defaultvärdet och används normalt för alla rutor med böjningsformer. För defaultvärdet kan parametern helt utelämnas.
no-link Det normala är att orden länkas automatiskt, om det är möjligt. Med värdet "no-link" undertrycks länkningen.
link-only Det normala är att texten både länkas och omsluts med en span-tagg. Med värdet "link-only" skapas länken som vanligt, men span-taggen undertrycks.
adv, perfpart, prespart och eventuellt andra värden används likt "infl" som klassnamn och kan användas av css och javascript för annan funktionalitet.
Rubrikrutor påverkas inte av type-parametern och länkas därför inte heller automatiskt. Om en rubrikruta avses länkas, bör länkklamrar skickas med i cellinnehållet.
Om strängvarianten används så ges 1= defaultvärdet "|" och type= ges defaultvärdet "infl". Detta är det normala för alla böjningsformer som endast fyller en enstaka cell.
getEnd
Denna funktion används för att skapa den undre delen av grammatiktabellen.
makeMaybe
Denna funktion skapar och returnerar en färdigformaterad cell att skicka in till "getRow"-funktionen om 2= (format) är "wikitable", eller en textsträng om 2= (format) är "export". Default är oförändrad.
Den används relativt ofta för böjningsformer som är tveksamma (typiskt för svenska adjektivs maskulinumform innan pers=-parametern har angetts).
1= böjningsformen som sträng eller som en cell (där parameter 2= innehåller böjningsformen)
2= format ("wikitable" eller "export")
Textsträngen som skapas från "böjningsformen" är "'''('''böjningsformen''')?'''" om 2= (format) är "wikitable" (+ type anges till "no-link"), eller "böjningsformen?" om 2= (format) är "export". Default är "böjningsformen" och övriga defaultvärden.
makeSlightly
Denna funktion skapar och returnerar en färdigformaterad cell att skicka in till "getRow"-funktionen om 2= (format) är "wikitable". Default är oförändrad.
Vanligtvis åtföljs denna användning av en kommentar i tabellens not-ruta om varför formen är satt inom parentes.
1= böjningsformen som sträng eller som en cell (där parameter 2= innehåller böjningsformen)
2= format ("wikitable" eller "export")
Cellens böjningsparameter motsvarar "'''('''[[böjningsformen]]''')'''" om "wikitable" valts som format, annars "böjningsformen?" om "export" har valts. Default är "böjningsformen".

Tester[redigera]

All tests passed.

test01_basic:

Text Expected Actual
mut.getRow({"!", "rubrik", '|rowspan="2"'}, "form1", "form2", "form3") |-

!|rubrik |rowspan="2"|<span class="infl">[[form1]]</span> ||<span class="infl">[[form2]]</span> ||<span class="infl">[[form3]]</span>

|-

!|rubrik |rowspan="2"|<span class="infl">[[form1]]</span> ||<span class="infl">[[form2]]</span> ||<span class="infl">[[form3]]</span>

mut.getRow({"|", "[[form1]], [[form2]]", type="adv"}, "[[form3]], [[form4]]") |-

||<span class="adv">[[form1]]</span>, <span class="adv">[[form2]]</span> ||<span class="infl">[[form3]]</span>, <span class="infl">[[form4]]</span>

|-

||<span class="adv">[[form1]]</span>, <span class="adv">[[form2]]</span> ||<span class="infl">[[form3]]</span>, <span class="infl">[[form4]]</span>

mut.getRow("form1, form2") |-

||<span class="infl">[[form1]]</span>, <span class="infl">[[form2]]</span>

|-

||<span class="infl">[[form1]]</span>, <span class="infl">[[form2]]</span>

test02_only_content:

Text Expected Actual
mut.getRow("form1", "form2", "form3") |-

||<span class="infl">[[form1]]</span> ||<span class="infl">[[form2]]</span> ||<span class="infl">[[form3]]</span>

|-

||<span class="infl">[[form1]]</span> ||<span class="infl">[[form2]]</span> ||<span class="infl">[[form3]]</span>

test03_only_meta:

Text Expected Actual
mut.getRow({"!"}, {"|rowspan=2"}, {'|class="min"'}) |-

!|&nbsp; |rowspan="2"|&nbsp;[[Kategori:Wiktionary:Sidor med tomma celler]] |class="min"|&nbsp;[[Kategori:Wiktionary:Sidor med tomma celler]]

|-

!|&nbsp; |rowspan="2"|&nbsp;[[Kategori:Wiktionary:Sidor med tomma celler]] |class="min"|&nbsp;[[Kategori:Wiktionary:Sidor med tomma celler]]

test04_only_meta_and_type:

Text Expected Actual
mut.getRow({"!", type="no-link"}, {'|rowspan="2"', type="no-link"}) |-

!|&nbsp; |rowspan="2"|&nbsp;[[Kategori:Wiktionary:Sidor med tomma celler]]

|-

!|&nbsp; |rowspan="2"|&nbsp;[[Kategori:Wiktionary:Sidor med tomma celler]]

test05_no_extra_links:

Text Expected Actual
mut.getRow("[[form1]], form2") |-

||<span class="infl">[[form1]]</span>, form2

|-

||<span class="infl">[[form1]]</span>, form2

mut.getRow("[[form1]]<sup>1</sup>") |-

||<span class="infl">[[form1]]</span><sup>1</sup>

|-

||<span class="infl">[[form1]]</span><sup>1</sup>

mut.getRow("[[form1]], vard. [[form2]]") |-

||<span class="infl">[[form1]]</span>, vard. <span class="infl">[[form2]]</span>

|-

||<span class="infl">[[form1]]</span>, vard. <span class="infl">[[form2]]</span>

mut.getRow("([[form1]])") |-

||(<span class="infl">[[form1]]</span>)

|-

||(<span class="infl">[[form1]]</span>)

mut.getRow("[[form1|fōrm1]]") |-

||<span class="infl">[[form1|fōrm1]]</span>

|-

||<span class="infl">[[form1|fōrm1]]</span>

mut.getRow("<nowiki/>form1, form2")
Med nowiki i modul
|-

||<nowiki/>form1, form2

|-

||<nowiki/>form1, form2

mut.getRow("<nowiki/>form1, form2")
Med nowiki i mall
|-

||"`UNIQ--nowiki-00000001-QINU`"'form1, form2

|-

||"`UNIQ--nowiki-00000001-QINU`"'form1, form2

test06_multiple_words:

Text Expected Actual
mut.getRow("ord1 ord2") |-

||ord1 ord2

|-

||ord1 ord2

test07_special_cases:

Text Expected Actual
mut.getRow(nil) |-

||&nbsp;[[Kategori:Wiktionary:Sidor med tomma celler]]

|-

||&nbsp;[[Kategori:Wiktionary:Sidor med tomma celler]]

mut.getRow("") |-

||&nbsp;[[Kategori:Wiktionary:Sidor med tomma celler]]

|-

||&nbsp;[[Kategori:Wiktionary:Sidor med tomma celler]]

mut.getRow("-") |-

||–

|-

||–

mut.getRow("?") |-

||?

|-

||?

", type="no-link"})) |-

||&nbsp;[[Kategori:Wiktionary:Sidor med tomma celler]]

|-

||&nbsp;[[Kategori:Wiktionary:Sidor med tomma celler]]

", "", type="no-link"})) |-

||&nbsp;[[Kategori:Wiktionary:Sidor med tomma celler]]

|-

||&nbsp;[[Kategori:Wiktionary:Sidor med tomma celler]]

", "-", type="no-link"})) |-

||–

|-

||–

", "?", type="no-link"})) |-

||?

|-

||?

test_08_words_containg_special_chars:

Text Expected Actual
mut.getRow("e-post") |-

||<span class="infl">[[e-post]]</span>

|-

||<span class="infl">[[e-post]]</span>

mut.getRow("word's") |-

||<span class="infl">[[word's]]</span>

|-

||<span class="infl">[[word's]]</span>

mut.getRow("words'") |-

||<span class="infl">[[words']]</span>

|-

||<span class="infl">[[words']]</span>

mut.getRow("tv:n") |-

||<span class="infl">[[tv:n]]</span>

|-

||<span class="infl">[[tv:n]]</span>

mut.getRow("[[Övriga_uppslagsord#EU:s|EU:s]]") |-

||<span class="infl">[[Övriga_uppslagsord#EU:s|EU:s]]</span>

|-

||<span class="infl">[[Övriga_uppslagsord#EU:s|EU:s]]</span>

mut.getRow("''[[Betula]]''") |-

||''<span class="infl">[[Betula]]</span>''

|-

||''<span class="infl">[[Betula]]</span>''

test_09_maybe_slightly:

Text Expected Actual
mut.getRow(mut.makeMaybe("test", "wikitable")) |-

||'''('''test''')?'''

|-

||'''('''test''')?'''

mut.getRow(mut.makeMaybe({"|", "test", type="no-link"}, "wikitable")) |-

||'''('''test''')?'''

|-

||'''('''test''')?'''

mut.getRow(mut.makeSlightly("test", "wikitable")) |-

||'''('''<span class="infl">[[test]]</span>''')'''

|-

||'''('''<span class="infl">[[test]]</span>''')'''

mut.getRow(mut.makeSlightly({"|", "test", type="perfpart"}, "wikitable")) |-

||'''('''<span class="perfpart">[[test]]</span>''')'''

|-

||'''('''<span class="perfpart">[[test]]</span>''')'''