词条 | Module:ArbCaseAlias |
释义 | local me = { } -- mw.loadData doesn't support loading data that has function type, so use requirelocal config = require('Module:ArbCaseAlias/data') local function sortByLastPart(a, b) local lastPartPattern = '([^-]+)$' local aLastPart = string.match(a, lastPartPattern) local bLastPart = string.match(b, lastPartPattern) return tonumber(aLastPart) < tonumber(bLastPart) end function me.luaListCases(args) local outputBuffer = { } local primaryCategories = { } for primaryCategory, caseInfoForCategory in pairs(config.arbCaseAliasInfo.caseInfoFor) do -- skip test year 1000 if (primaryCategory ~= '1000') then table.insert(primaryCategories, primaryCategory) end end table.sort(primaryCategories) for index, primaryCategory in pairs(primaryCategories) do table.insert(outputBuffer, '* ' .. primaryCategory .. '\') local outputForCaseAlias = { } local caseAliases = { } for caseName, caseInfo in pairs(config.arbCaseAliasInfo.caseInfoFor[primaryCategory]) do outputForCaseAlias[caseInfo.byYear] = '** ' .. caseInfo.byYear .. ' — ' .. caseName .. '\' table.insert(caseAliases, caseInfo.byYear) end table.sort(caseAliases, sortByLastPart) for caseAliasIndex, caseAlias in pairs(caseAliases) do table.insert(outputBuffer, outputForCaseAlias[caseAlias]) 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 |
随便看 |
|
开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。