Module:Sitelen
selo
Lua error in Module:sona_kipisi at line 671: attempt to concatenate local 'sourceTemplate' (a nil value).
local p = {}
-- ============================
-- DICTIONARIES
-- ============================
local nimi_pu = {
a="A", akesi="Akesi", ala="Ala", alasa="Alasa", ale="Ale", anpa="Anpa",
ante="Ante", anu="Anu", awen="Awen",
e="E", en="En", esun="Esun",
ijo="Ijo", ike="Ike", ilo="Ilo", insa="Insa",
jaki="Jaki", jan="Jan", jelo="Jelo", jo="Jo",
kala="Kala", kalama="Kalama", kama="Kama", kasi="Kasi", ken="Ken",
kepeken="Kepeken", kili="Kili", kiwen="Kiwen", ko="Ko", kon="Kon",
kule="Kule", kulupu="Kulupu", kute="Kute",
la="La", lape="Lape", laso="Laso", lawa="Lawa", len="Len", lete="Lete",
li="Li", lili="Lili", linja="Linja", lipu="Lipu", loje="Loje",
lon="Lon", luka="Luka", lukin="Lukin", lupa="Lupa",
ma="Ma", mama="Mama", mani="Mani", meli="Meli", mi="Mi", mije="Mije",
moku="Moku", moli="Moli", monsi="Monsi", mu="Mu", mun="Mun",
musi="Musi", mute="Mute",
nanpa="Nanpa", nasa="Nasa", nasin="Nasin", nena="Nena",
ni="Ni", nimi="Nimi", noka="Noka",
o="O", olin="Olin", ona="Ona", open="Open",
pakala="Pakala", pali="Pali", palisa="Palisa",
pan="Pan", pana="Pana", pi="Pi", pilin="Pilin", pimeja="Pimeja",
pini="Pini", pipi="Pipi", poka="Poka", poki="Poki",
pona="Pona", pu="Pu",
sama="Sama", seli="Seli", selo="Selo", seme="Seme", sewi="Sewi",
sijelo="Sijelo", sike="Sike", sin="Sin", sina="Sina",
sinpin="Sinpin", sitelen="Sitelen", sona="Sona",
soweli="Soweli", suli="Suli", suno="Suno", supa="Supa", suwi="Suwi",
tan="Tan", taso="Taso", tawa="Tawa", telo="Telo",
tenpo="Tenpo", toki="Toki", tomo="Tomo", tu="Tu",
unpa="Unpa", uta="Uta", utala="Utala",
walo="Walo", wan="Wan", waso="Waso", wawa="Wawa",
weka="Weka", wile="Wile",
}
local nimi_ku = {
namako="Namako", kin="Kin", oko="Oko", kipisi="Kipisi", leko="Leko",
monsuta="Monsuta", tonsi="Tonsi", jasima="Jasima",
kijetesantakalu="Kijetesantakalu", soko="Soko", meso="Meso",
epiku="Epiku", kokosila="Kokosila", lanpan="Lanpan", ["n"]="N",
misikeke="Misikeke", ku="Ku",
}
local nimi_weka = {
apeja="Apeja", iki="Iki", jalan="Jalan", kan="Kan", kapa="Kapa",
kapesi="Kapesi", majuna="Majuna", pake="Pake",
pasila="Pasila", pata="Pata", peta="Peta", po="Po",
powe="Powe", san="San", tuli="Tuli", su="Su", unu="Unu"
}
-- ============================
-- BOOLEAN HELPERS
-- ============================
local function isFalse(v)
if not v then return false end
v = mw.ustring.lower(v)
return (v == "false" or v == "0" or v == "no" or v == "off")
end
local function isTrue(v)
if not v then return false end
v = mw.ustring.lower(v)
return (v == "true" or v == "1" or v == "yes" or v == "on")
end
-- ============================
-- FILENAME SELECTOR
-- ============================
local function filename_for(word, usePona)
if word:match("^%u+$") then
local cap = word:sub(1,1) .. word:sub(2):lower()
return "File:" .. cap .. " - sitelen sitelen sound symbol.svg"
end
local lower = mw.ustring.lower(word)
if not usePona then
local cap = lower:sub(1,1):upper() .. lower:sub(2)
return "File:" .. cap .. " - sitelen sitelen word symbol.svg"
end
if nimi_pu[lower] then
return "File:" .. nimi_pu[lower] .. " - sitelen pona in Sonja Lang's handwriting.svg"
elseif nimi_ku[lower] then
return "File:" .. nimi_ku[lower] .. " - linja pona.svg"
elseif nimi_weka[lower] then
return "File:" .. nimi_weka[lower] .. " - linja pona.svg"
else
return "File:" .. word .. " (unknown).svg"
end
end
-- ============================
-- MAIN
-- ============================
function p.main(frame)
local invokeArgs = frame.args
local parent = frame:getParent()
local tplArgs = parent and parent.args or {}
local ponaParam = invokeArgs.pona or tplArgs.pona
local inlineParam = invokeArgs.inline or tplArgs.inline
local usePona = not isFalse(ponaParam)
local inline = isTrue(inlineParam)
-- gather actual words only
local words = {}
local i = 1
while invokeArgs[i] ~= nil do
local v = invokeArgs[i]
if v ~= nil and v ~= "" and not v:match("^%S+=%S+$") then
table.insert(words, v)
end
i = i + 1
end
local files = {}
for _, w in ipairs(words) do
table.insert(files, filename_for(w, usePona))
end
-- INLINE MODE
if inline then
local out = {}
for _, fn in ipairs(files) do
table.insert(out,
string.format('[[%s|25x25px|class=skin-invert-image]]', fn)
)
end
return table.concat(out, " ")
end
-- GALLERY MODE
local gallery = {}
for _, fn in ipairs(files) do
table.insert(gallery, fn .. '|class=skin-invert-image')
end
return '<gallery widths="30" heights="30">\n'
.. table.concat(gallery, "\n")
.. '\n</gallery>'
end
return p