Modul:Categorize
Moduldokumentasjon
[opprett]
-- module for generating automatic categories
-- © John Erling Blad, Creative Commons by Attribution 3.0
local p = {}
function p._true()
return true
end
function p._empty()
return
end
function p._identity(arg)
return arg
end
function p._setup(rule)
if not rule.filter then
rule.filter = p._true
end
if not rule.func then
rule.func = p._empty
end
if not rule.sort then
rule.sort = p._identity
end
end
function p._load(name)
return (type(name) == 'string') (require('Module:Categorize/'..name)) or {}
end
function p._format(cat)
mw.html:wikitext('[[Category:'..cat..'|'..p.sort(cat)..']]')
end
function p.run( frame )
local title = mw.title.getCurrentTitle()
local rules = {}
for _,v in ipairs( frame.args ) do
local rule = p._load(v)
if rule then
rule = p._setup(rule)
if rule.filter(title) then
rules[1+#rules] = rule
end
end
end
local categories = {}
for _,v in ipairs( rules ) do
local results = { p.func(title) }
for _,u in ipairs( results ) do
if categories[u] == nil then
categories[u] = 0
end
categories[u] = 1+categories[u]
end
end
for _,v in ipairs( categories ) do
p._format(v)
end
end
return p