模組:WHS criteria
外观
本模块用于格式化世界遗产登录标准,由{{Infobox UNESCO World Heritage Site}}自动调用。
用法
{{#invoke:WHS criteria|format|<标准>}}
如:{{#invoke:WHS criteria|format|(i)(ii)}}
→ 脚本错误:函数“format”不存在。
本模块能自动去除多余文字,并将标准排序,如:
{{#invoke:WHS criteria|format|世界遗产(vii)、(x)}}
→ 脚本错误:函数“format”不存在。{{#invoke:WHS criteria|format|(x),(ii)(vii)}}
→ 脚本错误:函数“format”不存在。
本模块支持多种输入格式,如:
{{#invoke:WHS criteria|format|文化:ii,自然:vii}}
→ 脚本错误:函数“format”不存在。{{#invoke:WHS criteria|format|I、IV}}
→ 脚本错误:函数“format”不存在。
追踪分类
参见
local p = {}
local cultural_criteria = {"(i)", "(ii)", "(iii)", "(iv)", "(v)", "(vi)"}
local natural_criteria = {"(vii)", "(viii)", "(ix)", "(x)"}
-- 处理文本
local function processText(text)
text = text:gsub(":", "("):gsub(":", "(")
:gsub("、", ")(")
:gsub(",", ")(")
:gsub(",", ")(")
:gsub("/", ")(")
:gsub("%s+", ")(")
:gsub("\n", ")(")
:gsub("(", "("):gsub(")", ")")
text = "(" .. text .. ")"
return text
end
-- 匹配标准
local function checkCriteria(text, criteria)
local found = {}
for _, criterion in ipairs(criteria) do
if text:find(criterion, 1, true) then
table.insert(found, criterion)
end
end
table.sort(found) -- 排序
return found
end
function p.checkHeritage(frame)
local input = frame.args[1] or ""
input = processText(input)
-- 检查是否是文化、自然遗产
local cultural_found = checkCriteria(input, cultural_criteria)
local natural_found = checkCriteria(input, natural_criteria)
local result = ""
if #cultural_found > 0 and #natural_found > 0 then
result = "[[文化遗产|文化]]:" .. table.concat(cultural_found) .. "[[自然遗产|自然]]:" .. table.concat(natural_found)
elseif #cultural_found > 0 then
result = "[[文化遗产|文化]]:" .. table.concat(cultural_found)
elseif #natural_found > 0 then
result = "[[自然遗产|自然]]:" .. table.concat(natural_found)
else
result = ""
end
return result
end
return p