Difference between revisions of "Module:ArbCaseAlias"
Jump to navigation
Jump to search
blackwiki>Isaacl (create empty shell) |
blackwiki>Isaacl (Add processing logic) |
||
| Line 4: | Line 4: | ||
function me.luaMain(args) | function me.luaMain(args) | ||
| − | -- | + | local alias = args[1] |
| + | 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 | end | ||
Revision as of 03:04, 20 February 2018
Documentation for this module may be created at Module:ArbCaseAlias/doc
local me = { }
local config = mw.loadData('Module:Sandbox/isaacl/ArbCaseAlias/data')
function me.luaMain(args)
local alias = args[1]
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