localp={}-- Converts "Flag of" in a variable in order to accept images that don't follow this name schemaflagOf="Flag_of_"-- Loading the flag translations module --localtranslations=mw.loadData("Module:Flags/LocaleData")localmaster=mw.loadData("Module:Flags/MasterData")-- Assigning the parameter to a flag and a linkfunctionp.flag(territory)-- Searching in the master table only.-- 2 letter code searchif#territory.args[1]==2thenforflagParameter,commonsFileinpairs(master.twoLetter)doifflagParameter==territory.args[1]thencommonsName=commonsFiletempLink=commonsFileendendforflagParameter,commonsFileinpairs(translations.fullName)doifcommonsFile==tempLinkthenlink=flagParameterendendiflink==nilthenlink=commonsNameendend-- 3 letter code searchif#territory.args[1]==3thenforflagParameter,commonsFileinpairs(master.threeLetter)doifflagParameter==territory.args[1]thencommonsName=commonsFiletempLink=commonsFileendendforflagParameter,commonsFileinpairs(translations.fullName)doifcommonsFile==tempLinkthenlink=flagParameterendendiflink==nilthenlink=commonsNameendend-- Searching in FlagTranslations, then in FlagMaster-- Full name searchifcommonsName==nilthenflagTables={translations.fullName,master.fullName,}fork,vinipairs(flagTables)doforflagParameter,commonsFileinpairs(v)doifflagParameter==territory.args[1]thencommonsName=commonsFilelink=flagParameterelseifcommonsFile==territory.args[1]thencommonsName=commonsFilelink=flagParameterendendendend-- Fallback to Commons when the parameter doesn't have an entry in the table. ifcommonsName==nilthencommonsName=territory.args[1]link=territory.args[1]end-- Variant check for historical flags --ifterritory.args[3]~=""thenvariant=territory.args[3]commonsName=master.variant[commonsName.."|"..variant]flagOf=""end-- Label check --ifterritory.args[2]~="{{{2}}}"thenvariant=territory.args[2]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.ifcommonsName~=nilandstring.find(commonsName,"File:",1)==1thencommonsName=string.sub(commonsName,6)flagOf=""end-- Fallback for non-identified variant/label flags --ifcommonsName==nilthencommonsName="Flag of None"end-- Border for everybody except Nepal and OhioifcommonsName=="Nepal"orcommonsName=="Ohio"thenborder=""elseborder="border|"end-- Size of flag -- -- Function to define the default size for the flag if neededfunctiondefaultSize()sizeExceptions={"Nepal","Switzerland","the Vatican City",}forsome,exceptionsinpairs(sizeExceptions)doifcommonsName==exceptionsthensize="20x17px"endendifsize==nilthensize="20x22px"endreturnsizeend-- Checking whether a size parameter has been introduced, otherwise set default ifterritory.args[4]:find("px",-2)~=nilthensize=territory.args[4]elsesize=defaultSize(commonsName)end-- Customizing the linkopenBrackets="[["closeBrackets="]]"ifterritory.args[5]==""thenflagLink=""textLink=""openBrackets=""closeBrackets=""elseifterritory.args[5]~="{{{link}}}"thenflagLink=territory.args[5]textLink=territory.args[5].."|"elseflagLink=linktextLink=link.."|"end-- Text in addition to flagifterritory.args[6]==""thentext=" "..openBrackets..link..closeBracketselseifterritory.args[6]~="{{{text}}}"thentext=" "..openBrackets..textLink..territory.args[6]..closeBracketselsetext=""endreturn'[[File:'..flagOf..commonsName..'.svg|'..border..'link='..flagLink..'|'..size..']]'..textendreturnp