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 lang_code         = "sv"
local part_of_speech    = "adj"
local number_of_columns = 3
local has_warning       = "false"

local str = gt.getStart(number_of_columns, lang_code, part_of_speech, has_warning)
         .. gt.getRow({"!", "Rubrik"}, "böjningsform")
         .. gt.getRow({"!", "Rubrik"}, "böjningsform")
         .. gt.getEnd(number_of_columns, "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.

Tester redigera

20 tests failed. (refresh)

Text Expected Actual
test01_basic:
  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 data-grammar-link="infl">[[form1]]</span> ||<span data-grammar-link="infl">[[form2]]</span> ||<span data-grammar-link="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 data-grammar-link="adv">[[form1]]</span>, <span data-grammar-link="adv">[[form2]]</span> ||<span data-grammar-link="infl">[[form3]]</span>, <span data-grammar-link="infl">[[form4]]</span>

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

||<span class="infl">[[form1]]</span>, <span class="infl">[[form2]]</span> || |- ||<span data-grammar-link="infl">[[form1]]</span>, <span data-grammar-link="infl">[[form2]]</span>

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

||<span class="infl">[[form1]]</span> ||<span class="infl">[[form2]]</span> ||<span class="infl">[[form3]]</span> || |- ||<span data-grammar-link="infl">[[form1]]</span> ||<span data-grammar-link="infl">[[form2]]</span> ||<span data-grammar-link="infl">[[form3]]</span>

Text Expected Actual
test03_only_meta:
  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]]

Text Expected Actual
test04_only_meta_and_type:
  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]]

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

||<span class="infl">[[form1]]</span>, <span class="infl">[[form2]]</span> || |- ||<span data-grammar-link="infl">[[form1]]</span>, <span data-grammar-link="infl">[[form2]]</span>

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

||<span class="infl">[[form1]]</span><sup>1</sup> || |- ||<span data-grammar-link="infl">[[form1]]</span><sup>1</sup>

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

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

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

||'''('''<span class="infl">[[form1]]</span>''')''' || |- ||'''('''<span data-grammar-link="infl">[[form1]]</span>''')'''

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

||<span class="infl">[[form1|fōrm1]]</span> || |- ||<span data-grammar-link="infl">[[form1|fōrm1]]</span>

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

||<nowiki/>form1, <span class="infl">[[form2]]</span> || |- ||<nowiki/>form1, <span data-grammar-link="infl">[[form2]]</span>

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

||"`UNIQ--nowiki-00000001-QINU`"'form1, <span class="infl">[[form2]]</span> || |- ||"`UNIQ--nowiki-00000001-QINU`"'form1, <span data-grammar-link="infl">[[form2]]</span>

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

||ord1 ord2 || |- ||ord1 ord2

Text Expected Actual
test07_special_cases:
  mut.getRow(nil) |- |-
  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"})) |-

||? || |- ||?

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

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

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

||<span class="infl">[[word's]]</span> || |- ||<span data-grammar-link="infl">[[word's]]</span>

  mut.getRow("words'") |-

||<span class="infl">[[words']]</span> || |- ||<span data-grammar-link="infl">[[words']]</span>

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

||<span class="infl">[[tv:n]]</span> || |- ||<span data-grammar-link="infl">[[tv:n]]</span>

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

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

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

||''<span class="infl">[[Betula]]</span>'' || |- ||''<span data-grammar-link="infl">[[Betula]]</span>''

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

!|rubrik |rowspan="2"|<span class="infl">[[form1#Tyska|form1]]</span> ||<span class="infl">[[form2#Tyska|form2]]</span> ||<span class="infl">[[form3#Tyska|form3]]</span> || |- !|rubrik |rowspan="2"|<span data-grammar-link="infl">[[form1#Tyska|form1]]</span> ||<span data-grammar-link="infl">[[form2#Tyska|form2]]</span> ||<span data-grammar-link="infl">[[form3#Tyska|form3]]</span>

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

||<span class="adv">[[form1#Tyska|form1]]</span>, <span class="adv">[[form2#Tyska|form2]]</span> ||<span class="infl">[[form3#Tyska|form3]]</span>, <span class="infl">[[form4#Tyska|form4]]</span> || |- ||<span data-grammar-link="adv">[[form1#Tyska|form1]]</span>, <span data-grammar-link="adv">[[form2#Tyska|form2]]</span> ||<span data-grammar-link="infl">[[form3#Tyska|form3]]</span>, <span data-grammar-link="infl">[[form4#Tyska|form4]]</span>

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

||<span class="infl">[[form1#Tyska|form1]]</span>, <span class="infl">[[form2#Tyska|form2]]</span> || |- ||<span data-grammar-link="infl">[[form1#Tyska|form1]]</span>, <span data-grammar-link="infl">[[form2#Tyska|form2]]</span>