Jump to content
 







Main menu
   


Navigation  



Main page
Contents
Current events
Random article
About Wikipedia
Contact us
Donate
 




Contribute  



Help
Learn to edit
Community portal
Recent changes
Upload file
 








Search  

































Create account

Log in
 









Create account
 Log in
 




Pages for logged out editors learn more  



Contributions
Talk
 



















Contents

   



(Top)
 


1 Parameters  



1.1  Format (first unnamed parameter)  





1.2  Entity (second unnamed parameter)  





1.3  Image parameters  





1.4  Text and link parameters  







2 Examples  





3 Adding links to specialized country, state, etc. articles. With asterisk  





4 Comparison with other templates  



4.1  General templates  





4.2  Sports/military templates  







5 See also  














Module:Flagg






Afrikaans
العربية
Авар
تۆرکجه
Basa Bali


Bosanski
Cymraeg
فارسی
Hausa
Bahasa Indonesia

Ikinyarwanda
Kurdî
Ladin
Ladino
ि
Македонски

مصرى
مازِرونی
Bahasa Melayu
Монгол



ି
Oʻzbekcha / ўзбекча

پښتو
Tok Pisin
Română
Русский
Scots

Simple English
سنڌي
Slovenščina
کوردی
Српски / srpski
ி
 

Türkçe
Українська
اردو
Tiếng Vit
Winaray

 

Edit links
 









Module
Talk
 

















Read
View source
View history
 








Tools
   


Actions  



Read
View source
View history
 




General  



What links here
Related changes
Upload file
Special pages
Permanent link
Page information
Get shortened URL
Download QR code
Wikidata item
 




Print/export  



Download as PDF
Printable version
 
















Appearance
   

 





Permanently protected module

From Wikipedia, the free encyclopedia
 


{{Flagg}} (flag general) is a flag template with variable output format. Using Lua instead of the standard mechanism, it allows overriding the image name and link target, and works even if a country data template for an entity does not exist (without using any expensive functions).

The template is not intended to fully supersede any specific flag templates it can simulate (see below), but can be useful for formats for which no template exists, or if its additional options are needed. It can also be used to reduce post-expand include size of pages with lots of templates.

Parameters

Aliases (alternatives) for each parameter or value are given in square brackets.

Format (first unnamed parameter)

The first parameter is an alphabetic code specifying the output format. The first letter concerns the image, the second the separator, and the third the country name. The parameter is fully case-insensitive.

If any position in the parameter value is missing or has a character not corresponding to an option below, the options marked as default will be used; e.g. a first parameter equal to i, i**orizz will be read as isc.

First letter: Image

Letter Meaning Description Example
u unlinked Image is not linked (default). {{flagg|uxx|France}}
c country Image links to country/entity page. {{flagg|cxx|France}}
p [f] prefix/suffix Image links to country name with prefixed and/or suffixed text (default "Flag of ..."), set using |pref= and |suff= (see below). {{flagg|pxx|France}}
i image page Image links to file description page; use this for non-public-domain images, for which attribution is required. {{flagg|ixx|France}}
d data template Image links to the used country data template, for use in discussion/documentation. Automatically adds redirect=no if link is a redirect. {{flagg|dxx|France}}
x X mark No image is displayed. If the second letter is anything other than x, and o is not set, an unlinked transparent image is actually used to preserve the spacing. {{flagg|xnx|France}} 

Second letter: Separator

Letter Meaning Description Example
s span box The flag image is put in a fixed-width <span> tag, meaning the country names are aligned in vertical lists; see documentation of {{Flaglist}} (default). {{flagg|usu|Niger}} Niger
n non-breaking space A non-breaking space (&nbsp;) is used, like in most flag templates, including {{flag}}. Note that &nbsp; does not actually prevent wrapping between image and text in all browsers; use w as described below if needed. {{flagg|unu|Niger}} Niger
l line break A line break (<br/>) is used as separator. {{flagg|ulu|Niger}}
Niger
t table cell A table cell separator (two pipes) is used. Niger
x X mark No separator is used. {{flagg|uxu|Niger}}Niger

Third letter: Name

Letter Meaning Description Example
c country The country name links to the main country/entity page (default). {{flagg|xxc|Chile}}Chile
p prefix/suffix The country name links to the country page with prefixed or suffixed text (default "Flag of ..."), set using |pref= and |suff= (see below). {{flagg|xxp|Chile}}Chile
f full prefix/suffix Same as p, except that the prefix and/or suffix is/are displayed. {{flagg|xxf|Chile}}Flag of Chile
l link target Same as p, except that the target of the link is displayed. {{flagg|xxl|Chile|avar=army}}Chilean Army
b both country and prefix/suffix Combined country link and prefix/suffix link: country name links to country page, while prefix and/or suffix link(s) to prefixed/suffixed title. {{flagg|xxb|Chile}}Flag of Chile
u unlinked (cf. {{flagu}}) The country name is displayed as plain text, without link. {{flagg|xxu|Chile}} → Chile
d data template Country name is linked to the used country data template, for use in discussion/documentation. Automatically adds redirect=no if a redirect is used. {{flagg|xxd|Chile}}Chile
a abbreviation Country name is not linked, but the name of the main country/entity page is presented as mouseover text if it is different. {{flagg|xxa|Chile}} → Chile
{{flagg|xxa|CHI}}CHI
x X mark No text is displayed. {{flagg|xxx|Chile}}
* Add * Similar to "p", except that an asterisk (*) is added to the text of the link if it goes to a more specific article. {{flagg|xx*|Chile}}Chile *

Some additional options can be enabled by appending the following letters to the three-letter code in any order:

Letter Description Example
a Adds the country name (the "name" parameter, or if unset the second unnamed parameter) as alt text and mouseover for the image. If |alt= is used for a custom alt/mouseover text, this does not need to be separately set. {{flagg|uxxa|Pakistan}}Pakistan
b Blanks the text portion if a flag is not found. {{flagg|uncb|Xanadu}} 
Compare with:
{{flagg|unc|Xanadu}} Xanadu
e Uses the name set in the country data template (rather than the first parameter) as display name, like in {{flagcountry}} (i.e. expands abbreviated forms). {{flagg|unue|PAK}} Pakistan
f If the prefixed/suffixed article name doesn't exist, fallback to linking to the non-prefixed/suffixed page. This may be expensive, and the number of time it can be used on single page is limited. {{flagg|psff|Egypt|pref=Flag templates in}} Flag templates in Egypt
Compare with:
{{flagg|psf|Egypt|pref=Flag templates in}} Flag templates in Egypt
i Uses the IOC country codes table from Module:Country alias/data to resolve the country data from the entity parameter. {{flagg|uxxi|BRN}}
Compare with:
{{flagg|uxx|BRN}}
l Adds the link name (as defined by the "image" parameter) as alt text and mouseover for the image. If |alt= is used for a custom alt/mouseover text, this does not need to be separately set. {{flagg|cxxl|PAK}}Pakistan
Compare with:
{{flagg|cxxa|PAK}}PAK
o Omits the image and spacing in case the image is an invisible placeholder, i.e., only include the spacing if a flag is displayed. Useful for inline/standalone usages or horizontal lists, where name alignment is not needed. {{flagg|unuo|Pakistan|image=}} → Pakistan
Compare with:
{{flagg|unu|Pakistan|image=}} Pakistan
p Wraps the text in Parentheses. {{flagg|unup|Pakistan}} (Pakistan)
r Reverses the order of the elements, putting the image to the right of the name; cf. {{flagright}}. Doesn't affect the order of letters in the format code. {{flagg|uncr|Pakistan}}Pakistan 
w Avoids wrapping by adding <span class="nowrap">...</span> around the output. {{flagg|unuw|Pakistan}} Pakistan
t Aligns to the left in a table.

Entity (second unnamed parameter)

The second parameter is the country or entity name. The template attempts to read the flag and link data from "Template:Country data country"; if that does not exist, the same parameter will be used as default country link and no automatic image will be displayed. The parameter also defines the default displayed country name, if the e option above is not used.

Image parameters

|variant= [third unnamed parameter]
Specifies a variant flag image, as defined and documented in each entity's data template. For example, {{flagg|ixx|Germany|naval}} uses the "naval" variant of Template:Country data Germany.
|image=
Custom image name, with or without the "File:" namespace prefix. Can be used if the wanted image is not available as variant for the entity (you can alternatively request it be added at the respective data template's talk page), or if no data template exists. Set to "none" ["blank", empty string] to use an unlinked transparent image (functionally identical to the x format).
|size= [|sz=]
Sets the image size; default is 23×15 pixels (larger for some entities). You can use an explicit size in pixels (e.g. 30x20px; the "px" suffix is optional) or one of the relative sizes "xs" (half the default dimensions), "s", "m", "l" and "xl" (twice the default size).
|border=
By default, the flag icon includes a border, except if it is disabled in the entity's country data template. |border= can be set to "yes" ["y", "1"] to force a border when excluded by default, or "no" ["n", "0", empty string] to prevent one.
|align= [|al=]
Set to "left" ["l"], "center" ["centre", "c", "middle", "m"] or "right" ["r"] to set the alignment of the image for the span box (s) and table cell (t) formats. For t, the default is center; for s, it is right-aligned if r is set, else left-aligned.
|width= [|w=]
Sets the width of the span box surrounding the image for the span box (s) format, in pixels, without the "px" suffix. The default is calculated by Module:Flaglist and depends on the image size.
|alt=
Sets alt text and mouseover text for the flag image, if it is for information rather than just decoration. If the wanted text is equal to the entity name, use the a option described above.
|ilink=
Overrides the link target of the image (only use if none of the image formats above allow linking to the desired page).
|noredlink=no
Displays a red link to the missing country data template instead of a placeholder image. If set to notext, no text will be displayed alongside the red link. Defaults to "yes" (no red link displayed).
|missingcategory=category name
Adds the page to category name if the image if the country data is missing.

Text and link parameters

|name=
Changes the displayed country name. Note that with the f format, this includes the prefix and/or suffix.
|clink= [|link=]
Overwrites the link to the country article; this is also used to construct the prefix/suffix link for the f, p and b options.
|pref=, |suff=, |plink=
|pref= and |suff= set the prefix and suffix to use for the prefix/suffix links (format letters f, p and b). The default, if neither is specified, is "Flag of" as prefix (cf. {{flagof}}) and no suffix. |plink= can be used to override the combined link.
|the=
Set to "yes" ["y", "1"] to include the article "the" before the country name in the prefix/suffix links. Example: {{flagg|usf|Philippines|the=1}} Flag of the Philippines. Use |pthe= if the link needs "the" but the name doesn't, and |nthe= if the name needs it but the link doesn't.
|section=
Links to a section of the linked article without displaying the section name. If both a country link and a prefix/suffix link are used, use |csection= for a section of the country article, and |psection= for a section of the prefixed/suffixed article.
|altvar= [|avar=], |age=
Enables using one of a set of standard suffixes for linking to sports teams and militaries. The altvar and suffix data is loaded from Module:Flagg/Altvar data. The possible parameter values are the base names of the corresponding specialized templates; alias values from full sports names exist (see examples below and data page). For some entities this also changes the image to a variant specific to a sport or military branch; for example, {{flagg|usp|Ireland|avar=ru}} Ireland uses the IRFU flag to represent the Irish rugby union team. For youth teams in some sports (see the data page), the age limit must be additionally set using |age=.
|nalign= [|nal=]
Sets the alignment of the text in table cell format (t). The default is left; the possible values are the same as for |align=.
|preftext=
Adds a text-only prefix that is not included in the link. This text is not affected by any option other than b for blanking text if no flag found. It will be separated from the link text by &nb‍sp; unless the xorn separator options are specified (in which case it will use nothing or a line break, respectively).
|text=
Overrides the entire text; only use when necessary for any nonstandard formats. Alternatively, you can set the third letter of the format parameter to x (no text) and add custom text outside the template.
|nodata=y
Overrides attempts to use the corresponding {{country data ...}} template, which is useful when the corresponding data template doesn't exist.
|pref2=, |suff2=, |plink2=, |psection2=
If the f extra is specified, and the prefix/suffixed article name being linked to doesn't exist, then use these parameters as an alternate prefix/suffix, and check if it exists as well. (If it still doesn't exist, then fall back to the non-prefixed/suffixed page as normal). This may be expensive, and the number of time it can be used on single page is limited.

Examples

Formats:

Table format & alignment:

{{flagg|utu|Jamaica}} Jamaica
{{flagg|utur|Jamaica}} Jamaica
{{flagg|utu|Jamaica|al=l|nal=l}} Jamaica
{{flagg|utu|Jamaica|al=c|nal=c}} Jamaica
{{flagg|utu|Jamaica|al=r|nal=r}} Jamaica

Standard image & name parameters:

Links and altvars:

Non-existing data template:

Adding links to specialized country, state, etc. articles. With asterisk

See also: Help:Table#Adding links to specialized country, state, etc. articles. With asterisk. Section below copied from there. Please update here as changes are made there.

For example:

Once you have a table with {{flaglist}}, and/or other flag template such as {{flag}}, it is easy to convert the links to specialized links. So instead of Oklahoma you would have Incarceration in Oklahoma, or if that article does not exist, then Crime in Oklahoma.

This works with full country or US state names. Also with abbreviated (3-letter) country names, and abbreviated (2-letter) US state names.

Use a global find-and-replace as previously described, but without regular expressions. Replace:

{{flag|

or

{{flaglist|

with

{{flagg|us*eft|pref=Incarceration in|pref2=Crime in|

The bar after flag or flaglist is necessary to avoid problems in case you have to replace 2 flag templates.

The {{flagg}} template looks for the articles. If it finds one of the two choices it adds the link and an asterisk after the location name. If it does not find either article, it just adds the standard link.

Substitute your preferred topics in the pref= and pref2= spots.

{{flagg|us*eft| usually left aligns the text of that column (due to the "t" at the end of the code). For some unknown reason that is not always true. In that case each cell in that column will need style=text-align:left in it. Or use the whole column code described here: #Column alignment and here: {{Table alignment}}. See example table.

Washington, D.C. - Have to force the full name to be shown:

{{flagg|us*eft|pref=Crime in|Washington, D.C.|name=Washington, D.C.}}

This particular use of {{flagg}} parameters is expensive and can only be used on a few hundred links per article. Every time the article is saved it occurs, even for null edits. So only one big country table per article. Other country tables in the same article should use standard links.

InList of countries by incarceration rate the {{flagg}} template creates a link to Incarceration in United States. That link is a redirect to Incarceration in the United States. Add "the" as necessary to create redirect pages. Admins will delete redirects that are not linked from within Wikipedia. So if you need to create redirects be sure to use them right away in an article table. Or keep them in a sandbox that the admins can see until you use them in an article table. See examples. See list.

{{Flagg}} removes the names of the countries behind territories, subnational areas, etc.. This makes for more compact tables. Other flag templates (such as {{flaglist}}) do not do that. But that template can not create specialized country links.

See Global Search at Toolforge. Search for
"{{flagg|us*eft" - in quotes. To get transclusion count and list of articles.

The {{flagg}} template does not work if colspan is used before the country/state name. {{flag+link}} works. See: Template talk:Flagg#Does not work with colspan. See section farther down for {{flag+link}} info: #Without asterisks. Only one preference.

Comparison with other templates

These "specialized" templates predate Flagg, and while most do not have options for custom links and images, they are probably faster because they only do two transclusions without invoking Lua.

General templates

Template Corresponding {{flagg}} syntax Example
{{flag|country}} {{flagg|uncb|country}} {{flag|China}} China
{{flagg|unc|China}} China
{{flagbig|country}} {{flagg|ulc|country|sz=l}} {{flagbig|China}}
China
{{flagg|ulc|China|sz=l}}
China
{{flagc|country}} {{flagg|inc|country}} {{flagc|China}}flag China
{{flagg|inc|China}} China
{{flagcountry|country}} {{flagg|unce|country}} {{flagcountry|CHN}} China
{{flagg|unce|CHN}} China
{{flagdeco|country}} {{flagg|uxxo|country}} {{flagdeco|China}}
{{flagg|uxx|China}}
{{flagicon|country}} {{flagg|cxxlo|country}} {{flagicon|China}}China
{{flagg|cxxlo|China}}China
{{flagicon image|image}} {{flagg|uxx|image=image}} {{flagicon image|Flag of China.svg}}
{{flagg|uxx|image=Flag of China.svg}}
{{flaglink|country|suffix}} {{flagg|unp|country|suff=suffix}} {{flaglink|China|at the Hopman Cup}} China
{{flagg|unp|China|suff=at the Hopman Cup}} China
{{flag+link|prefix|country}} {{flagg|unpe|country|pref=prefix}} (no existence check)
{{flagg|unpef|country|pref=prefix}} (expensive)
{{flag+link|Agriculture in|China}} China
{{flagg|unpe|China|pref=Agriculture in}} China
{{flagg|unpef|China|pref=Examples in}} China
{{flaglist|country}} {{flagg|usc|country}} {{flaglist|China}} China
{{flagg|usc|China}} China
{{flagof|country}} {{flagg|unp|country|sz=l}} {{flagof|China}} China
{{flagg|unp|China|sz=l}} China
{{flagright|country}} {{flagg|uncr|country}} {{flagright|China}}China 
{{flagg|uncr|China}}China 
{{flagu|country}} {{flagg|unu|country}} {{flagu|China}} China
{{flagg|unu|China}} China
{{noflag|country}} {{flagg|xnu|country}} {{noflag|China}} China
{{flagg|xnu|China}} China
{{noflag|[[country]]}} {{flagg|xnc|country}} {{noflag|[[China]]}} China
{{flagg|xnc|China}} China

Sports/military templates

The football templates are used as examples here; other sports that have separate templates work correspondingly.

Template Corresponding {{flagg}} syntax Example
{{fb|country}} {{flagg|unpe|country|avar=fb}} {{fb|China}} China
{{flagg|unpe|China|avar=fb}} China
{{fb|country|align=1}} {{flagg|uspe|country|avar=fb|al=c}} {{fb|China|align=1}} China
{{flagg|uspe|China|avar=fb|al=c}} China
{{fb-big|country}} {{flagg|ulpe|country|avar=fb|sz=l}} {{fb-big|China}}
China
{{flagg|ulpe|China|avar=fb|sz=l}}
China
{{fb-rt|country}} {{flagg|unpre|country|avar=fb}} {{fb-rt|China}}China 
{{flagg|unpre|China|avar=fb}}China 
{{fbicon|country}} {{flagg|pxxl|country|avar=fb}} {{fbicon|China}}China
{{flagg|pxxl|China|avar=fb}}China national football team
{{fbu|age|country}} {{flagg|unpe|country|avar=fbu|age=age}} {{fbu|17|China}} China
{{flagg|unpe|China|avar=fbu|age=17}} China
{{fbw|country}} {{flagg|unpe|country|avar=fbw}} {{fbw|China}} China
{{flagg|unpe|China|avar=fbw}} China
{{fbwu|age|country}} {{flagg|unpe|country|avar=fbwu|age=age}} {{fbwu|17|China}} China
{{flagg|unpe|China|avar=fbwu|age=17}} China
{{army|country}} {{flagg|unl|country|avar=army}} {{army|China}} People's Liberation Army Ground Force
{{flagg|unl|China|avar=army}} People's Liberation Army Ground Force
{{navy|country}} {{flagg|unl|country|avar=navy}} {{navy|China}} People's Liberation Army Navy
{{flagg|unl|China|avar=navy}} People's Liberation Army Navy
{{air force|country}} {{flagg|unl|country|avar=air force}} {{air force|China}} People's Liberation Army Air Force
{{flagg|unl|China|avar=air force}} People's Liberation Army Air Force
{{armed forces|country}} {{flagg|usl|country|avar=military}} {{armed forces|China}} People's Liberation Army
{{flagg|usl|China|avar=military}} People's Liberation Army

See also

local titleSelf = mw.title.new(... or mw.getCurrentFrame():getTitle())
local titleCountryData = mw.title.new[[Module:CountryData]]
if titleSelf.isSubpage then
 local sandbox = titleSelf.subpageText:match[[^sandbox]]
 if sandbox then
  titleCountryData = titleCountryData:subPageTitle(sandbox)
 end
end
local CountryData = require(tostring(titleCountryData))
local p = {}

function p.main(frame)

 --Get input arguments
 local args = require('Module:Arguments').getArgs(frame,{valueFunc =
  function(key,value)
   if value then
    value = mw.text.trim(value)
    --Change empty string to nil for all args except 'image' and 'border'
    if key=="image" or key=="border" or value~="" then
     return value
    end
   end
   return nil
  end
 })

 --Call main function
 return p.luaMain(frame,args)

end

function p.luaMain(frame,args)

 local function emp2nil(x)
  if x=="" then return nil else return x end
 end
 local function space2emp(x)
  if string.find(x,"^%s*$") then return "" else return x end
 end
 local function nopx(x)
  if x~=nil and (string.find(x,"^%d+$") or string.find(x,"^%d+px$")) then return string.gsub(x,"^(.*)px","%1") else return nil end
 end

 --Country & mode parameters
 local mode = string.lower(args[1] or "usc")
 local mi = string.sub(mode,1,1)
 local ms = string.sub(mode,2,2)
 local mn = string.sub(mode,3,3)
 local me = string.sub(mode,4,-1)

 local country = args[2] or ""
 local countryDataCountry = country
 if string.find(me, "i") then
     local titleIocCountryData = mw.title.new[[Module:Country alias/data]]
     local IocCountryData = require(tostring(titleIocCountryData))
     local iocCountryAlias = IocCountryData.countryAliases[country] or country
     countryDataCountry = IocCountryData.countries[iocCountryAlias]["countrydata_name"] or IocCountryData.countries[iocCountryAlias]["name"]
 end
 local avar = args["avar"] or args["altvar"]
 local clink = args["clink"] or args["link"]

 --Get country data & altvar data
 local data, alink, amap, asuf
 if avar then
  local age = args["age"] or ""
  local aalias
  amap, aalias = require("Module:Flagg/Altvar data").alttable(age)
  avar = string.gsub(string.lower(avar or ""),"[ -]","")
  avar = aalias[avar] or avar
  if not amap[avar] then error("Unknown avar") end
  local apar = {altvar=amap[avar].altvar;mw=amap[avar].mw;age=amap[avar].age;variant=args["variant"] or args[3]}
  data = CountryData.getcachedtable(frame, countryDataCountry, apar)
  asuf = amap[avar].altlink
  alink = data["link alias-"..amap[avar].altvar] or (clink or data["shortname alias"] or data.alias or country).." "..asuf
 else
  data = (args["nodata"] and {}) or CountryData.getcachedtable(frame, countryDataCountry, {variant=args["variant"] or args[3]})
  avar = ""
  amap = {[""]={altvar=""}}
 end

 --Name and link parameters
 clink = clink or data.alias or country

 local pref = args["pref"]
 local suff = args["suff"] or asuf
 local pref2 = args["pref2"]
 local suff2 = args["suff2"]
 if not pref and not suff then --Default prefix
  pref = "Flag of"
 end
 local yn_map = {[""]=0; ["0"]=0; ["no"]=0; ["n"]=0; ["1"]=1; ["yes"]=1; ["y"]=1}
 local fthe = (args["pthe"] and yn_map[args["pthe"]]~=0) or (args["the"] and yn_map[args["the"]]~=0)
 local nthe = (args["nthe"] and yn_map[args["nthe"]]~=0) or (args["the"] and yn_map[args["the"]]~=0)
 fthe = fthe and (pref and "t" or "T").."he " or ""
 nthe = nthe and (pref and "t" or "T").."he " or ""
 local flink = args["plink"] or args["flink"] or alink
               or clink=="" and "" or space2emp((pref or "").." ")..fthe..clink..space2emp(" "..(suff or ""))
 local flink2
 if args["plink2"] or args["flink2"] or pref2 or suff2 then
  flink2 = args["plink2"] or args["flink2"] or clink=="" and "" or space2emp((pref2 or "").." ")..fthe..clink..space2emp(" "..(suff2 or ""))
 else
  flink2 = flink
 end
 local fsec = args["psection"] or args["section"]
 local fsec2 = args["psection2"] or args["section"]
 local csec = args["csection"] or args["section"]
 fsec = fsec and "#"..fsec or ""
 fsec2 = fsec2 and "#"..fsec2 or ""
 csec = csec and "#"..csec or ""

 if string.find(me,"f") then
  if mw.title.new( flink ).exists == false then
   if flink2 ~= flink and mw.title.new ( flink2 ).exists == true then
    flink = flink2
    fsec = fsec2
   else
    flink = clink
   end
  end
 end

 local name = args["name"]
 if not name then
  local cname = string.find(me,"e") and (data["name alias-"..amap[avar].altvar] or data["shortname alias"] or data.alias) or country
  if mn == "f" then
   name = cname=="" and "" or space2emp((pref or "").." ")..nthe..cname..space2emp(" "..(suff or ""))
  else
   name = cname
  end
 end

 --Image parameters
 local pimage = args["image"]
 local placeholder = "Flag placeholder.svg"
 local variant = args["variant"] or args[3] or ""
 local image_map = {[""]=placeholder; ["none"]=placeholder; ["blank"]=placeholder}
 if pimage then --Remove namespace
  pimage = string.gsub(pimage,"^[Ff][Ii][Ll][Ee]:","")
  pimage = string.gsub(pimage,"^[Ii][Mm][Aa][Gg][Ee]:","")
 end
 local iname = image_map[pimage] or pimage

 local size = args["size"] or args["sz"]
 local size_map = {xs="12x8px"; s="17x11px"; m="23x15px"; l="32x21px"; xl="46x30px"}
 if size==nil or string.find(size,"^%d*x?%d+px$") then
  --valid EIS size (..px, x..px or ..x..px) or unset
 elseif string.find(size,"^%d*x?%d+$") then --EIS size without "px" suffix
  size=size.."px"
 else --size from map, or invalid value
  size = size_map[size] or nil
 end
 local border = args["border"]

 if iname then
  size = size or "23x15px"
  if yn_map[border]==0 then border = "" else border = "|border" end
 else
  iname = data["flag alias-"..amap[avar].altvar.."-"..variant] or data["flag alias-"..variant] or data["flag alias-"..amap[avar].altvar] or data["flag alias"] or placeholder
  size = size or emp2nil(data.size) or "23x15px"
  if border then
   if yn_map[border]==0 then border = "" else border = "|border" end
  else
   local autoborder = data["border-"..variant] or data["border-"..amap[avar].altvar] or data.border
   if autoborder and autoborder~="border" then border = "" else border = "|border" end
  end
 end

 local am = ""
 if args["alt"] or string.find(me,"a") then
  am = args["alt"] or args["name"] or country
  am = am.."|"..am
 end
 
 --Build display name
 local text = args["text"]
 if not text then
  if mn=="x" then --no text
   text = ""
  elseif mn=="p" or mn=="f" or mn == "*" then --prefix/suffix link
   text = flink=="" and name or "[["..flink..fsec.."|"..name.."]]"
   -- By the principle of least surprise, there should be some
   -- indication that the link [[X of Country|Country]] does not
   -- go to [[Country]].
   if mn == "*" and clink ~= flink then
    text = text:sub(1, -3) .. "\226\128\175*]]" end
  elseif mn=="l" then --display link target
   text = flink=="" and name or "[["..flink..fsec.."|"..(args["name"] or flink).."]]"
  elseif mn=="b" then --both prefix/suffix and normal country link
   local preflink = pref and (flink=="" and pref.." " or "[["..flink..fsec.."|"..pref.."]] ") or ""
   local sufflink = suff and (flink=="" and " "..suff or " [["..flink..fsec.."|"..suff.."]]") or ""
   local namelink = (name=="" and "" or nthe)..(clink=="" and name or "[["..clink..csec.."|"..name.."]]")
   text = preflink..namelink..sufflink
  elseif mn=="d" then --data template
   local title = mw.title.new("Template:Country data "..country)
   --check if redirect
   if title.isRedirect then
    text = "<span class=\"plainlinks\">["..title:fullUrl("redirect=no").." "..name.."]</span>"
   else
    text = "[["..title.fullText.."|"..name.."]]"
   end
  elseif mn=="u" then --unlinked
   text = name
  elseif mn=="a" then --abbr
   text = name==country and (clink==country and country or "<abbr title='"..clink.."'>"..country.."</abbr>") or ("<abbr title='"..name.."'>"..country.."</abbr>")
  else --country link (default)
   text = clink=="" and name or "[["..clink..csec.."|"..name.."]]"
  end
  if string.find(me,"p") then
   text = "("..text..")"
  end
 end
 
 if type(text) == 'function' then
  text = text(data)
 end

 --Define separator
 local separator = "&nbsp;" --non-breaking space (n)
 if ms=="x" then --no separator
  separator = ""
 elseif ms=="l" then --line break
  separator = "<br />"
 end
 
 --Add preftext, if used
 local preftext = args["preftext"]
 if (preftext or "") ~= "" then
  text = preftext..separator..text
 end
 
 --Build image
 local ilink = args["ilink"]
 if not ilink then
  if mi=="x" or (iname==placeholder and pimage~=placeholder) then --no image/invisible image
   iname = placeholder
   border = ""
   ilink = "|link="
   am = ""
  elseif mi=="i" then --image page link
   ilink = ""
  elseif mi=="c" then --country link
   ilink = "|link="..clink..(clink=="" and "" or csec)
  elseif mi=="p" or mi=="f" then --prefix/suffix link
   ilink = "|link="..flink..(flink=="" and "" or fsec)
  elseif mi=="d" then --data template
   local title = mw.title.new("Template:Country data "..country)
   --check if redirect
   if title.isRedirect then
    ilink = "|link="..title:fullUrl("redirect=no")
   else
    ilink = "|link="..title.fullText
   end
  else --unlinked (default)
   ilink = "|link="
  end
 end
 if am == "" and string.find(me,"l") then
  am = mw.ustring.sub(ilink,7,-1)
 end
 local image = "[[File:"..iname.."|"..size..border..ilink.."|alt="..am.."]]"

 if iname==placeholder then
  if require('Module:yesno')(args["noredlink"]) == false or args["noredlink"] == "notext" then
   if country ~= '' and data.alias == nil then
    iname = ''
    image = "[[:Template:Country data "..country.."]]"
    if args["noredlink"] == "notext" then
     text = ''
    end
   end
  end
  if (args["missingcategory"] or '') ~= '' then
   image = image..args["missingcategory"]
  end
  if string.find(me,"b") then
   text = ''
  end
 end

 --Combine image and name with separator
 local align_map = {left="left", l="left", center="center", centre="center", c="center", middle="center", m="center", right="right", r="right"}
 local align = align_map[args["align"] or args["al"]]
 local nalign =  align_map[args["nalign"] or args["nal"]]
 local out
 if string.find(me,"r") then
  --image right of name
  if (ms=="x" and mi=="x") or (string.find(me,"o") and iname==placeholder and pimage~=placeholder) then --name only
   out = text
  elseif ms=="x" or ms=="n" or ms=="l" then --no separator, non-breaking space, or line break
   out = text.."<span class=\"flagicon\">"..separator..image.."</span>"
  elseif ms=="t" then --table cell
   out = "style=\"text-align:"..(nalign or "left").."\"|"..text.."||style=\"text-align:"..(align or "center").."\"|<span class=\"flagicon\">"..image.."</span>"
  else --fixed-width span box (default)
   local width = args["width"] or args["w"] or require("Module:Flaglist").luawidth(size)
   out = text.."&nbsp;<span class=\"flagicon\" style=\"display:inline-block;width:"..width.."px;text-align:"..(align or "right").."\">"..image.."</span>"
  end
 else --image left of name
  if (ms=="x" and mi=="x") or (string.find(me,"o") and iname==placeholder and pimage~=placeholder) then --name only
   out = text
  elseif ms=="x" or ms=="n" or ms=="l" then --no separator, non-breaking space, or line break
   out = "<span class=\"flagicon\">"..image..separator.."</span>"..text
  elseif ms=="t" then --table cell
   out = "style=\"text-align:"..(align or "center")..";\"|<span class=\"flagicon\">"..image.."</span>||style=\"text-align:"..(nalign or "left").."\"|"..text
  else --fixed-width span box (default)
   local width = nopx(args["width"] or args["w"]) or require("Module:Flaglist").luawidth(size)
   out = "<span class=\"flagicon\" style=\"display:inline-block;width:"..width.."px;text-align:"..(align or "left").."\">"..image.."</span>&nbsp;"..text
  end
 end
 if string.find(me,"w") then --avoid wrapping
  out = "<span class=\"nowrap\">"..out.."</span>"
 end
 
 -- align in table
 if me:find("t") then
  out = 'style="text-align:'..(align or 'left')..'"|'..out
 end

 --Tracking categories
 local cat = ""
 if pimage and not image_map[pimage] and country~="" and data["flag alias"] and not args.demo then
  cat = "[[Category:Pages using Flagg with specified image instead of data template image]]"
 end

 return out..cat

end

p[''] = p.main

return p

Retrieved from "https://en.wikipedia.org/w/index.php?title=Module:Flagg&oldid=1229541556"

Categories: 
Modules in beta
Flag template system
Hidden category: 
Wikipedia template-protected modules
 



This page was last edited on 17 June 2024, at 11:05 (UTC).

Text is available under the Creative Commons Attribution-ShareAlike License 4.0; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.



Privacy policy

About Wikipedia

Disclaimers

Contact Wikipedia

Code of Conduct

Developers

Statistics

Cookie statement

Mobile view



Wikimedia Foundation
Powered by MediaWiki