Moduuli:Kielitieto

Wikisanakirjasta

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

local p = {}
local taulukot = require('Moduuli:kielikoodit/taulukot')
local kenttadata = require('Module:Kielitieto/kentat')

--- Muuttaa Moduuli:kielikoodit/taulukot- ja Moduuli:Kielitieto/kentät -moduulien tiedot JSON-formaattiin.
local function kieletJSONiksi(kieltenKentat, kieltenSanarivit)
   local paakohdat = {}
   local nimiohjaukset = {}
   local koodiohjaukset = {}
   local taulu = {
      ["kielet"] = paakohdat,
      ["rinnakkaisnimet"] = nimiohjaukset,
      ["rinnakkaiskoodit"] = koodiohjaukset }

   for i,v in ipairs(taulukot.tiedot) do
      local jnro = v[1]
      local nimi = v[2]
      local kielikoodit = v[5]
      local viittaus = v[6]
      local kaytetty_nimi = ''
      local kentat = kieltenKentat[kielikoodit[1]]
      local sanarivit = kieltenSanarivit[kielikoodit[1]]

      if (kielikoodit == nil or next(kielikoodit) == nil) and viittaus then
         rivi = taulukot.tunnukset[viittaus]
         if rivi then
            kielikoodit = rivi[5]
            -- Ohjaus toiseen nimeen.
            table.insert(nimiohjaukset, { ["nimi"] = nimi, ["ohjaus"] = kielikoodit[1] })
         end

      elseif kielikoodit then
         for j,koodi in ipairs(kielikoodit) do
            if j == 1 then
	       -- Päänimi. Ensimmäinen koodi on ensisijainen.
                table.insert(paakohdat, {
                                 ["koodi"] = koodi,
                                 ["nimi"] = nimi,
                                 ["kentat"] = kentat,
                                 ["sanarivit"] = sanarivit
                })
            else
               -- Lisätään muut kielikoodit ohjauksiksi pääkoodiin.
               table.insert(koodiohjaukset, { ["koodi"] = koodi, ["ohjaus"] = kielikoodit[1] })
            end
         end
      end
   end

   return taulu
end

function p.DataJSONiksi(frame)
    local data = kieletJSONiksi(kenttadata["kielten kentät"], kenttadata["kielten sanarivit"])
    data['kenttien tiedot'] = kenttadata['kenttien tiedot']

    return " " .. mw.text.jsonEncode(data, mw.text.JSON_PRETTY):gsub("\n", "\n ")
end

return p