Modulo:CatUtil
[antaŭrigardi] [redakti] [historio] [renovigi]
Dokumentado
Ŝablona programado | Diskutoj | Lua | Testoj | Subpaĝoj | |||
---|---|---|---|---|---|---|---|
Modulo | Esperanto | English
|
Modulo: | Dokumentado |
Se vi havas demandon pri ĉi tiu Lua-modulo, tiam vi povas demandi en la diskutejo pri Lua-moduloj. La Intervikiaj ligiloj estu metataj al Vikidatumoj. (Vidu Helpopaĝon pri tio.) |
|
-- modul CatUtil -- 2015-12-23
local p = {}
-- delinks the text from v and returns [[Ulo]] or [[Artikolo|Ulo]] like Ulo.
-- this is needed, because a link in a category is not possible
-- s - is a helping variable
function p.delink (v)
s = v:match( "%[%[[^|%]]*| *([^%]]+) *%]%]" )
if not s then
s = v:match( "%[%[%s*([^%]]+)%s*%]%]" )
end
if not s then
s = v
end
return mw.text.trim(s) -- removes spaces
end -- delink ()
-- for invoke
function p.category(frame)
-- creates a category from some specified textes, but removes link coding
local begin = frame.args.begin or frame.args.komenco -- eg. Libroj de
local xyz = frame.args.xyz -- eg. Zamenhof
local ending = frame.args.ending or frame.args.fino -- eg. en 1887
local sortkey = frame.args.sortkey or frame.args.ordigilo -- eg. |Unua Libro]]
return p._category(begin, xyz, ending, sortkey)
end
-- for other functions and modules
function p._category(begin, xyz, ending, sortkey)
local catbegin = "[[Kategorio:"
local catend = "]]"
local r = ""
-- addes the begining part to the category, if it is specified
if begin ~= nil and begin ~= "" then
begin = p.delink(begin)
r = catbegin .. begin
else
r = catbegin
end
-- addes the variable part to the category name
if xyz ~= nil and xyz ~= "" then
xyz = p.delink(xyz)
r = r .. " " .. xyz
end
-- addes the end part to the category, if it is needed
if ending ~= nil and ending ~= "" then
ending = p.delink(ending)
r = r .. " " .. ending
end
-- addes the sortkey, if it is specified
if sortkey ~= nil and sortkey ~= "" then
sortkey = p.delink(sortkey)
r = r .. "|" .. sortkey .. catend
else
r = r .. catend
end
return r
end
function p.city(frame)
local typ = frame.args.typ or frame.args.tipo or ""
local country = frame.args.country or frame.args.lando or ""
local sortkey = frame.args.sortkey or frame.args.ordigilo or ""
local template = frame.args.template or frame.args["ŝablono"] or ""
-- other
local begin = ""
local xyz = ""
local ending = ""
local r = ""
-- removes link from country
local c = p.delink(country)
-- changes typ into lower case
local t = mw.ustring.lower(typ)
local t1 = "" -- singularo
local t2 = "" -- pluralo
if t == "vilaĝoj" or t == "vilaĝo" then
t1 = "vilaĝo"
t2 = "vilaĝoj"
elseif t == "vilaĝoj " or t == "vilaĝo " then
t1 = "vilaĝo"
t2 = ""
elseif t == "grandvilaĝoj" or t == "grandvilaĝo" then
t1 = "vilaĝo"
t2 = "grandvilaĝoj"
elseif t == "urboj" or t == "urbo" then
t1 = "urbo"
t2 = "urboj"
elseif t == "urboj " or t == "urbo " then
t1 = "urbo"
t2 = ""
elseif t == "komunumoj" or t == "komunumo" then
t1 = "komunumo"
t2 = "komunumoj"
elseif t == "komunumoj " or t == "komunumo " then
t1 = "komunumo"
t2 = ""
elseif t == "municipoj" or t == "municipo" then
t1 = "municipo"
t2 = ""
else
t1 = ""
t2 = ""
end
if t1 ~= "" and c ~= "" and template ~= "" then
begin = t1 .. " kun " .. template
r = p._category(begin, xyz, ending, sortkey)
if t2 == "grandvilaĝoj" then
begin = t2 .. " en " .. c
elseif t2 == "" then
return r
else
begin = t2 .. " de " .. c
end
r = r .. p._category(begin, xyz, ending, sortkey)
return r
end
return ""
end
return p