Difference between revisions of "Module:ArbCaseAlias"

From blackwiki
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)
-- comment
+
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