Anda dapat membuat halaman dokumentasi untuk buat pada modul Scribunto ini.
Penyunting dapat melakukan uji coba pada halaman bak pasir (sunting | beda) dan kasus uji (buat) modul ini.
Subhalaman modul ini.
Penyunting dapat melakukan uji coba pada halaman bak pasir (sunting | beda) dan kasus uji (buat) modul ini.
Subhalaman modul ini.
localtitleSelf=mw.title.new(...ormw.getCurrentFrame():getTitle()) localtitleCountryData=mw.title.new[[Modul:CountryData]] iftitleSelf.isSubpagethen localsandbox=titleSelf.subpageText:match[[^bak_pasir]] ifsandboxthen titleCountryData=titleCountryData:subPageTitle(sandbox) end end localCountryData=require(tostring(titleCountryData)) localp={} functionp.main(frame) --Get input arguments localargs=require('Modul:Arguments').getArgs(frame,{valueFunc= function(key,value) ifvaluethen value=mw.text.trim(value) --Change empty string to nil for all args except 'image' and 'border' ifkey=="image"orkey=="border"orvalue~=""then returnvalue end end returnnil end }) --Call main function returnp.luaMain(frame,args) end functionp.luaMain(frame,args) localfunctionemp2nil(x) ifx==""thenreturnnilelsereturnxend end localfunctionspace2emp(x) ifstring.find(x,"^%s*$")thenreturn""elsereturnxend end localfunctionnopx(x) ifx~=niland(string.find(x,"^%d+$")orstring.find(x,"^%d+px$"))thenreturnstring.gsub(x,"^(.*)px","%1")elsereturnnilend end --Country & mode parameters localmode=string.lower(args[1]or"usc") localmi=string.sub(mode,1,1) localms=string.sub(mode,2,2) localmn=string.sub(mode,3,3) localme=string.sub(mode,4,-1) localcountry=args[2]or"" localcountryDataCountry=country ifstring.find(me,"i")then localtitleIocCountryData=mw.title.new[[Modul:Country alias/data]] localIocCountryData=require(tostring(titleIocCountryData)) localiocCountryAlias=IocCountryData.countryAliases[country]orcountry countryDataCountry=IocCountryData.countries[iocCountryAlias]["countrydata_name"]orIocCountryData.countries[iocCountryAlias]["name"] end localavar=args["avar"]orargs["altvar"] localclink=args["clink"]orargs["link"] --Get country data & altvar data localdata,alink,amap,asuf ifavarthen localage=args["age"]or"" localaalias amap,aalias=require("Modul:Flagg/Altvar data").alttable(age) avar=string.gsub(string.lower(avaror""),"[ -]","") avar=aalias[avar]oravar ifnotamap[avar]thenerror("avar tidak dikenali")end localapar={altvar=amap[avar].altvar;mw=amap[avar].mw;age=amap[avar].age;variant=args["variant"]orargs[3]} data=CountryData.getcachedtable(frame,countryDataCountry,apar) asuf=amap[avar].altlink alink=asuf.." "..(data["link alias-"..amap[avar].altvar]orclinkordata["shortname alias"]ordata.aliasorcountry) else data=(args["nodata"]and{})orCountryData.getcachedtable(frame,countryDataCountry,{variant=args["variant"]orargs[3]}) avar="" amap={[""]={altvar=""}} end --Name and link parameters clink=clinkordata.aliasorcountry localpref=args["pref"] localsuff=args["suff"]orasuf localpref2=args["pref2"] localsuff2=args["suff2"] ifnotprefandnotsuffthen--Default prefix pref="Bendera" end localyn_map={[""]=0;["0"]=0;["no"]=0;["n"]=0;["1"]=1;["yes"]=1;["y"]=1} localfthe=(args["pthe"]andyn_map[args["pthe"]]~=0)or(args["the"]andyn_map[args["the"]]~=0) localnthe=(args["nthe"]andyn_map[args["nthe"]]~=0)or(args["the"]andyn_map[args["the"]]~=0) fthe=ftheand(prefand"t"or"T").."he "or"" nthe=ntheand(prefand"t"or"T").."he "or"" localflink=args["plink"]orargs["flink"]oralink orclink==""and""orspace2emp((prefor"").." ")..clink..space2emp(" "..(suffor"")) localflink2 ifargs["plink2"]orargs["flink2"]orpref2orsuff2then flink2=args["plink2"]orargs["flink2"]orclink==""and""orspace2emp((pref2or"").." ")..clink..space2emp(" "..(suff2or"")) else flink2=flink end localfsec=args["psection"]orargs["section"] localfsec2=args["psection2"]orargs["section"] localcsec=args["csection"]orargs["section"] fsec=fsecand"#"..fsecor"" fsec2=fsec2and"#"..fsec2or"" csec=csecand"#"..csecor"" ifstring.find(me,"f")then ifmw.title.new(flink).exists==falsethen ifflink2~=flinkandmw.title.new(flink2).exists==truethen flink=flink2 fsec=fsec2 else flink=clink end end end localname=args["name"] ifnotnamethen localcname=string.find(me,"e")and(data["name alias-"..amap[avar].altvar]ordata["shortname alias"]ordata.alias)orcountry ifmn=="f"then name=cname==""and""orspace2emp((prefor"").." ")..cname..space2emp(" "..(suffor"")) else name=cname end end --Image parameters localpimage=args["image"] localplaceholder="Flag placeholder.svg" localvariant=args["variant"]orargs[3]or"" localimage_map={[""]=placeholder;["none"]=placeholder;["blank"]=placeholder} ifpimagethen--Remove namespace pimage=string.gsub(pimage,"^[Ff][Ii][Ll][Ee]:","") pimage=string.gsub(pimage,"^[Ii][Mm][Aa][Gg][Ee]:","") end localiname=image_map[pimage]orpimage localsize=args["size"]orargs["sz"] localsize_map={xs="12x8px";s="17x11px";m="23x15px";l="32x21px";xl="46x30px"} ifsize==nilorstring.find(size,"^%d*x?%d+px$")then --valid EIS size (..px, x..px or ..x..px) or unset elseifstring.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]ornil end localborder=args["border"] ifinamethen size=sizeor"23x15px" ifyn_map[border]==0thenborder=""elseborder="|border"end else iname=data["flag alias-"..amap[avar].altvar.."-"..variant]ordata["flag alias-"..variant]ordata["flag alias-"..amap[avar].altvar]ordata["flag alias"]orplaceholder size=sizeoremp2nil(data.size)or"23x15px" ifborderthen ifyn_map[border]==0thenborder=""elseborder="|border"end else localautoborder=data["border-"..variant]ordata["border-"..amap[avar].altvar]ordata.border ifautoborderandautoborder~="border"thenborder=""elseborder="|border"end end end localam="" ifargs["alt"]orstring.find(me,"a")then am=args["alt"]orargs["name"]orcountry am=am.."|"..am end --Build display name localtext=args["text"] ifnottextthen ifmn=="x"then--no text text="" elseifmn=="p"ormn=="f"ormn=="*"then--prefix/suffix link text=flink==""andnameor"[["..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]]. ifmn=="*"andclink~=flinkthen text=text:sub(1,-3).."\226\128\175*]]"end elseifmn=="l"then--display link target text=flink==""andnameor"[["..flink..fsec.."|"..(args["name"]orflink).."]]" elseifmn=="b"then--both prefix/suffix and normal country link localpreflink=prefand(flink==""andpref.." "or"[["..flink..fsec.."|"..pref.."]] ")or"" localsufflink=suffand(flink==""and" "..suffor" [["..flink..fsec.."|"..suff.."]]")or"" localnamelink=(clink==""andnameor"[["..clink..csec.."|"..name.."]]") text=preflink..namelink..sufflink elseifmn=="d"then--data template localtitle=mw.title.new("Templat:Country data "..country) --check if redirect iftitle.isRedirectthen text="<span class=\"plainlinks\">["..title:fullUrl("redirect=no").." "..name.."]</span>" else text="[["..title.fullText.."|"..name.."]]" end elseifmn=="u"then--unlinked text=name elseifmn=="a"then--abbr text=name==countryand(clink==countryandcountryor"<abbr title='"..clink.."'>"..country.."</abbr>")or("<abbr title='"..name.."'>"..country.."</abbr>") else--country link (default) text=clink==""andnameor"[["..clink..csec.."|"..name.."]]" end ifstring.find(me,"p")then text="("..text..")" end end iftype(text)=='function'then text=text(data) end --Define separator localseparator=" " ifms=="x"then--no separator separator="" elseifms=="l"then--line break separator="<br>" end --Add preftext, if used localpreftext=args["preftext"] if(preftextor"")~=""then text=preftext..separator..text end --Build image localilink=args["ilink"] ifnotilinkthen ifmi=="x"or(iname==placeholderandpimage~=placeholder)then--no image/invisible image iname=placeholder border="" ilink="|link=" am="" elseifmi=="i"then--image page link ilink="" elseifmi=="c"then--country link ilink="|link="..clink..(clink==""and""orcsec) elseifmi=="p"ormi=="f"then--prefix/suffix link ilink="|link="..flink..(flink==""and""orfsec) elseifmi=="d"then--data template localtitle=mw.title.new("Templat:Country data "..country) --check if redirect iftitle.isRedirectthen ilink="|link="..title:fullUrl("redirect=no") else ilink="|link="..title.fullText end else--unlinked (default) ilink="|link=" end end ifam==""andstring.find(me,"l")then am=mw.ustring.sub(ilink,7,-1) end localimage="[[Berkas:"..iname.."|"..size..border..ilink.."|alt="..am.."]]" ifiname==placeholderthen ifrequire('Modul:yesno')(args["noredlink"])==falseorargs["noredlink"]=="notext"then ifcountry~=''anddata.alias==nilthen iname='' image="[[:Templat:Country data "..country.."]]" ifargs["noredlink"]=="notext"then text='' end end end if(args["missingcategory"]or'')~=''then image=image..args["missingcategory"] end ifstring.find(me,"b")then text='' end end --Combine image and name with separator localalign_map={left="left",l="left",center="center",centre="center",c="center",middle="center",m="center",right="right",r="right"} localalign=align_map[args["align"]orargs["al"]] localnalign=align_map[args["nalign"]orargs["nal"]] localout ifstring.find(me,"r")then --image right of name if(ms=="x"andmi=="x")or(string.find(me,"o")andiname==placeholderandpimage~=placeholder)then--name only out=text elseifms=="x"orms=="n"orms=="l"then--no separator, non-breaking space, or line break out=text.."<span class=\"flagicon nowrap\">"..separator..image.."</span>" elseifms=="t"then--table cell out="style=\"text-align:"..(nalignor"left").."\"|"..text.."||style=\"text-align:"..(alignor"center").."\"|<span class=\"flagicon\">"..image.."</span>" else--fixed-width span box (default) localwidth=args["width"]orargs["w"]orrequire("Modul:Flag list").luawidth(size) out=text.."<span class=\"nowrap\"> <span class=\"flagicon\" style=\"display:inline-block;width:"..width.."px;text-align:"..(alignor"right").."\">"..image.."</span></span>" end else--image left of name if(ms=="x"andmi=="x")or(string.find(me,"o")andiname==placeholderandpimage~=placeholder)then--name only out=text elseifms=="x"orms=="n"orms=="l"then--no separator, non-breaking space, or line break out="<span class=\"flagicon\">"..image..separator.."</span>"..text elseifms=="t"then--table cell out="style=\"text-align:"..(alignor"center")..";\"|<span class=\"flagicon\">"..image.."</span>||style=\"text-align:"..(nalignor"left").."\"|"..text else--fixed-width span box (default) localwidth=nopx(args["width"]orargs["w"])orrequire("Modul:Flag list").luawidth(size) out="<span class=\"nowrap\"><span class=\"flagicon\" style=\"display:inline-block;width:"..width.."px;text-align:"..(alignor"left").."\">"..image.."</span> </span>"..text end end -- align in table ifme:find("t")then out='style="text-align:'..(alignor'left')..'"|'..out end --Tracking categories localcat="" ifpimageandnotimage_map[pimage]andcountry~=""anddata["flag alias"]andnotargs.demothen cat="[[Kategori:Halaman yang menggunakan Modul Flagg dengan berkas tertentu dan bukan berkas templat data]]" end returnout..cat end p['']=p.main returnp