o tawa ijo lipu

Module:nnp

tan lipu lipu Wikipesija

local n = {}

function n.oNanpa(ijo)
	ijo=math.floor(ijo)
	if ijo==0 then
		return('ala')
	end
	local nanpa=''
	for i=1,ijo/100 do
		nanpa=nanpa.."ale "
	end
	for i=1,(ijo%100)/20 do
		nanpa=nanpa.."mute "
	end
	for i=1,(ijo%20)/5 do
		nanpa=nanpa.."luka "
	end
	for i=1,(ijo%5)/2 do
		nanpa=nanpa.."tu "
	end
	for i=1,(ijo%5%2) do
		nanpa=nanpa.."wan "
	end
	return(nanpa:match'^%s*(.*%S)' or '')
end

function n.nnp(ijo)
	return(ijo:gsub("ale","A"):gsub("ali","A"):gsub("mute","M"):gsub("luka","L"):gsub("tu","T"):gsub("wan","W"):gsub("ala","X"):gsub(" ", ""))
end

function n.nasinNanpaPona(frame)
	local wile = frame.args[1]:gsub("%s",""):gsub("%,",""):gsub("%'","") or ''
	local weka=false
	if tonumber(wile)<0 then
		weka=true
	end
	wile=math.abs(wile)
	if wile=='' then
		return ''
	end
	local nasin = frame.args[2] or ''
	local nanpa=''
	for j=1,string.len(math.floor(wile)),2 do
		nn=n.oNanpa((wile/(10^(j-1)))%100)
		if nn~="ala" then
			nanpa=nn..nanpa
		end
		if (j+1<string.len(math.floor(wile))) then
			nanpa=' ale '..nanpa
		end
	end
	-- lili li ken lon nanpa
	if string.find(wile,"%.") then
		local wile2=string.sub(wile,string.find(wile,"%.")+1,-1)
		if tonumber(wile2)~=0 and nanpa:match'^%s*(.*%S)'~="ala" and nanpa:match'^%s*(.*%S)'~="" and nanpa:match'^%s*(.*%S)'~=nil then
			nanpa=nanpa:match'^%s*(.*%S)'..' ala '
		end
		if nanpa:match'^%s*(.*%S)'=="" or nanpa:match'^%s*(.*%S)'==nil then
			nanpa="ala "
		end
		if string.len(wile2)%2==1 then
			wile2=wile2.."0"
		end
		for j=1,string.len(math.floor(wile2)),2 do
			nn=n.oNanpa((wile2/(10^(j-1)))%100)
			if nn~="ala" then
				nanpa=nanpa..nn
			end
			if (j+1<string.len(math.floor(wile2))) then
				nanpa=nanpa..' ale '
			end
		end	
	end
	if nasin ~= '' then
		nanpa=n.nnp(nanpa:match'^%s*(.*%S)')
	end
	
	-- nanpa li ken weka
	if weka then
		nanpa=nanpa:match'^%s*(.*%S)'..' weka'
	end
	return(nanpa:match'^%s*(.*%S)' or '')
end

return n