o tawa ijo lipu

Module:sona nimi

tan lipu lipu Wikipesija

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