Difference between revisions of "Module:ArbCaseAlias"
Jump to navigation
Jump to search
blackwiki>Isaacl m (Isaacl moved page Module:Sandbox/isaacl/ArbCaseAlias to Module:ArbCaseAlias without leaving a redirect: deploying module) |
blackwiki>Isaacl (add function to list all cases with supported aliases) |
||
| Line 3: | Line 3: | ||
-- mw.loadData doesn't support loading data that has function type, so use require | -- mw.loadData doesn't support loading data that has function type, so use require | ||
local config = require('Module:ArbCaseAlias/data') | local config = require('Module:ArbCaseAlias/data') | ||
| + | |||
| + | function me.luaListCases(args) | ||
| + | local outputBuffer = { } | ||
| + | for primaryCategory, caseInfoForCategory in pairs(config.arbCaseAliasInfo.caseInfoFor) do | ||
| + | for caseName, caseInfo in pairs (caseInfoForCategory) do | ||
| + | table.insert(outputBuffer, '* ' .. caseInfo.byYear .. ' — ' .. caseName .. '\n') | ||
| + | end | ||
| + | end | ||
| + | return table.concat(outputBuffer) | ||
| + | end | ||
| + | |||
| + | function me.listCases(frame) | ||
| + | local args = require('Module:Arguments').getArgs(frame) | ||
| + | return me.luaListCases(args) or '' | ||
| + | end | ||
function me.luaMain(args) | function me.luaMain(args) | ||
Revision as of 10:24, 2 December 2018
Documentation for this module may be created at Module:ArbCaseAlias/doc
local me = { }
-- mw.loadData doesn't support loading data that has function type, so use require
local config = require('Module:ArbCaseAlias/data')
function me.luaListCases(args)
local outputBuffer = { }
for primaryCategory, caseInfoForCategory in pairs(config.arbCaseAliasInfo.caseInfoFor) do
for caseName, caseInfo in pairs (caseInfoForCategory) do
table.insert(outputBuffer, '* ' .. caseInfo.byYear .. ' — ' .. caseName .. '\n')
end
end
return table.concat(outputBuffer)
end
function me.listCases(frame)
local args = require('Module:Arguments').getArgs(frame)
return me.luaListCases(args) or ''
end
function me.luaMain(args)
local alias = args[1] or ''
local aliasFor = { }
for format, normalizer in pairs(config.arbCaseAliasInfo.normalizeAlias) do
local normalizedAlias = normalizer(alias)
if (normalizedAlias ~= nil) then
aliasFor[format] = normalizedAlias
end
end -- loop over normalizers
local primaryCategory = config.arbCaseAliasInfo.extractPrimaryKey(alias)
if (primaryCategory == nil) then
return alias
end
if (config.arbCaseAliasInfo.caseInfoFor[primaryCategory] == nil) then
return alias
end
for caseName, caseInfo in pairs(config.arbCaseAliasInfo.caseInfoFor[primaryCategory]) do
for format, caseAlias in pairs(caseInfo) do
if (aliasFor[format] == caseAlias) then
return caseName
end
end -- loop over different case aliases
end -- loop over cases for given primary category
-- failed to find a match
return alias
end
function me.main(frame)
local args = require('Module:Arguments').getArgs(frame)
return me.luaMain(args) or ''
end
return me