Moduuli:artikkeliaakkostaja

Wikisanakirjasta

Artikkeliaakkostaja[muokkaa]

Käyttö[muokkaa]

{{#invoke:artikkeliaakkostaja|Aakkostusavain|kieli=kielikoodi|teksti}}

Muuttaa sanan kirjaimet niiden lajittelussa käytettäviksi muodoiksi, esim. suomessa wv.

Kielikohtaiset aakkostajat[muokkaa]

Seuraaville kielille on määritetty erityinen aakkostaja. Muissa käytetään oletusta.

Uuden kielikohtaisen aakkostajan lisääminen[muokkaa]

Useimmissa kielissä voi käyttää alla olevaa pohjaa, johon merkkijonoon aakkoset kirjoitetaan kielen sallitut kirjaimet. Taulukkoon muunnokset kirjoitetaan ne kirjaimet, jotka aakkostetaan toisen kirjaimen tai merkkijonon mukaan, esim. jos ß aakkostetaan ss:ksi tulee taulukkoon rivi ["ß"] = "ss" . Näiden muunnosten lisäksi kaikki alla olevalla tavalla tehdyt aakkostajat poistavat tarkkeet kaikista niistä merkeistä, joita ei ole annettu aakkosissa tai muunnoksissa. Tarvittaessa voi perusaakkostajan metodit korvata kokonaan, ks. esim. [[../en]].

local perus = require("Moduuli:artikkeliaakkostaja/perus")
local p = perus:kopioi()

p.asetukset{
   aakkoset   = "", 
   muunnokset = { }
}

return p

local p = {}

--- Palauttaa annetun kielelle käytetyn aakkostajan
-- Jos kielelle on määritetty oma aakkostaja palauttaa sen muuten
-- oletusaakkostajan. Aakkostajat sijaitsevat moduulin alasivuilla.
-- Alasivun nimen tulee olla kielen kielikoodi.
-- @param lang alasivun nimi, jolla aakkostaja on
-- @return     kielelle käytettävä aakkostaja
function p.lataa_aakkostaja(lang)
   local aakkostaja
   local stat

   stat, aakkostaja = pcall(require, "Moduuli:artikkeliaakkostaja/" .. lang)

   if stat == false then
      -- Käytetään oletusaakkostajaa
      stat, aakkostaja = pcall(require, "Moduuli:artikkeliaakkostaja/oletus")
      if stat == false then
		error("Ei oletusaakkostajaa")
      end
   end

   return aakkostaja
end


--- Muuttaa `tekstin` kielen `lang` mukaiseksi aakkostusavaimeksi.
-- @param teksti tyypillisesti artikkelin nimi
-- @param lang   kielikoodi. TODO vaihtoehtoisten kielikoodien normalisointi
-- @return       aakkostusavain
function p.hae_aakkostusavain(teksti, lang)
   local aakkostaja = p.lataa_aakkostaja(lang)
   
   return aakkostaja.kuvaa_merkkijono(teksti)
end

function p.Aakkostusavain(frame)
   -- Muutettava artikkelin nimi
   local teksti = frame.args[1] or mw.title.getCurrentTitle().text 
   local lang   = frame.args.kieli   -- Kielitunnus (alisivun nimi)

   if not teksti or not lang then
      error("Virheelliset parametrit")
   end
   
   return p.hae_aakkostusavain(teksti, lang)
end

return p