Module:sona nimi
selo
{
"nimi open": "",
"nimi lukin": ""
}
sina pana ala e nimi, la nimi open li awen nimi "jan"; nimi lukin li awen nimi pi sijelo sina.
o lukin: jan:Tamzin li kepeken ni:
{
"nimi open": "wan",
"nimi lukin": "Tansin"
}
ni la:
{{nimi open|Tamzin}}→ wan{{jan|Tamzin}}→ wan Tansin{{o|Tamzin}}→ wan Tansin o,
{{o}} li namako. sina ken mu e jan mute kepeken ona sama ni:
{{o|Tamzin|The motan|.hecko}}→ wan Tansin o, the motan o, poni Kita o,
(pini la ni li kepeken ilo:MyPage/nimi open. ni li pini, li pali ala.)
local anu_seme = require('Module:Yesno')
local p = {}
local function o_pana_e_pakala(msg)
msg ='[[Module:sona nimi]] la pakala: ' .. msg
return mw.text.tag('strong', {['class']='error'}, msg)
end
local function o_weka_e_walo(nimi)
return (nimi and nimi:gsub("%s*(.-)%s*", "%1")) or ""
end
function p._insa(nimi_jan, nimi_open, nimi_lukin)
local sona_jan_li_lon, sona_jan = pcall(function () return mw.loadJsonData("jan:" .. nimi_jan .. "/sona nimi.json") end)
if not sona_jan_li_lon then
sona_jan = {
['nimi open']="jan",
['nimi lukin']=nimi_jan
}
end
nimi_open = nimi_open or (#sona_jan['nimi open'] > 0 and sona_jan['nimi open'] or "jan")
nimi_lukin = nimi_lukin or (#sona_jan['nimi lukin'] > 0 and sona_jan['nimi lukin'] or nimi_jan)
return nimi_jan, nimi_open, nimi_lukin
end
function p._wan_insa(nimi_jan, nimi_open, nimi_lukin, linja_anu_seme)
nimi_jan, nimi_open, nimi_lukin = p._insa(nimi_jan, nimi_open, nimi_lukin)
if linja_anu_seme then
return "[[" .. "jan:" .. nimi_jan .. "|" .. nimi_open .. " " .. nimi_lukin .. "]]"
else
return nimi_open .. " " .. nimi_lukin
end
end
function p.nimi_open(poka)
local wile = require('Module:Arguments').getArgs(poka)
if not wile[1] then
return o_pana_e_pakala('sina nimi ala e jan')
end
local _, nimi_open, _ = p._insa(wile[1], nil, nil)
return nimi_open
end
function p.wan(poka)
local wile = require('Module:Arguments').getArgs(poka)
if not wile[1] then
return o_pana_e_pakala('sina nimi ala e jan')
end
local toki = p._wan_insa(wile[1], wile.nimiopen, wile.nimilukin, not anu_seme(wile.olinjaala))
if anu_seme(wile.sijelo) then
toki = toki .. "<sup>[[jan:" .. wile[1] .. "]]</sup>"
end
return toki
end
function p.mute(poka)
local wile = require('Module:Arguments').getArgs(poka)
local wile_namako = {}
local pini_wile = 1
local mute_pi_nimi_jan = 0
for nimi_wile, ijo_wile in pairs(wile) do
if type(nimi_wile) == 'number' then
if mw.ustring.match(ijo_wile,'%S') then
if nimi_wile > pini_wile then pini_wile = nimi_wile end
mute_pi_nimi_jan = mute_pi_nimi_jan + 1
local title = mw.title.new(ijo_wile)
if not title then return o_pana_e_pakala('nimi jan li kepeken sitelen pi ken ala') end
wile_namako[nimi_wile] = title.rootText
end
else
wile_namako[nimi_wile] = ijo_wile
end
end
if mute_pi_nimi_jan > (tonumber(poka.args.max) or 50) then
return o_pana_e_pakala(string.format(
'mute %s la mute pi nimi pana li suli.',
tostring(poka.args.max or 50)
))
else
if mute_pi_nimi_jan < 1 then
return o_pana_e_pakala('sina nimi ala e jan')
end
wile_namako.nimiopen1 = wile_namako.nimiopen1 or wile_namako.nimiopen
wile_namako.nimilukin1 = wile_namako.nimilukin1 or wile_namako.nimilukin
wile_namako.sitelenpiopennimi = o_weka_e_walo(wile_namako.sitelenpiopennimi)
wile_namako.sitelenpipininimi = o_weka_e_walo(wile_namako.sitelenpipininimi)
wile_namako.sitelenpipiniali = o_weka_e_walo(wile_namako.sitelenpipiniali or wile_namako.sitelenpipiniale)
local open_anu_seme = true
local toki_ali = ""
for nanpa = 1, pini_wile do
if wile_namako[nanpa] then
if open_anu_seme then
open_anu_seme = false
elseif mute_pi_nimi_jan > 1 then
toki_ali = toki_ali .. wile_namako.sitelenpipininimi
end
toki_ali = (
toki_ali ..
wile_namako.sitelenpiopennimi ..
p._wan_insa(wile_namako[nanpa], wile_namako['nimiopen' .. nanpa], wile_namako['nimilukin' .. nanpa], not anu_seme(wile_namako['olinjaala']))
)
end
end
toki_ali = toki_ali .. wile_namako.sitelenpipiniali
return mw.text.tag('span', {['class']='template-ping'}, toki_ali)
end end
return p