Moduuli:Taivutustaulukkotyökalut
Ulkoasu
Tämän moduulin ohjeistuksen voi tehdä sivulle Moduuli:Taivutustaulukkotyökalut/ohje
--- Taivutustaulukoissa käytettäviä hyödyllisiä työkaluja.
local m = {}
--- Kääntää annetun dictin siten, että sen arvot ovat palautetun dictin avaimia ja vastaavat avaimet luetellaan arvoissa.
--
-- Esim.
-- ryhmittele_arvoittain{
-- ["ind.p.y3"] = { "huoli" },
-- ["ind.i.y3"] = { "huoli" },
-- ["ind.kon"] = { "huoli" },
-- ["kond.y3"] = { "huolisi" },
-- ["kond.kon"] = { "huolisi" }
-- }
--
-- palauttaa
-- {
-- ["huoli"] = { "ind.i.y3", "ind.kon", "ind.p.y3" },
-- ["huolisi"] = { "kond.kon", "kond.y3" }
-- }
--
-- Syötetaulukon arvot voivat olla joko merkkjonoja tai merkkijonotaulukoita. Esim.
-- yllä kaikki kohta voisi kirjoittaa myös ["ind.p.y3"] = "huoli".
function m.ryhmittele_arvoittain(dict_in)
local dict_out = {}
-- Lisätään dict_in:in avaimet arvojen mukaisilla avaimilla dict_outiin.
for k, v in pairs(dict_in) do
-- Jos arvo on taulukko, käsitellään jokainen taulukon arvo erikseen.
if type(v) == "table" then
for i, val in ipairs(v) do
if not dict_out[val] then
dict_out[val] = {}
end
table.insert(dict_out[val], k)
end
else
if not dict_out[v] then
dict_out[v] = {}
end
table.insert(dict_out[v], k)
end
end
-- Lajitellaan, että tuloslistat ovat aina samat samoilla arvoilla.
for k, v in pairs(dict_out) do
table.sort(v)
end
return dict_out
end
return m