Module:Flags/sandbox

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 nil
function 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 needed
function 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 link
function 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 --
    if commonsName == nil then commonsName = "Flag of None" end

-- 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 '[[File:' .. flagOf .. commonsName .. '.svg|' .. border .. 'link=' .. flagLink .. '|'.. size .. ']]' .. text
end
return p

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.