词条 | Module:Flags |
释义 | local p = {} -- Loading the flag translations module --local translations = mw.loadData("Module:Flags/LocaleData") local master = mw.loadData("Module:Flags/MasterData") -- check if name is an original name in translation.fullname and-- return its value, otherwise return nilfunction check_translation(name) local link for translation, commonsName in pairs(translations.fullName) do if commonsName == name then link = translation break --if found break out from the loop end end return link end -- Size of flag ---- Function to define the default size for the flag if neededfunction defaultSize() --todo: move exception to Module:Flags/MasterData local sizeExceptions = { "Nepal", "Switzerland", "the Vatican City", } local size = "20x22px" --initialize with default value for some,exceptions in pairs(sizeExceptions) do if commonsName == exceptions then size = "20x17px" break --if found break out from loop end end return size end -- Assigning the parameter to a flag and a linkfunction p.flag(territory) --always declare local variable, they are more efficient and dont pollute global namespace local commonsName local flagOf = "Flag_of_" -- Converts "Flag of" in a variable in order to accept images that don't follow this name schema local link = "" -- more efficient to access local flag_code = territory.args[1] or ""-- Searching in the master table only.-- 2 letter code search if #flag_code == 2 then -- try to assign a value to commonsName and check for nil value commonsName = master.twoLetter[flag_code] --if check_translation return nil then it will execute the or part and assign commonsName to link if commonsName then link = check_translation(commonsName) or commonsName; end elseif #flag_code == 3 then -- 3 letter code search commonsName = master.threeLetter[flag_code] if commonsName then link = check_translation(commonsName) or commonsName; end end-- check if commonsName is still nil if commonsName == nil then -- check master.fullName table commonsName = master.fullName[flag_code] if commonsName then link = check_translation(commonsName) or commonsName; else -- Searching in FlagTranslations commonsName = translations.fullName[flag_code] if commonsName then link = flag_code else -- Fallback to Commons when the parameter doesn't have an entry in the tables commonsName = flag_code link = flag_code end end end-- Variant check for historical flags -- local variant = territory.args[3] if variant and variant ~= "" then commonsName = master.variant[commonsName .. "|" .. variant] flagOf="" end-- Label check -- variant = territory.args[2] if variant and variant ~="{{{2}}}" then commonsName = master.variant[commonsName .. "|" .. variant] flagOf="" end-- Digesting Commons flag files not following the format "Flag of "-- These filenamess must be preceded by "File:" in the table values. if commonsName ~= nil and string.find( commonsName, "File:", 1 ) == 1 then commonsName = string.sub( commonsName, 6) flagOf="" end-- Fallback for non-identified variant/label flags ---- Border for everybody except Nepal and Ohio-- todo: move exception to Module:Flags/MasterData local border = "border|" if commonsName == "Nepal" or commonsName == "Ohio" then border = "" end-- Checking whether a size parameter has been introduced, otherwise set default if territory.args[4]:find("px", -2) ~= nil then size = territory.args[4] else size = defaultSize(commonsName) end-- Customizing the link openBrackets = "[[" closeBrackets = "]]" if territory.args[5] == "" then flagLink = "" textLink = "" openBrackets = "" closeBrackets = "" elseif territory.args[5] ~= "{{{link}}}" then flagLink = territory.args[5] textLink = territory.args[5] .. "|" else flagLink = link textLink = link .. "|" end-- Text in addition to flag if territory.args[6] == "" then text = " " .. openBrackets .. link .. closeBrackets elseif territory.args[6] ~= "{{{text}}}" then text = " " .. openBrackets .. textLink .. territory.args[6] .. closeBrackets else text = "" end return .. text end return p |
随便看 |
|
开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。