Modul:Sidelist

Fra Wikipedia, den frie encyklopædi
Spring til navigation Spring til søgning
Documentation icon Moduldokumentation[vis] [redigér] [historik] [opfrisk]

Sidelist er et alternativ til {{pagelist}}, som er en skabelon der kalder Modul:Pagelist.

"Sidelist" er et forenklet script men giver næsten samme resultat - forskellen er at et eventuelt navnerum altid skal angives med |nspace=.

Anvendelse[redigér wikikode]

Modulet er tiltænkt som hjælpemiddel i skabeloner. "Sidelist" adskiller sig fra "Pagelist":

  • ved at være et modul. Benyt {{#invoke|Sidelist|m istedetfor {{Pagelist
  • Wikilinks formateres uden navnerums-præfiks, medmindre |nspace= er angivet.
  • Et ekstra parameter |samme=1 sætter konjunktionen lig med separator. "1"-værdien er obligatorisk.
  • Et ekstra parameter |lt=1 trimmer navnerums-præfiks fra linktekst for wikilinks der linker til andre navnerum. "1"-værdien er obligatorisk.

Bemærk: Levnes |nspace= tom kan der linkes til forskellige navnerum

Men parameter-navne, funktion og resultat er herudover ens. Se videre dokumentation på {{pagelist}}.

Scriptet[redigér wikikode]

Her er en wikipediaseret script dokumentation.

Anvendte metoder[redigér wikikode]

Lua
  • ipairs
  • pairs
  • string.match
  • string.gsub
Scribunto
  • mw.message.new

KONSTANTER[redigér wikikode]

local seplst = {
  • Site præferencer - udokumenteret?
tekst-strengene benyttes i et kald til mw.message
->mw.message.new(seplst[0] .. '-separator'):plain()
Modulets separator standardværdi er 'comma'
local NS_SEP = "
"
  • Konventionel navnerums-separator
local MRK1 = '\1'
  • Tekstmærke
forekommer ikke som parameter-værdi

VARIABLER[redigér wikikode]

local _a = {
  • Argument navne - følger konventionelt parameter navnene fra
index, parameternavn
værdi, standardværdi (default)
NB! separator værdien er en såkaldt site præference
- ikke bogstaveligt "comma" men netop ", "
_a.samme = 8
  • Ekstra argument navn
- sætter conjunction lig separator
- _a.samme = 1, separator bruges som conjunction
- _a.samme = 0, conjunction bruges som conjunction
local str = ""
  • Variabel til at konkatenere listen

modul function m[redigér wikikode]

Proces del “ for k in pairs (_a) do ”
  • Sæt lokal _a værdierne til de navngivne parametre fra P.args,
hvis der er nogen - ellers brug standard værdien
Proces del “ for k in pairs (seplst) do ”
  • Tjek for site præferencer
Proces del “ if (_a.samme == 1) then ”
  • Tjek for ekstra parameter
Proces del “ if (_a.nspace ~= "") then ”
  • Indsæt kolon når navnerum er angivet
NB! standard navnerum er artikel-navnerummet
- *ikke* det navnerum der kaldes fra
Proces del “ for k, v in ipairs (P.args) do ”
  • Indlæs de unavngivne parametre fra P.args,
--og white space trim
ref:www.mediawiki.org
- string manipulation ref:www.lua.org
- patterns ref:www.lua.org
- Alternativ - mw.text.trim()
--og formater til wikilink
--og formater og konkatenér liste
NB! virker iterationen? -- ok
NB! - altid en sekvens -- ok
NB! - ikke altid en sekvens -- ok
NB! 5= - ikke altid en sekvens -- ok
NB! navngivne parametre altid enten foran eller bagved rækken af unavngivne parametre ??
Proces del “ str = str
gsub ("(.*)(" .. _a.separator .. MRK1 .. ")([^" .. MRK1 .. "]+)" .. _a.separator,"%1" .. _a.conjunction .. "%3"): gsub (MRK1,"") ”
  • Indsæt konjunktionen
og returner liste teksten
- string.gsub med såkaldt grådigt mønster match
ref:stackoverflow.com
- string manipulation ref:www.lua.org

local p = {} local seplst = { [1] = "comma", [2] = "dot", [3] = "pipe", [4] = "tpt-languages" } local NS_SEP = ":" local MRK1 = '\1' local _a = { ["nspace"] = "", ["separator"] = "comma",  ["conjunction"] = " og ",  ["delim"] = "",  ["edelim"] = "" } _a.samme = 8 _a.lt = 8 local str = "" p.m = function (P)  for k in pairs (_a) do _a[k] = P.args[k] or _a[k] end for k in pairs (seplst) do if (_a.separator == seplst[k]) then _a.separator = mw.message.new(seplst[k] .. "-separator"):plain() break end end if (_a.samme == "1") then _a.conjunction = _a.separator end if (_a.nspace ~= "") then _a.nspace = NS_SEP .. _a.nspace .. NS_SEP else _a.nspace = NS_SEP end local tmp2 = "" for k, v in ipairs (P.args) do tmp2 = (_a.lt == "1") and "|" .. v: gsub ("^%s*",""): gsub ("%s*$",""): gsub (".*:","") or "" str = (v: match ("^%s*$")) and str or (str .. MRK1 .. _a.delim .. "[[" .. _a.nspace .. v: gsub ("^%s*",""): gsub ("%s*$","") .. tmp2 .. "]]" .. _a.edelim .. _a.separator) end str = str: gsub ("(.*)(" .. _a.separator .. MRK1 .. ")([^" .. MRK1 .. "]+)" .. _a.separator,"%1" .. _a.conjunction .. "%3"): gsub (MRK1,""): gsub (_a.separator .. "$","") return str end return p