Moduuli:artikkeliaakkostaja

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