Модуль:Страны
Перейти к навигации
Перейти к поиску
Викитекст | Возврат |
---|---|
{{#invoke:Страны|iso3|iso2=RU}} |
Ошибка Lua в Модуль:TableTools на строке 273: bad argument #1 to 'ipairs' (table expected, got nil). |
{{#invoke:Страны|name|iso2=RU}} |
Россия |
{{#invoke:Страны|flag|iso2=RU}} |
🇷🇺 |
{{#invoke:Страны|iso2|iso3=rus}} |
RU |
{{#invoke:Страны|name|iso3=rus}} |
Россия |
{{#invoke:Страны|flag|iso3=rus}} |
🇷🇺 |
{{#invoke:Страны|iso2|name=Россия}} |
RU |
{{#invoke:Страны|iso3|name=Россия}} |
RUS |
{{#invoke:Страны|flag|name=Россия}} |
🇷🇺 |
{{#invoke:Страны|flag|name=Утопия}} |
No such country |
{{#invoke:Страны|flag|iso4=RU}} |
No such field |
{{#invoke:Страны|iso2|Россия}} |
RU |
{{#invoke:Страны|iso3|Россия}} |
RUS |
{{#invoke:Страны|flag|Россия}} |
🇷🇺 |
{{#invoke:Страны|name|RU}} |
Россия |
{{#invoke:Страны|iso3|RU}} |
RUS |
{{#invoke:Страны|flag|RU}} |
🇷🇺 |
{{#invoke:Страны|svg_flag_url|RU}} }} |
https://upload.wikimedia.org/wikipedia/commons/f/f3/Flag_of_Russia.svg |
{{#invoke:Страны|flag|ZZ}} |
No such country |
{{#invoke:Страны|flag|Утопия}} |
No such country |
local lc, split, codepoint, char = mw.ustring.lower, mw.text.split, mw.ustring.codepoint, mw.ustring.char
local emoji_base = codepoint ('🇦', 1, 1) - codepoint ('a', 1, 1)
local no_such_country, no_such_field = '<span class="error">No such country</span>', '<span class="error">No such field</span>'
local fields = { 'iso2', 'iso3', 'name', 'fips', 'svg_flag_url' }
local countries = mw.loadData 'Module:Страны/data'
local function wrap (func)
local func = type (func) == 'function' and func or function (record)
return record [func]
end
return function (frame)
-- Unnamed argument:
local key = frame.args[1]
if key then
for _, from in ipairs (fields) do
local index = countries [from]
if index then
local record = index [lc (key)]
if record then
return func (record)
end
end
end
return no_such_country
end
-- Named argument:
for __, from in ipairs (fields) do
local key = frame.args [from]
if key then
key = lc (key)
local source = countries [from]
return source [key] and func (source [key]) or no_such_country
end
end
return no_such_field
end
end
local p = {}
for _, to in ipairs (fields) do
-- syntax: {{#invoke:Страны|name|iso1=(iso1)}}, etc.
p [to] = wrap (to)
end
p.flag = wrap (function (record)
local first, second = codepoint (lc (record.iso2), 1, 2)
return char (emoji_base + first) .. char (emoji_base + second)
end)
p.svg_flag = wrap (function (record)
local external, error = mw.ext.externalData.getWebData { url = record.svg_flag_url, format = 'text' }
return not error and external.__text or table.concat( error, ', ' )
end )
return p