Moduł:Brudnopis/Paweł Ziemian/Kraj
Wygląd
Dokumentacja dla tego modułu może zostać utworzona pod nazwą Moduł:Brudnopis/Paweł Ziemian/Kraj/opis
local loadCountryData = require("Moduł:Brudnopis/Paweł Ziemian/Kraj/loader").load
local function infoboxCountry(iso, country, variant, col1, col2, row, desc, country2, variant2, row2, missingCatName, notIsoCatName)
local function load(country, variant, desc)
local result = {}
while country do
local data = loadCountryData(country, variant)
if #result == 0 then
data.desc = desc
end
table.insert(result, 1, data)
local dependent = data:get("zależne od")
country = dependent and dependent[1] or false -- TODO condominium
end
return result
end
local countryData = load(country, variant, desc)
local countryData2 = country2 and load(country2, variant2, " ") or {}
local missing = missingCatName and (#countryData == 0)
local invalid = false
local builder = mw.html.create("")
local function draw(countryData, row, withFlag)
if not countryData:title() then
invalid = true
builder
:wikitext("|- ", row):newline()
:wikitext("| ", col1 or "", " | [[Państwo]]"):newline()
:wikitext('| class="linksInherit" style="background:yellow; color:red;" | ', countryData:country()):newline()
return
end
builder
:wikitext("|- ", row):newline()
:wikitext("| ", col1 or "", " | ", countryData.desc or countryData:get("nazwa terytorium") or "[[Państwo]]"):newline()
:wikitext("| ", col2 or "", " | ")
if withFlag then
countryData:drawFlag(builder, "22x20px", "", "", "", " ")
end
countryData:drawName(builder, false, false)
builder:newline()
end
local function determineFlagLimits(countryData)
if not countryData then
return 0
elseif countryData:getv("nazwa terytorium", 1) or not countryData:getv("skrót", 1) then
return 1
else
return 2
end
end
if not iso and (#countryData == 1) and not countryData[1]:title() then
invalid = true
builder
:wikitext("|- ", row):newline()
:wikitext("| ", col1 or "", " | ", countryData.desc or "[[Państwo]]"):newline()
:wikitext("| ", col2 or "", " | ", countryData[1]:country()):newline()
else
local flagLimit = determineFlagLimits(countryData[1])
for i, v in ipairs(countryData) do
draw(v, row, i <= flagLimit)
end
local flagLimit2 = determineFlagLimits(countryData[1])
for i, v in ipairs(countryData2) do
draw(v, row2, i <= flagLimit2)
end
end
if missing or invalid then
local title = mw.title.getCurrentTitle()
if title.namespace == 0 then
builder
:wikitext('|- style="text-align:center; display:none;"'):newline()
:wikitext('| colspan="2" | ')
if missing then
builder
:wikitext("''brak państwa''")
:wikitext("[[Kategoria:Infoboksy – brak danych – ", missingCatName, " – państwo|", title.text, "]]")
end
if invalid then
if iso then
builder:wikitext("[[Kategoria:błędna wartość parametru państwo]]")
elseif notIsoCatName then
builder:wikitext("[[Kategoria:", notIsoCatName, "|", title.text, "]]")
end
end
builder:newline()
end
end
return builder:allDone()
end
local getArgs = require('Module:Arguments').getArgs
local function IsDemo(frame)
for k, v in pairs(getArgs(frame)) do
return false
end
-- for testing purposes
if not frame then
return true
end
return (mw.title.getCurrentTitle().fullText == frame:getParent():getTitle())
end
return {
["Wartość"] = function(frame)
local args = getArgs(frame)
return loadCountryData(args[1], args.wariant):get(args[2])
end,
["Państwo"] = function(frame)
local args = getArgs(frame)
local country = args[1]
local variant = args.wariant or args[2] or country
local size = args.rozmiar or "22x20px"
local altlink = args.altlink
local name = args["nazwa"]
--
local countryData = loadCountryData(country, variant)
local builder = mw.html.create("")
countryData:drawFlag(builder, size, "", altlink or "", "", " ")
countryData:drawName(builder, name, false)
return builder:allDone()
end,
["PaństwoL"] = function(frame)
local args = getArgs(frame)
local country = args[1]
local variant = args.wariant or args[2] or country
local size = args.rozmiar or "22x20px"
local altlink = args.altlink
local name = args["nazwa"]
--
local countryData = loadCountryData(country, variant)
local builder = mw.html.create("")
countryData:drawName(builder, name, nil)
countryData:drawFlag(builder, size, "", altlink or "", " ", "")
return builder:allDone()
end,
["PaństwoD"] = function(frame)
local args = getArgs(frame)
local country = args[1]
local variant = args.wariant or args[2] or country
local size = args.rozmiar or "45x32px"
local altlink = args.altlink
local name = args["nazwa"]
--
local countryData = loadCountryData(country, variant)
local builder = mw.html.create("")
countryData:drawFlag(builder, size, "", altlink or "", "", "<br />")
countryData:drawName(builder, name, false)
return builder:allDone()
end,
["Państwolink"] = function(frame)
local args = getArgs(frame)
local country = args[1]
local link = args[2]
local variant = args.wariant or args[3] or country
local size = args.rozmiar or "22x20px"
local altlink = args.altlink
local name = args["nazwa"]
--
local countryData = loadCountryData(country, variant)
local builder = mw.html.create("")
countryData:drawFlag(builder, size, "", altlink or "", "", " ")
countryData:drawName(builder, name, link)
return builder:allDone()
end,
Flaga = function(frame)
local args = getArgs(frame)
local country = args[1]
local variant = args.wariant or args[2] or country
local size = args.rozmiar or "22x20px"
local altlink = args.altlink
--
local countryData = loadCountryData(country, variant)
local builder = mw.html.create("")
local link = countryData:get("link")
countryData:drawFlag(builder, size, link or "", altlink or link or "", "", "")
return builder:allDone()
end,
Bandera = function(frame)
local args = getArgs(frame)
local country = args[1] or "{{{1}}}"
local variant = args.wariant or args[2] or country
local size = args.rozmiar or "22x20px"
local altlink = args.altlink
local name = args["nazwa"]
--
local countryData = loadCountryData(country, { "bandera-"..variant, variant, "bandera", 1 })
local builder = mw.html.create("")
countryData:drawFlag(builder, size, "", altlink or "", "", " ")
countryData:drawName(builder, name, false)
return builder:allDone()
end,
BanderaD = function(frame)
local args = getArgs(frame)
local country = args[1] or "{{{1}}}"
local variant = args.wariant or args[2] or country
local size = args.rozmiar or "40x30px"
--
local countryData = loadCountryData(country, { "bandera-"..variant, "bandera", variant, 1 })
local builder = mw.html.create("")
local link = countryData:get("link")
countryData:drawFlag(builder, size, link or "", altlink or link or "", "", "")
return builder:allDone()
end,
Reprezentacja = function(frame)
local args = getArgs(frame)
local country = args[1]
local variant = args.wariant or country
local name = args["rodzaj"]
local link = args.link
local size = args.rozmiar or "22x16px"
local altlink = args.altlink
--
local countryData = loadCountryData(country, variant)
local builder = mw.html.create("")
countryData:drawFlag(builder, size, "", countryData:get("link"), "", " ")
countryData:drawTeamName(builder, link, name)
return builder:allDone()
end,
ReprezentacjaL = function(frame)
local args = getArgs(frame)
local country = args[1]
local variant = args.wariant or country
local name = args["rodzaj"]
local link = args.link
local size = args.rozmiar or "22x16px"
local altlink = args.altlink
--
local countryData = loadCountryData(country, variant)
local builder = mw.html.create("")
countryData:drawTeamName(builder, link, name)
countryData:drawFlag(builder, size, "", countryData:get("link"), " ", "")
return builder:allDone()
end,
ReprezentacjaD = function(frame)
local args = getArgs(frame)
local country = args[1]
local variant = args.wariant or country
local name = args["rodzaj"]
local link = args.link
local size = args.rozmiar or "60x40px"
local altlink = args.altlink
--
local countryData = loadCountryData(country, variant)
local builder = mw.html.create("")
countryData:drawFlag(builder, size, "", countryData:get("link"), "", "<br />")
countryData:drawTeamName(builder, link, name)
return builder:allDone()
end,
["Infobox państwo"] = function(frame)
local args = getArgs(frame)
return infoboxCountry(
true,
args[1],
args.wariant or args[1],
args.kol1 or 'style="background: #eeeeee; vertical-align: top;"',
args.kol2 or "",
args.wiersz2 or args.wiersz,
args.opis,
args["2. państwo"],
args["2. wariant"] or args["2. państwo"],
args.wiersz3 or args.wiersz,
args["kategoria brak"],
false
)
end,
["Infobox państwo dodaj"] = function(frame)
local args = getArgs(frame)
return infoboxCountry(
true,
args[2] or args[1],
args.wariant or args[2] or args[1],
args.kol1 or 'style="background: #eeeeee; vertical-align: top;"',
args.kol2 or "",
args.wiersz2 or args.wiersz,
args.opis,
args["2. państwo"],
args["2. wariant"] or args["2. państwo"],
args.wiersz3 or args.wiersz,
false,
false
)
end,
["Infobox państwo nie iso"] = function(frame)
local args = getArgs(frame)
return infoboxCountry(
false,
args[1],
args.wariant or args[1],
args.kol1 or 'style="background: #eeeeee; vertical-align: top;"',
args.kol2 or "",
args.wiersz2 or args.wiersz,
args.opis,
args["2. państwo"],
args["2. wariant"] or args["2. państwo"],
args.wiersz3 or args.wiersz,
args["kategoria brak"],
args["kategoria nie iso"]
)
end,
["Infobox państwo nie iso dodaj"] = function(frame)
local args = getArgs(frame)
return infoboxCountry(
false,
args[2] or args[1],
args.wariant or args[2] or args[1],
args.kol1 or 'style="background: #eeeeee; vertical-align: top;"',
args.kol2 or "",
args.wiersz2 or args.wiersz,
args.opis,
args["2. państwo"],
args["2. wariant"] or args["2. państwo"],
args.wiersz3 or args.wiersz,
false,
args["kategoria nie iso"]
)
end,
["Infobox jednostki administracyjne"] = function(frame)
local args = getArgs(frame)
local country = args["państwo"]
local wariant = args["wariant"]
local col1 = args.kol1 or 'style="background: #eeeeee; vertical-align: top;"'
local col2 = args.kol2 or ""
local row = args.wiersz
local function loadUnits(p)
local result = {}
local test = (type(frame) ~= "table") or (type(frame.getParent) ~= "function")
local i = 1
while true do
local arg = p..tostring(i)
local u
if test then
u = args[arg]
else
u = frame:getParent().args[arg]
end
if not u then
return result
end
table.insert(result, u)
i = i + 1
end
end
local j = loadUnits("j")
local t = loadUnits("t")
local s = loadUnits("s")
--
if (#j == 0) and (#t == 0) and (#s == 0) then
-- nothing to draw
return
end
local demo = IsDemo(frame)
local countryData = loadCountryData(country, variant)
local units = countryData:get("jednostki")
local builder = mw.html.create("")
if (not demo and not countryData:title()) or not units then
builder
:wikitext('|- style="text-align:center; color:red; font-weight:bold;"'):newline()
:wikitext("| BŁĘDNY PARAMETR ", mw.text.nowiki("{{{państwo}}}"), " = ", country or mw.text.nowiki("{{{państwo}}}"), "[[Kategoria:Szablony flag - brak szablonu jednostek administracyjnych]]"):newline()
end
local drawn = false
local warnArgs = false
if (demo or countryData:title()) and units then
local function drawUnits(p, units, needSeparator)
if #units < #p then
warnArgs = true
end
local result = false
for i, v in ipairs(units) do
local unit = p[i]
if demo and (not unit or (#unit == 0)) then
unit = mw.text.nowiki("{{{"..arg.."}}}")
end
if unit and (#unit > 0) then
local text = v
if string.sub(v, 1, 3) == "{{#" then
text = frame:getParent():preprocess(v)
end
if needSeparator then
needSeparator = false
builder
:wikitext("|-"):newline()
:wikitext('| colspan="2" style="border-top:1px dashed #aaa; spacing:0px; padding:0px; height:0px;" |'):newline()
end
builder
:wikitext("|- ", row):newline()
:wikitext("| ", col1 or "", " | ", text):newline()
:wikitext("| ", col2 or "", " | ", unit):newline()
result = true
end
end
return result
end
local drawn = drawUnits(j, units.jednostka, false)
if units.tradycyjna then
if drawUnits(t, units.tradycyjna, drawn) then
drawn = true
end
elseif #t > 0 then
warnArgs = true
end
if units.statystyczna then
drawUnits(s, units.statystyczna, drawn)
elseif #s > 0 then
warnArgs = true
end
end
if warnArgs then
local title = mw.title.getCurrentTitle()
if title.namespace == 0 then
builder
:wikitext('|- style="text-align:center; display:none;"'):newline()
:wikitext('| colspan="2" | [[Kategoria:Infoboksy – błędne dane – jednostki administracyjne]]'):newline()
end
end
return builder:allDone()
end,
}