Moduuli:LibSanarivi

Wikisanakirjasta
Tässä ohjeessa kuvataan toiminnallisuutta jonka kehitys on vielä kesken. Sivu on tarkoitettu lähinnä kehityksen apuvälineeksi, ei yleiseen käyttöön.

Sanarivien muodostuksessa usein käytettäviä elementtejä ParametrisoituTeksti-moduulin kanssa käytettäväksi.

Funktiot[muokkaa]

hakusana[muokkaa]

hakusana(teksti, kieli, kirj)

Tekee hakusana-css-luokalla merkityn html-elementin.

Parametrit:

  1. teksti: elementissä näytettävä teksti
  2. kieli: kielikoodi
  3. kirj: kirjoitusjärjestelmäkoodi

kielilinkki[muokkaa]

kielilinkki(lang, lnk, txt, lisap)

Tekee kielilinkiksi merkitys html-elementin.

Parametrit:

  1. lang: kielikoodi
  2. lnk: linkin kohdesivu
  3. lnk: (valinnainen) linkin teksti
  4. lisap: (valinnainen) lisäparametrit

latmerkkaus[muokkaa]

latmerkkaus(lat)

TODO tarviiko enää??

Parametrit:

  1. lat:

sukuteksti[muokkaa]

sukuteksti(lyh)

Tekee suvun ilmaisevan html-elementin mallineella suku-teksti.

Parametrit:

  1. lyh: suku-teksti-mallineessa määritelty lyhenne suvulle, esim. "m".

linkkiluettelo[muokkaa]

linkkiluettelo(lang, lnk, txt, lat, lisap)

Tekee pilkuilla ja tai-sanalla erotellun kielilinkkiluettelon.

Parametrit:

  1. lang: kielikoodi
  2. lnk: linkkien kohdesivut (taulukko)
  3. txt: (valinnainen) linkkien tekstit (taulukko)
  4. lat: (valinnainen) latinisoinnit (taulukko)
  5. lisap: (valinnainen) lisäparametrit (taulukko)

monikkoluettelo[muokkaa]

monikkoluettelo(lang, lnk, txt, lat, lisap)

Tekee vastaavan luettelon kuin linkkiluettelo, mutta näyttää myös tekstin "ei monikkoa", jos ensimmäinen lnk-parametri on "-".

  1. lang: kielikoodi
  2. lnk: linkkien kohdesivut (taulukko)
  3. txt: (valinnainen) linkkien tekstit (taulukko)
  4. lat: (valinnainen) latinisoinnit (taulukko)
  5. lisap: (valinnainen) lisäparametrit (taulukko)

tailuettelo[muokkaa]

tailuettelo(rakenne)

Pilkuilla ja tai-sanalla eroteltu luettelo. Lyhennemerkintä merkinnälle

luettelo(rakenne, ", ", " tai ")

local p = {}

local pt = require("Moduuli:ParametrisoituTeksti")


local function _hakusana(ctx, teksti_, kieli, kirj)
	local teksti = ctx:hae_arvo_tai_nil(teksti_)   
  
	if teksti then
		local sanariviElem = mw.html.create('b')
    		:attr("lang", kieli)
    		:attr("class", "hakusana " .. kirj)
    		:node(teksti)
   			:done()
   		
   		table.insert(ctx.out, tostring(sanariviElem))
   		return true
	end
	return false
end

--- Tekee hakusanaelementin.
-- 
-- @param teksti: sanarivillä näkyvä teksti
-- @param kieli:  elementtiin merkittävä kielikoodi
-- @param kirj:   elementtiin merkittävä kirjoitusjärjestemätyyli
function p.hakusana(teksti, kieli, kirj)
   return pt.funktio(_hakusana, teksti, kieli, kirj)
end


--- 
-- 
-- @param ctx:   konteksti
-- @param lnk:   linkin kohde
-- @param txt:   linkin teksti
-- @param lisap: lisäparametrit
local function _kielilinkki(ctx, lang, lnk_, txt_, lisap_)
   local lnk   = ctx:hae_arvo_tai_nil(lnk_)
   local txt   = ctx:hae_arvo_tai_nil(txt_)   
   local lisap = ctx:hae_arvo_tai_nil(lisap_)   

   local klnk = require("Moduuli:Kielilinkki").linkki_tai_nil_vanha(lang, lnk, txt, lisap)
   if klnk then
      table.insert(ctx.out, klnk)
      return true
   else
      return false
   end
end

--- Tekee kielitiedoilla merkityn linkin.
-- 
-- @param lang: linkkiin merkittävä kielikoodi, esim. "de", "sr-Cyrl" (pakollinen)
-- @param lnk:  linkin kohdesivun nimi (pakollinen)
-- @param txt:  linkin teksti
-- @param lisap: linkkille annettavat lisäparametrit, ks. [[Moduuli:Kielilinkki]]
function p.kielilinkki(lang, lnk, txt, lisap)
   return pt.funktio(_kielilinkki, lang, lnk, txt, lisap)
end



local function _latmerkkaus(ctx, lat_)
	local lat = ctx:hae_arvo_tai_nil(lat_)   
	if lat then
		local elem = mw.html.create('span')
    		:attr("class", "lat")
    		:node(lat)
   			:done()
   	
   		table.insert(ctx.out, tostring(elem))
   		return true
	end
	return false
end

--- Sanan latinisoinnin merkkaus.
-- 
-- @param lat: latinisointi
function p.latmerkkaus(lat)
   return pt.funktio(_latmerkkaus, lat)
end



local function _sukuteksti(ctx, suku)
   local lyh = ctx:hae_arvo_tai_nil(suku)
   
   local txt = mw.getCurrentFrame():expandTemplate{ ['title'] = 'suku-teksti', ['args'] = { lyh } }
   if txt then
      table.insert(ctx.out, txt)
      return true
   end
   
   return false
end

--- Sanan suvun merkkaus.
-- 
-- @param lyh: suvun lyhenne, esim. "m", "fm"
function p.sukuteksti(lyh)
   return pt.funktio(_sukuteksti, lyh)
end




--- Pilkuilla ja "tai"-sanalla erotettu linkkien luettelo, jossa voi olla latinisointi suluissa linkkien jälkeen
-- 
-- @param lang: linkkien kielikoodi (pakollinen)
-- @param lnk:  linkkien kohteet (taulukko, pakollinen)
-- @param txt:  linkkien tekstit (taulukko)
-- @param lat:  latinisoinnit (taulukko)
function p.linkkiluettelo(lang, lnk, txt, lat, lisap)
   return pt.luettelo(pt.ryhma("", p.kielilinkki(lang, lnk, txt, lisap), " ", pt.ryhma("(", p.latmerkkaus(lat), ")"), ""), ", ", " tai ")
end


function p.monikkoluettelo(lang, lnk, txt, lat, lisap)
   if lnk and lnk[1] == "-" then
      return "''ei monikkoa''"
   else
      return pt.ryhma("''monikko'' ", p.linkkiluettelo(lang, lnk, txt, lat, lisap), "")
   end
end

--- Pilkuilla ja tai-sanalla eroteltu luettelo.
function p.tailuettelo(rakenne)
	return pt.luettelo(rakenne, ", ", " tai ")
end

return p