Moduuli:käänteissanakirja

Wikisanakirjasta

Tämän moduulin ohjeistuksen voi tehdä sivulle Moduuli:käänteissanakirja/ohje

local p = {}

local luokittelu = require("Moduuli:luokittelu")
local artikkeliaakkostaja = require("Moduuli:artikkeliaakkostaja")


local function teksti_takaperin(teksti)

    local codepoints = {}
    local len = mw.ustring.len(teksti)

    for i = 1, len do
        codepoints[i] = true
    end
    

    local i = len
    for codepoint in mw.ustring.gcodepoint(teksti) do
        codepoints[i] = codepoint
        i = i - 1
    end

    return mw.ustring.char(unpack(codepoints))
end

local function aakkostusavain_takaperin(sivun_nimi, kielikoodi)
	local aakkostaja = artikkeliaakkostaja.lataa_aakkostaja(kielikoodi)
	local aakkostusavain = aakkostaja.kuvaa_merkkijono(sivun_nimi)
	
	return teksti_takaperin(aakkostusavain)
end

function p.lisaa_kaanteissanakirjaan(kielikoodi, luokat)
	local luokka = luokittelu.kielenLuokka(kielikoodi, "käänteissanakirja")
	local sivun_nimi = mw.title.getCurrentTitle().text
	
	luokat.aseta(luokka, aakkostusavain_takaperin(sivun_nimi, kielikoodi), 0)
end

function p.AakkostusavainTakaperin(frame)
   local teksti = frame.args[1] or mw.title.getCurrentTitle().text 
   local lang   = frame.args.kieli

   if not teksti or not lang then
      error("Virheelliset parametrit")
   end
   
   return aakkostusavain_takaperin(teksti, lang)
end

return p