Modul:InfoboxSettlement
Aspect
Documentația acestui modul poate fi creată la Modul:InfoboxSettlement/doc
local p = {}
local args = {}
local root
local wikidata = require('Module:Wikidata')
local collapsibleList = require('Module:Collapsible_list')
local getArgs = require('Module:Arguments').getArgs
local existCache = {}
local lang = mw.getContentLanguage()
local function ifexist(pageName)
if existCache[pageName] == nil then
local page = mw.title.new(pageName)
if page then
existCache[pageName] = page.exists
else
existCache[pageName] = false
end
end
return existCache[pageName]
end
local function returnIfPageExists(pageName)
if pageName == nil then return nil end
if ifexist(pageName) then
return pageName
end
return nil
end
local function isNilOrEmpty(argument)
return argument == nil or mw.text.trim(argument) == ''
end
local function convertSqMiToKm2(argument)
local sqmi = argument
if type(argument) == 'string' then sqmi = tonumber(argument) end
return 2.58998811 * sqmi
end
local function convertFtToM(argument)
local ft = argument
if type(argument) == 'string' then sqmi = tonumber(argument) end
return .3048 * ft
end
local function round(num, idp)
local mult = 10^(idp or 0)
return math.floor(num * mult + 0.5) / mult
end
local function removeDiacritics(argument)
local ret = tostring(argument)
ret = mw.ustring.gsub(ret, 'ă', 'a')
ret = mw.ustring.gsub(ret, 'â', 'a')
ret = mw.ustring.gsub(ret, 'î', 'i')
ret = mw.ustring.gsub(ret, 'ș', 's')
ret = mw.ustring.gsub(ret, 'ț', 't')
ret = mw.ustring.gsub(ret, 'ș', 's')
ret = mw.ustring.gsub(ret, 'ț', 't')
return ret
end
local function _generate()
root = mw.html.create('table')
root:addClass('infocaseta')
:attr('cellspacing', '0')
:css('font-size', '88%')
:css('padding', '0')
:css('line-height', '1.5em')
local headerTd = root:tag('tr'):tag('td')
:attr('colspan', '2')
:addClass('antet harta')
:wikitext(args['nume'])
if args['nume_nativ'] then
headerTd:tag('br')
headerTd:tag('span')
:addClass('porecla')
:wikitext(args['nume_nativ'])
end
if args['alt_nume'] then
headerTd:tag('br')
headerTd:tag('span')
:addClass('porecla')
:wikitext(args['alt_nume'])
end
if args['nume'] and args['tip_asezare'] then
root:tag('tr')
:addClass('mergedtoprow')
:tag('td')
:attr('colspan', '2')
:css('text-align', 'center')
:css('background', '#dddddd')
:wikitext("— '''" .. args['tip_asezare'] .. "''' —")
end
if args['nume'] and args['nume_oficial'] and args['nume'] ~= args['nume_oficial'] then
root:tag('tr')
:addClass('mergedtoprow')
:tag('td')
:attr('colspan', '2')
:css('text-align', 'center')
:wikitext("'''" .. args['nume_oficial'] .. "'''")
end
local nume_limba = args['nume_limba']
for langIndex = 1,table.maxn(nume_limba) do
if nume_limba[langIndex] and nume_limba[langIndex]['nume_limba'] and nume_limba[langIndex]['nume_limba'] ~= "" then
root:tag('tr')
:addClass('mergedtoprow')
:tag('td')
:attr('colspan', '2')
:css('text-align', 'center')
:wikitext("'''" .. nume_limba[langIndex]['nume_limba'] .. " '''")
local nume_limba_tip = nume_limba[langIndex]['tip']
local nume_limba_info = nume_limba[langIndex]['info']
if nume_limba_tip and nume_limba_info then
for tipIndex = 1,table.maxn(nume_limba_tip) do
if nume_limba_tip[tipIndex] then
local langTr = root:tag('tr')
if tipIndex == table.maxn(nume_limba_tip) then langTr:addClass('mergedbottomrow') else langTr:addClass('mergedrow') end
langTr:tag('th')
:wikitext(" - " .. nume_limba_tip[tipIndex])
langTr:tag('td')
:wikitext(nume_limba_info[tipIndex] or "")
end
end
end
end
end
if args['imagine'] and args['imagine'] ~= "" then
root:tag('tr')
:tag('td')
:attr('colspan', '2')
:css('text-align', 'center')
:css('padding', '0.7em 0.8em 0.7em 0.8em')
:wikitext('[[Fișier:' .. args['imagine'] .. '|' .. args['imagine_dimensiune'] .. '|none|' .. args['imagine_descriere'] .. ']]' .. args['imagine_descriere'])
end
if args['image_seal'] or args['drapel'] or args['stemă'] or args['emblemă_imagine'] then
local symbolsTable = root:tag('tr')
:addClass('mergedtoprow')
:tag('td')
:addClass('maptable')
:attr('colspan', '2')
:attr('align', 'center')
:css('padding', '0.4em 0 0.4em 0')
:tag('table')
:css('width', '100%')
:css('background', 'none')
:attr('align', 'center')
local numberOfSymbols = 0
local sealText, drapelText, stemaText, emblemaText = "","","",""
if not isNilOrEmpty(args['image_seal']) then
sealText = sealText .. "[[Fișier:" .. args['image_seal'] .. '|' .. args['seal_size'] .. '|'
sealText = sealText .. "Sigiliul autorităților din " .. args['nume'] .. ']]'
sealText = sealText .. "<br/><small>"
if args['seal_link'] and args['seal_link'] ~= "" then sealText = sealText .. '[[' .. args['seal_link'] .. '|Sigiliu]]' else sealText = sealText .. "'''Sigiliu'''" end
sealText = sealText .. "</small>"
end
if not isNilOrEmpty(args['emblemă_imagine']) then
emblemaText = emblemaText .. "[[Fișier:" .. args['emblemă_imagine'] .. '|' .. args['emblemă_dimensiune'] .. '|Logo oficial]]'
emblemaText = emblemaText .. "<br/><small>"
if not isNilOrEmpty(args['emblemă_link']) then emblemaText = emblemaText .. '[[' .. args['emblemă_link'] .. '|' .. args['emblemă_tip'] ..']]' else emblemaText = emblemaText .. args['emblemă_tip'] end
emblemaText = emblemaText .. "</small>"
end
if not isNilOrEmpty(args['stemă']) then
stemaText = stemaText .. "[[Fișier:" .. args['stemă'] .. '|' .. args['stemă_dimensiune'] .. '|Stemă]]'
stemaText = stemaText .. "<br/><small>"
if not isNilOrEmpty(args['link_stemă']) then stemaText = stemaText .. '[[' .. args['link_stemă'] .. '|Stemă]]' else stemaText = stemaText .. "'''Stemă'''" end
stemaText = stemaText .. "</small>"
end
if not isNilOrEmpty(args['drapel']) then
drapelText = drapelText .. "[[Fișier:" .. args['drapel'] .. '|' .. args['drapel_dimensiune'] .. '|border|Drapel]]'
drapelText = drapelText .. "<br/><small>"
if not isNilOrEmpty(args['link_drapel']) then drapelText = drapelText .. '[[' .. args['link_drapel'] .. '|Drapel]]' else drapelText = drapelText .. "'''Drapel'''" end
drapelText = drapelText .. "</small>"
end
for symbolIndex, symbolKey in pairs({ 'image_seal', 'drapel', 'stemă', 'emblemă_imagine' }) do
if not isNilOrEmpty(args[symbolKey]) then numberOfSymbols = numberOfSymbols + 1 end
end
if numberOfSymbols == 2 then
local twoSymbolsTr = symbolsTable:tag('tr')
local firstSymbolsTd = twoSymbolsTr:tag('td')
:css('vertical-align', 'middle')
:attr('align', 'center')
if not isNilOrEmpty(args['drapel']) then
firstSymbolsTd:wikitext(drapelText)
elseif not isNilOrEmpty(args['image_seal']) then
firstSymbolsTd:wikitext(sealText)
elseif not isNilOrEmpty(args['stemă']) then
firstSymbolsTd:wikitext(stemaText)
elseif not isNilOrEmpty(args['emblemă_imagine']) then
firstSymbolsTd:wikitext(emblemaText)
end
local secondSymbolsTd = twoSymbolsTr:tag('td')
:css('vertical-align', 'middle')
:attr('align', 'center')
if not isNilOrEmpty(args['emblemă_imagine']) then
secondSymbolsTd:wikitext(emblemaText)
elseif not isNilOrEmpty(args['stemă']) then
secondSymbolsTd:wikitext(stemaText)
elseif not isNilOrEmpty(args['image_seal']) then
secondSymbolsTd:wikitext(sealText)
elseif not isNilOrEmpty(args['drapel']) then
secondSymbolsTd:wikitext(drapelText)
end
else
if not isNilOrEmpty(args['drapel']) or not isNilOrEmpty(args['image_seal']) then
local flagAndSealRow = symbolsTable:tag('tr')
if not isNilOrEmpty(args['drapel']) then
local drapelTd = flagAndSealRow:tag('td'):css('vertical-align', 'middle'):attr('align', 'center')
if isNilOrEmpty(args['image_seal']) then drapelTd:attr('colspan', '2') else drapelTd:attr('width', '50%') end
drapelTd:wikitext(drapelText)
end
if not isNilOrEmpty(args['image_seal']) then
local sealTd = flagAndSealRow:tag('td'):css('vertical-align', 'middle'):attr('align', 'center')
if isNilOrEmpty(args['drapel']) then sealTd:attr('colspan', '2') else sealTd:attr('width', '50%') end
sealTd:wikitext(sealText)
end
end
if not isNilOrEmpty(args['stemă']) or not isNilOrEmpty(args['emblemă_imagine']) then
local armsAndLogoRow = symbolsTable:tag('tr')
if not isNilOrEmpty(args['stemă']) then
local armsTd = armsAndLogoRow:tag('td'):css('vertical-align', 'middle'):attr('align', 'center')
if isNilOrEmpty(args['emblemă_imagine']) then armsTd:attr('colspan', '2') else armsTd:attr('width', '50%') end
armsTd:wikitext(stemaText)
end
if not isNilOrEmpty(args['emblemă_imagine']) then
local logoTd = armsAndLogoRow:tag('td'):css('vertical-align', 'middle'):attr('align', 'center')
if isNilOrEmpty(args['stemă']) then logoTd:attr('colspan', '2') else logoTd:attr('width', '50%') end
logoTd:wikitext(emblemaText)
end
end
end
end
if args['poreclă'] ~= "" then
root:tag('tr'):addClass('mergedrow')
:tag('td'):attr('colspan', '2')
:attr('align', 'center')
:wikitext('[[Poreclă]]: ' .. tostring(mw.html.create('span'):addClass('porecla'):wikitext(args['poreclă'])))
end
if args['motto'] ~= "" then
root:tag('tr'):addClass('mergedrow')
:tag('td'):attr('colspan', '2')
:attr('align', 'center')
:wikitext('[[Motto]]: ' .. args['motto'])
end
local hartaPunct = args['hartă_punct']
if hartaPunct then
local hartaPunctText = mw.getCurrentFrame():expandTemplate{
title = 'superimpose',
args = {
base = hartaPunct.imagine,
base_width = hartaPunct.dimensiune,
base_caption = args['nume'],
float = 'Red pog.svg',
float_width = '9px',
float_caption = hartaPunct.descriere,
x = hartaPunct.x,
y = hartaPunct.y
}
} .. (hartaPunct.descriere ~= nil and tostring(mw.html.create('small').wikitext(hartaPunct.descriere)) or '')
root:tag('tr'):addClass('mergedrow'):attr('align', 'center')
:tag('td'):attr('colspan', '2')
:css('text-align', 'center')
:css('padding', '0.7em 0.8em 0.7em 0.8em')
:wikitext(hartaPunctText)
end
local pushpins = args['pushpin']
for mapIndex = 1,table.maxn(args['pushpin']) do
if pushpins[mapIndex]
and not isNilOrEmpty(pushpins[mapIndex]['map'])
and not isNilOrEmpty(args['longd'])
and not isNilOrEmpty(args['latd'])
and ifexist('Format:Harta de localizare ' .. pushpins[mapIndex]['map']) then
local mapArgs = { pushpins[mapIndex]['map'], float = 'none', background = args['background'], border = 'none', position = pushpins[mapIndex]['label_position'], width = pushpins[mapIndex]['size']}
if pushpins[mapIndex]['label_position'] ~= none then mapArgs.label = args['nume'] end
if isNilOrEmpty(args['longm']) and isNilOrEmpty(args['longEV']) then
mapArgs.long = args['longd']
else
mapArgs.lon_deg = args['longd']
mapArgs.lon_min = args['longm']
mapArgs.lon_sec = args['longs']
mapArgs.lon_dir = args['longEV']
end
if isNilOrEmpty(args['latm']) and isNilOrEmpty(args['latNS']) then
mapArgs.lat = args['latd']
else
mapArgs.lat_deg = args['latd']
mapArgs.lat_min = args['latm']
mapArgs.lat_sec = args['lats']
mapArgs.lat_dir = args['latNS']
end
local altMap = mw.getCurrentFrame():expandTemplate{title = 'Harta de localizare ' .. pushpins[mapIndex]['map'], args = { 'alt_image' } }
if not isNilOrEmpty(altMap) then mapArgs.AlternativeMap = altMap end
local mapText = mw.getCurrentFrame():expandTemplate{title = 'Harta de localizare ', args = mapArgs }
root:tag('tr'):addClass('mergedrow')
:tag('td'):attr('colspan', '2'):attr('align', 'center')
:wikitext(mapText .. pushpins[mapIndex]['caption'])
end
end
if not isNilOrEmpty(args['latd']) or not isNilOrEmpty(args['coordonate']) then
local coordsTh = root:tag('tr'):addClass('mergedbottomrow')
:tag('th'):attr('colspan', '2')
:css('text-align', 'center')
:css('font-size', 'small')
:css('padding-bottom', '0.7em')
if not isNilOrEmpty(args['latd']) then
local coordsText = 'Coordonate'
if not isNilOrEmpty(args['tip_coordonate']) then
coordsText = coordsText .. ' (' .. args['tip_coordonate'] .. ')'
end
coordsText = coordsText .. ':' .. mw.getCurrentFrame():expandTemplate{ title = 'Geobox coor', args = { args['latd'], args['latm'], args['lats'], args['latNS'], args['longd'], args['longm'], args['longs'], args['longEV'], args['coordinates_type'], title='1', format='dms' } }
coordsTh:wikitext(coordsText)
elseif not isNilOrEmpty(args['coordonate']) then
coordsTh:wikitext(args['coordonate'])
end
end
if #(args['subdiviziuni']) > 0 then
root:tag('tr'):tag('td'):attr('colspan', '2'):tag('hr')
for subdivIndex = 1, table.maxn(args['subdiviziuni']) do
if args['subdiviziuni'][subdivIndex] ~= nil and not isNilOrEmpty(args['subdiviziuni'][subdivIndex]['tip']) then
local subdivTh = root:tag('tr'):addClass('merged' .. (subdivIndex == 1 and 'top' or '') .. 'row'):tag('th'):wikitext(args['subdiviziuni'][subdivIndex]['tip']):done()
:tag('th'):addClass('adr')
if subdivIndex == 1 then subdivTh:tag('span'):addClass('country-name'):wikitext(args['subdiviziuni'][subdivIndex]['nume'])
elseif subdivIndex == 2 then subdivTh:tag('span'):addClass('region'):wikitext(args['subdiviziuni'][subdivIndex]['nume'])
else subdivTh:wikitext(args['subdiviziuni'][subdivIndex]['nume']) end
end
end
end
if #(args['clasificari']) > 0 then
root:tag('tr'):tag('td'):attr('colspan', '2'):tag('hr')
for clasifIndex = 1, table.maxn(args['clasificari']) do
if args['clasificari'][clasifIndex] ~= nil and not isNilOrEmpty(args['clasificari'][clasifIndex]['tip']) then
root:tag('tr'):addClass('merged' .. (clasifIndex == 1 and 'top' or '') .. 'row'):tag('th'):wikitext(args['clasificari'][clasifIndex]['tip']):done()
:tag('td'):wikitext(args['clasificari'][clasifIndex]['cod'])
end
end
end
for atestIndex = 1, table.maxn(args['atestari']) do
if args['atestari'][atestIndex] ~= nil and not isNilOrEmpty(args['atestari'][atestIndex]['an']) and not isNilOrEmpty(args['atestari'][atestIndex]['titlu']) then
root:tag('tr'):addClass('mergedrow')
:tag('th'):wikitext(args['atestari'][atestIndex]['titlu']):done()
:tag('td'):wikitext(args['atestari'][atestIndex]['an'])
end
end
if not isNilOrEmpty(args['fondator']) then
root:tag('tr'):addClass('mergedrow')
:tag('th'):wikitext('Fondator'):done()
:tag('td'):wikitext(args['fondator'])
end
if not isNilOrEmpty(args['numit_dupa']) then
root:tag('tr'):addClass('mergedrow')
:tag('th'):wikitext('Numit după'):done()
:tag('td'):wikitext(args['numit_dupa'])
end
local ip = args['p']
if table.maxn(ip) == 0 and isNilOrEmpty(args['componenta']) then
ip = wikidata.getValueList(nil, 'P1383') or {}
end
if not isNilOrEmpty(args['resedinta']) or table.maxn(ip) > 0 or not isNilOrEmpty(args['componenta']) then
root:tag('tr'):tag('td'):attr('colspan', '2'):tag('hr')
local nextRowClass = 'mergedtoprow'
if not isNilOrEmpty(args['resedinta']) then
root:tag('tr'):addClass(nextRowClass)
:tag('th'):wikitext(args['tip_resedinta']):done()
:tag('td'):wikitext(args['resedinta'])
nextRowClass = 'mergedrow'
end
if table.maxn(ip) > 0 or not isNilOrEmpty(args['componenta']) then
local tipComp = isNilOrEmpty(args['tip_componenta']) and 'Componență' or args['tip_componenta']
local pTableRow = root:tag('tr'):addClass(nextRowClass)
:tag('th'):wikitext(tipComp):done():tag('td')
if args['stil_componenta'] == 'para' then
pTableRow:wikitext(args['componenta'])
if table.maxn(ip) > 0 and not isNilOrEmpty(args['componenta']) then pTableRow:wikitext(': ') end
pTableRow:wikitext(table.concat(ip, ', '))
elseif table.maxn(ip) > 0 then
local displayStyle = ''
if args['stil_componenta'] == 'coll' or (args['stil_componenta'] ~= 'list' and table.maxn(ip) > 6) then displayStyle = 'none' else displayStyle = 'on' end
pTableRow:wikitext(collapsibleList.display(nil, 'border:none;padding:0;', nil, args['componenta'], 'list_style=text-align:left;display:' .. displayStyle, ip))
else
pTableRow:wikitext(args['componenta'])
end
end
end
local lideri = args['lideri']
if not isNilOrEmpty(args['tip_guvernare']) or table.maxn(lideri) > 0 then
root:tag('tr'):tag('td'):attr('colspan', '2'):tag('hr')
local governmentHeadTd = root:tag('tr'):addClass('mergedtoprow'):tag('td'):attr('colspan', '2'):wikitext("'''Guvernare''' ")
if not isNilOrEmpty(args['guvernare_note_subsol']) then
governmentHeadTd:wikitext(args['guvernare_note_subsol'])
end
if not isNilOrEmpty(args['tip_guvernare']) then
root:tag('tr'):addClass('mergedrow')
:tag('th'):wikitext(' - Tip'):done()
:tag('td'):wikitext(args['tip_guvernare'])
end
for liderIndex = 1,table.maxn(lideri) do
if lideri[liderIndex] ~= nil then
local leaderTd = root:tag('tr'):addClass('mergedrow')
:tag('th'):wikitext(' - ', mw.text.trim(lideri[liderIndex]['titlu'] or '')):done()
:tag('td')
if not isNilOrEmpty(lideri[liderIndex]['nume']) then
if not isNilOrEmpty(lideri[liderIndex]['link']) then
leaderTd:wikitext('[[', lideri[liderIndex]['link'], '|', lideri[liderIndex]['nume'], ']]')
else
leaderTd:wikitext(lideri[liderIndex]['nume'])
end
end
local leaderDataInBrackets = {}
if not isNilOrEmpty(lideri[liderIndex]['partid']) then
local tara = args['subdiviziuni'][1] and args['subdiviziuni'][1]['nume'] or ''
table.insert(leaderDataInBrackets, mw.getCurrentFrame():expandTemplate{title='Polparty', args={tara, lideri[liderIndex]['partid'] } })
end
if not isNilOrEmpty(lideri[liderIndex]['ales']) then
table.insert(leaderDataInBrackets, lideri[liderIndex]['ales'])
end
if #leaderDataInBrackets > 0 then leaderTd:wikitext(' (', table.concat(leaderDataInBrackets, ', '), ')') end
end
end
end
local suprIndex, suprV = next(args['suprafata'], nil)
if suprIndex or not isNilOrEmpty(args['altitudine']) then
root:tag('tr'):tag('td'):attr('colspan', '2'):tag('hr')
if suprIndex then
root:tag('tr'):addClass('mergedtoprow')
:tag('td'):attr('colspan', '2'):wikitext("'''[[Suprafață]]'''", args['note_subsol_suprafata'])
if args['suprafata']['totala'] then
local suprafTotalTh = root:tag('tr'):addClass('mergedrow'):tag('th'):wikitext(' - ')
if not isNilOrEmpty(args['tip_total']) then suprafTotalTh:wikitext(args['tip_total'])
elseif args['suprafata']['metropolitana'] or args['suprafata']['urbana'] then
if isNilOrEmpty(args['tip_asezare']) then suprafTotalTh:wikitext(args['tip_asezare']) else suprafTotalTh:wikitext('Oraș') end
else suprafTotalTh:wikitext('Total') end
suprafTotalTh:done():tag('td'):wikitext(args['suprafata']['totala']['km2'], ' [[km²]]')
end
if args['suprafata']['pamant'] then
root:tag('tr'):addClass('mergedrow')
:tag('th'):wikitext(' - Pământ'):done()
:tag('td'):wikitext(args['suprafata']['pamant']['km2'], ' [[km²]]')
end
if args['suprafata']['apa'] then
local waterAreaTd = root:tag('tr'):addClass('mergedrow')
:tag('th'):wikitext(' - Apă'):done()
:tag('td'):wikitext(args['suprafata']['apa']['km2'], ' [[km²]]')
if args['suprafata']['apa']['procent'] then
waterAreaTd:wikitext(' ', args['suprafata']['apa']['procent'], '%')
end
end
if args['suprafata']['urbana'] then
root:tag('tr'):addClass('mergedrow')
:tag('th'):wikitext(' - [[Arie urbană|Urbană]]'):done()
:tag('td'):wikitext(args['suprafata']['urbana']['km2'], ' [[km²]]')
end
if args['suprafata']['metropolitana'] then
root:tag('tr'):addClass('mergedrow')
:tag('th'):wikitext(' - [[Zonă metropolitană|Metropolitană]]'):done()
:tag('td'):wikitext(args['suprafata']['metropolitana']['km2'], ' [[km²]]')
end
for blankIndex = 1, table.maxn(args['suprafata']['blank'] or {}) do
local crtBlank = args['suprafata']['blank'][blankIndex]
if crtBlank and crtBlank['title'] and crtBlank['km2'] then
root:tag('tr'):addClass('mergedrow')
:tag('th'):wikitext(' - ', crtBlank['title']):done()
:tag('td'):wikitext(crtBlank['km2'], ' [[km²]]')
end
end
end
if not isNilOrEmpty(args['altitudine']) then
root:tag('tr'):addClass('mergedtoprow')
:tag('td'):wikitext("'''[[Altitudine]]'''", args['note_subsol_altitudine']):done()
:tag('td'):wikitext(args['altitudine'], ' [[Nivelul mării|m.d.m.]]')
end
if not isNilOrEmpty(args['altitudine_max_m']) then
root:tag('tr'):addClass('mergedtoprow')
:tag('td'):wikitext("[[Altitudine]] maximă"):done()
:tag('td'):wikitext(args['altitudine_max_m'], ' [[Nivelul mării|m.d.m.]]')
end
if not isNilOrEmpty(args['altitudine_min_m']) then
root:tag('tr'):addClass('mergedbottomrow')
:tag('td'):wikitext("Altitudine minimă"):done()
:tag('td'):wikitext(args['altitudine_min_m'], ' [[Nivelul mării|m.d.m.]]')
end
end
if not isNilOrEmpty(args['populatie']) or not isNilOrEmpty(args['populatie_urbana']) or not isNilOrEmpty(args['populatie_metropolitana']) or next(args['population_blank'], nil) then
root:tag('tr'):tag('td'):attr('colspan', '2'):tag('hr')
local popTitleTd = root:tag('tr'):addClass('mergedtoprow'):tag('td')
if args['tip_total'] ~= ' ' then popTitleTd:attr('colspan', '2') end
popTitleTd:wikitext("'''Populație''' ")
if args['recensamant'] then popTitleTd:wikitext('(', args['recensamant'], ')') end
popTitleTd:wikitext(args['note_subsol_populatie'])
local popTextTd
if args['tip_total'] ~= ' ' then
local totalheader = root:tag('tr'):addClass('mergedrow')
:tag('th'):wikitext(' - ')
if not isNilOrEmpty(args['tip_total']) then totalheader:wikitext(args['tip_total'])
elseif not isNilOrEmpty(args['populatie_metropolitana']) or not isNilOrEmpty(args['populatie_urbana']) then
if not isNilOrEmpty(args['tip_asezare']) then totalheader:wikitext(args['tip_asezare'])
else totalheader:wikitext('Oraș')
end
else totalheader:wikitext('Total')
end
popTextTd = totalheader:done():tag('td')
else
popTextTd = popTitleTd:done():tag('td')
end
popTextTd:wikitext(mw.getCurrentFrame():callParserFunction{name='formatnum', args = { args['populatie'] } }, ' locuitori')
if not isNilOrEmpty(args['densitate']) then
root:tag('tr'):addClass('mergedrow')
:tag('th'):wikitext(' - [[Densitatea populației|Densitate]]'):done()
:tag('td'):wikitext(mw.getCurrentFrame():expandTemplate{title = 'dim', args={args['densitate'], 'loc./km²'} })
end
if args['populatie_urbana'] then
root:tag('tr'):addClass('mergedrow')
:tag('th'):wikitext(' - [[Zonă urbană|Urbană]]'):done()
:tag('td'):wikitext(mw.getCurrentFrame():callParserFunction{name='formatnum', args = { args['populatie_urbana'] } })
end
if args['densitate_pop_urbana'] then
root:tag('tr'):addClass('mergedrow')
:tag('th'):wikitext(' - Densitate urbană'):done()
:tag('td'):wikitext(mw.getCurrentFrame():callParserFunction{name='formatnum', args = { args['densitate_pop_urbana'] } })
end
if args['populatie_metropolitana'] then
root:tag('tr'):addClass('mergedrow')
:tag('th'):wikitext(' - [[Zonă metropolitană|Metropolitană]]'):done()
:tag('td'):wikitext(mw.getCurrentFrame():callParserFunction{name='formatnum', args = { args['populatie_metropolitana']} })
end
if args['densitate_pop_metro'] then
root:tag('tr'):addClass('mergedrow')
:tag('th'):wikitext(' - Densitate metropolitană'):done()
:tag('td'):wikitext(mw.getCurrentFrame():callParserFunction{name='formatnum', args = { args['densitate_pop_metro'] } })
end
for popIdx=1,table.maxn(args['population_blank']) do
if args['population_blank'][popIdx] then
if args['population_blank'][popIdx]['value'] then
root:tag('tr'):addClass('mergedrow')
:tag('th'):wikitext(' - ', args['population_blank'][popIdx]['title']):done()
:tag('td'):wikitext(mw.getCurrentFrame():callParserFunction{name='formatnum', args = { args['population_blank'][popIdx]['value']} })
end
if args['population_blank'][popIdx]['densitate'] then
root:tag('tr'):addClass('mergedrow')
:tag('th'):wikitext(' - ', 'Densitate ', args['population_blank'][popIdx]['title']):done()
:tag('td'):wikitext(mw.getCurrentFrame():callParserFunction{name='formatnum', args = { args['population_blank'][popIdx]['densitate']} })
end
end
end
if args['populatie_note'] then
root:tag('tr'):addClass('mergedbottomrow')
:tag('td'):wikitext(' '):done()
:tag('td'):tag('small'):wikitext(args['populatie_note'])
end
end
if not isNilOrEmpty(args['fus_orar']) or not isNilOrEmpty(args['cod_postal']) or not isNilOrEmpty(args['prefix_tel']) or not isNilOrEmpty(args['cod']) then
root:tag('tr'):tag('td'):attr('colspan', '2'):tag('hr')
if not isNilOrEmpty(args['fus_orar']) then
root:tag('tr'):addClass('mergedtoprow')
:tag('th'):wikitext('[[Fus orar]]'):done()
:tag('td'):wikitext(args['fus_orar'], (not isNilOrEmpty(args['utc_offset']) and (' (' .. args['utc_offset'] .. ')') or ''))
if not isNilOrEmpty(args['fus_orar_DST']) then
root:tag('tr'):addClass('mergedtoprow')
:tag('th'):css('white-space', 'nowrap'):wikitext(' - Ora de vară ([[Ora de vară|DST]])'):done()
:tag('td'):wikitext(args['fus_orar_DST'], (not isNilOrEmpty(args['utc_offset_DST']) and (' (' .. args['utc_offset_DST'] .. ')') or ''))
end
end
if not isNilOrEmpty(args['cod_postal']) then
root:tag('tr'):addClass('mergedtoprow')
:tag('th'):wikitext(args['tip_cod_postal']):done()
:tag('td'):addClass('adr'):tag('span'):addClass('postal-code'):wikitext(args['cod_postal'])
end
local postCodeTrClass = 'mergedrow'
for postCodeIdx=1,table.maxn(args['postal_codes']) do
if args['postal_codes'][postCodeIdx] and args['postal_codes'][postCodeIdx]['code_type'] and args['postal_codes'][postCodeIdx]['code'] then
if postCodeIdx == table.maxn(args['postal_codes']) then postCodeTrClass = 'mergedbottomrow' end
root:tag('tr'):addClass(postCodeTrClass)
:tag('th'):wikitext(args['postal_codes'][postCodeIdx]['code_type']):done()
:tag('td'):addClass('adr'):tag('span'):addClass('postal-code'):wikitext(args['postal_codes'][postCodeIdx]['code_type'])
end
end
if not isNilOrEmpty(args['prefix_tel']) then
root:tag('tr'):addClass('mergedbottomrow')
:tag('th'):wikitext('Prefix telefonic'):done()
:tag('td'):wikitext(args['prefix_tel'])
end
if not isNilOrEmpty(args['cod']) then
root:tag('tr'):addClass('mergedtoprow')
:tag('th'):wikitext(args['tip_cod']):done()
:tag('td'):addClass('adr'):tag('span'):addClass('postal-code'):wikitext(args['cod'])
end
end
if next(args['infratiri'], nil) then
root:tag('tr'):tag('td'):attr('colspan', '2'):tag('hr')
local first = true
for infrIdx = 1, table.maxn(args['infratiri']) do
if args['infratiri'][infrIdx] then
if first then
root:tag('tr'):addClass('mergedtoprow')
:tag('td'):attr('colspan', '2'):wikitext("'''Localități înfrățite'''")
first = false
end
root:tag('tr'):addClass('mergedrow')
:tag('td'):wikitext(' - ', args['infratiri'][infrIdx]['oras']):done()
:tag('td'):wikitext(args['infratiri'][infrIdx]['tara'] or '')
end
end
end
local trClass = 'mergedtoprow'
for campGolIdx = 1, table.maxn(args['campuri_goale']) do
if args['campuri_goale'][campGolIdx] and args['campuri_goale'][campGolIdx]['gol_nume'] then
root:tag('tr'):addClass(trClass)
:tag('th'):wikitext(args['campuri_goale'][campGolIdx]['gol_nume']):done()
:tag('td'):wikitext(args['campuri_goale'][campGolIdx]['gol_info'])
trClass = 'mergedrow'
end
end
if args['note'] then
root:tag('tr'):addClass('mergedtoprow')
:tag('td'):attr('colspan', '2'):attr('align', 'left')
:tag('small'):wikitext(args['note'])
end
if not isNilOrEmpty(args['website']) then
root:tag('tr'):tag('td'):attr('colspan', '2'):tag('hr')
root:tag('tr'):tag('td'):attr('colspan', '2'):addClass('mergedtoprow'):css('text-align', 'center'):wikitext("'''Site web:''' ", args['website'])
end
if args['harti'][1] then
root:tag('tr'):tag('td'):attr('colspan', '2'):tag('hr')
for mapIdx = 1, table.maxn(args['harti']) do
if args['harti'][mapIdx] then
root:tag('tr'):addClass('mergedrow')
:tag('td'):attr('colspan', '2'):css('text-align', 'center'):css('padding', '0.7em 0.8em 0.7em 0.8em'):css('align', 'center'):css('margin', '0 auto')
:wikitext('[[Fișier:' .. args['harti'][mapIdx]['harta'] .. '|' .. args['harti'][mapIdx]['size'] .. '|none|' .. (args['harti'][mapIdx]['descriere'] or ('Hartă de poziționare pentru ' .. args['nume'])) .. ']]', args['harti'][mapIdx]['descriere'])
end
end
end
root:wikitext(mw.getCurrentFrame():expandTemplate{title='infodoc', args = {colspan='2', culoare='dddddd', link = args['infodoc']}})
return tostring(root)
end
p.infobox = function(frame)
origArgs = getArgs(frame, { wrappers = { 'Format:Infocaseta Așezare' } })
args['nume'] = origArgs['nume'] or origArgs['nume_oficial'] or wikidata.findLabel(nil, nil) or mw.title.getCurrentTitle().text
args['nume_oficial'] = origArgs['nume_oficial']
args['nume_nativ'] = origArgs['nume_nativ']
args['alt_nume'] = origArgs['alt_nume']
args['tip_asezare'] = origArgs['tip_asezare'] or origArgs['tip_așezare']
args['tip_asezare_genitiv'] = origArgs['tip_asezare_genitiv'] or origArgs['tip_așezare_genitiv'] or 'localității'
args['nume_limba'] = {}
args['pushpin'] = {}
args['subdiviziuni'] = {}
args['clasificari'] = {}
args['atestari'] = {}
args['p'] = {}
args['lideri'] = {}
args['suprafata'] = {}
args['population_blank'] = {}
args['postal_codes'] = {}
args['infratiri'] = {}
args['campuri_goale'] = {}
args['harti'] = {}
local nlStart, nlEnd
for argN, argV in pairs(origArgs) do
if argV ~= nil and mw.text.trim(argV) == '' then origArgs[argN] = nil end
argV = mw.text.trim(argV)
origArgs[argN] = mw.text.trim(argV)
nlStart, nlEnd = mw.ustring.find(argN, 'nume_limba')
if nlStart == 1 then
local nlIndex = tonumber(mw.ustring.sub(argN, 1 + nlEnd, mw.ustring.len(argN)))
if nlIndex ~= nil then
if args['nume_limba'][nlIndex] == nil then
args['nume_limba'][nlIndex] = {}
end
args['nume_limba'][nlIndex]['nume_limba'] = mw.text.trim(argV)
end
end
nlStart, nlEnd = mw.ustring.find(argN, 'pushpin_map')
if nlStart == 1 then
local varNameWithIndex = mw.ustring.sub(argN, 1 + nlEnd, mw.ustring.len(argN))
local indexLocation = mw.ustring.find(varNameWithIndex, "%d+") or (1 + #varNameWithIndex)
local variableName = mw.ustring.sub(varNameWithIndex, 1, indexLocation - 1)
local variableIndexStr = mw.ustring.sub(varNameWithIndex, indexLocation, #varNameWithIndex) or ""
local variableIndex
if variableIndexStr == "" then variableIndex = 1 else variableIndex = 1 + tonumber(variableIndexStr) end
if args['pushpin'][variableIndex] == nil then args['pushpin'][variableIndex] = {} end
args['pushpin'][variableIndex]['map'] = mw.text.trim(argV)
args['pushpin'][variableIndex]['size'] = mw.text.trim(origArgs['pushpin_dimensiune_harta' .. variableIndexStr] or origArgs['pushpin_dimensiune_hartă' .. variableIndexStr] or '290')
args['pushpin'][variableIndex]['caption'] = mw.text.trim(origArgs['pushpin_descriere_harta' .. variableIndexStr] or origArgs['pushpin_descriere_hartă' .. variableIndexStr] or 'Poziția geografică')
args['pushpin'][variableIndex]['label_position'] = mw.text.trim(origArgs['pushpin_label_position' .. variableIndexStr] or 'right')
end
nlStart, nlEnd = mw.ustring.find(argN, 'tip_subdiviziune')
if nlStart == 1 then
local varNameWithIndex = mw.ustring.sub(argN, 1 + nlEnd, mw.ustring.len(argN))
local indexLocation = mw.ustring.find(varNameWithIndex, "%d+") or (1 + #varNameWithIndex)
local variableName = mw.ustring.sub(varNameWithIndex, 1, indexLocation - 1)
local variableIndexStr = mw.ustring.sub(varNameWithIndex, indexLocation, #varNameWithIndex) or ""
local variableIndex
if variableIndexStr == "" then variableIndex = 1 else variableIndex = 1 + tonumber(variableIndexStr) end
if args['subdiviziuni'][variableIndex] == nil then args['subdiviziuni'][variableIndex] = {} end
args['subdiviziuni'][variableIndex]['tip'] = mw.text.trim(argV)
args['subdiviziuni'][variableIndex]['nume'] = mw.text.trim(origArgs['nume_subdiviziune' .. variableIndexStr] or '')
end
nlStart, nlEnd = mw.ustring.find(argN, 'tip_cod_clasificare')
if nlStart == 1 then
local varNameWithIndex = mw.ustring.sub(argN, 1 + nlEnd, mw.ustring.len(argN))
local indexLocation = mw.ustring.find(varNameWithIndex, "%d+") or (1 + #varNameWithIndex)
local variableName = mw.ustring.sub(varNameWithIndex, 1, indexLocation - 1)
local variableIndexStr = mw.ustring.sub(varNameWithIndex, indexLocation, #varNameWithIndex) or ""
local variableIndex
if varNameWithIndex == "" then variableIndex = 1
elseif varNameWithIndex == "_superioară" then variableIndex = 2 else variableIndex = 2 + tonumber(variableIndexStr) end
if args['clasificari'][variableIndex] == nil then args['clasificari'][variableIndex] = {} end
args['clasificari'][variableIndex]['tip'] = mw.text.trim(argV)
args['clasificari'][variableIndex]['cod'] = mw.text.trim(origArgs['cod_clasificare' .. variableIndexStr] or '')
end
nlStart, nlEnd = mw.ustring.find(argN, 'atestare')
if nlStart == 1 then
local varNameWithIndex = mw.ustring.sub(argN, 1 + nlEnd, mw.ustring.len(argN))
local indexLocation = mw.ustring.find(varNameWithIndex, "%d+") or (1 + #varNameWithIndex)
local variableName = mw.ustring.sub(varNameWithIndex, 1, indexLocation - 1)
local variableIndexStr = mw.ustring.sub(varNameWithIndex, indexLocation, #varNameWithIndex) or ""
local variableIndex
if variableIndexStr == "" then variableIndex = 1 else variableIndex = 1 + tonumber(variableIndexStr) end
if args['atestari'][variableIndex] == nil then args['atestari'][variableIndex] = {} end
args['atestari'][variableIndex]['an'] = mw.text.trim(argV)
args['atestari'][variableIndex]['titlu'] = mw.text.trim(origArgs['titlu_atestare' .. variableIndexStr] or 'Atestare')
end
nlStart, nlEnd = mw.ustring.find(argN, 'p')
if nlStart == 1 then
local pIndex = mw.ustring.find(argN, "%d+$")
if pIndex == 2 then
local variableIndexStr = mw.ustring.sub(argN, 2, #argN)
local variableIndex = tonumber(variableIndexStr)
if mw.text.trim(argV) ~= '' then
args['p'][variableIndex] = mw.text.trim(argV)
end
end
end
nlStart, nlEnd = mw.ustring.find(argN, 'lider_')
if nlStart == 1 then
local varNameWithIndex = mw.ustring.sub(argN, 1 + nlEnd, mw.ustring.len(argN))
local indexLocation = mw.ustring.find(varNameWithIndex, "%d+") or (1 + #varNameWithIndex)
local variableName = mw.ustring.sub(varNameWithIndex, 1, indexLocation - 1)
local variableIndexStr = mw.ustring.sub(varNameWithIndex, indexLocation, #varNameWithIndex) or ""
local variableIndex
if variableIndexStr == "" then variableIndex = 1 else variableIndex = 1 + tonumber(variableIndexStr) end
if args['lideri'][variableIndex] == nil then args['lideri'][variableIndex] = {} end
args['lideri'][variableIndex][variableName] = mw.text.trim(argV)
end
nlStart, nlEnd = mw.ustring.find(argN, 'area_blank')
if nlStart == 1 then
if args['suprafata']['blank'] == nil then args['suprafata']['blank'] = {} end
local varNameWithIndex = mw.ustring.sub(argN, 1 + nlEnd, mw.ustring.len(argN))
local varNameLocation = mw.ustring.find(varNameWithIndex, "[^%d]") or (1 + #varNameWithIndex)
local variableIndexStr = mw.ustring.sub(varNameWithIndex, 1, varNameLocation - 1)
local variableName = mw.ustring.sub(varNameWithIndex, mw.ustring.find(varNameWithIndex, '%a[%w_]+') or (1 + #varNameWithIndex), #varNameWithIndex)
local variableIndex = tonumber(variableIndexStr)
if args['suprafata']['blank'][variableIndex] == nil then args['suprafata']['blank'][variableIndex] = {} end
args['suprafata']['blank'][variableIndex][variableName] = mw.text.trim(argV)
end
nlStart, nlEnd = mw.ustring.find(argN, 'population_blank')
if nlStart == 1 then
local varNameWithIndex = mw.ustring.sub(argN, 1 + nlEnd, mw.ustring.len(argN))
local varNameLocation = mw.ustring.find(varNameWithIndex, "[^%d]") or (1 + #varNameWithIndex)
local variableIndexStr = mw.ustring.sub(varNameWithIndex, 1, varNameLocation - 1)
local variableName = mw.ustring.sub(varNameWithIndex, mw.ustring.find(varNameWithIndex, "%a[%w_]+") or (1 + #varNameWithIndex), #varNameWithIndex)
local variableIndex = tonumber(variableIndexStr)
if args['population_blank'][variableIndex] == nil then args['population_blank'][variableIndex] = {} end
if isNilOrEmpty(variableName) then
args['population_blank'][variableIndex]['value'] = mw.text.trim(argV)
else
args['population_blank'][variableIndex][variableName] = mw.text.trim(argV)
end
end
nlStart, nlEnd = mw.ustring.find(argN, 'densitate_populație_blank')
if nlStart == 1 then
local varNameWithIndex = mw.ustring.sub(argN, 1 + nlEnd, mw.ustring.len(argN))
local varNameLocation = mw.ustring.find(varNameWithIndex, "[^%d]") or (1 + #varNameWithIndex)
local variableIndexStr = mw.ustring.sub(varNameWithIndex, 1, varNameLocation - 1)
local variablePostIndexStr = mw.ustring.find(varNameWithIndex, "%a[%w_]+") or (1 + #varNameWithIndex)
local variableName = mw.ustring.sub(varNameWithIndex, variablePostIndexStr, #varNameWithIndex)
local variableIndex = tonumber(variableIndexStr)
if args['population_blank'][variableIndex] == nil then args['population_blank'][variableIndex] = {} end
if isNilOrEmpty(variableName) or variableName == 'km2' then
args['population_blank'][variableIndex]['densitate'] = mw.text.trim(argV)
else
if variableName == 'sqmi' or variableName == 'sq_mi' then args['population_blank'][variableIndex]['densitate'] = tostring(round(tonumber(argV) / 2.58998811)) end
end
end
nlStart, nlEnd = mw.ustring.find(argN, 'postal')
if nlStart == 1 then
local varNameWithIndex = mw.ustring.sub(argN, 1 + nlEnd, mw.ustring.len(argN))
local varNameLocation = mw.ustring.find(varNameWithIndex, "[^%d]") or (1 + #varNameWithIndex)
local variableIndexStr = mw.ustring.sub(varNameWithIndex, 1, varNameLocation - 1)
local variableName = mw.ustring.sub(varNameWithIndex, mw.ustring.find(varNameWithIndex, "%a[%w_]+") or (1 + #varNameWithIndex), #varNameWithIndex)
if not isNilOrEmpty(variableIndexStr) then
local variableIndex = tonumber(variableIndexStr)
if args['postal_codes'][variableIndex] == nil then args['postal_codes'][variableIndex] = {} end
args['postal_codes'][variableName] = mw.text.trim(argV)
end
end
nlStart, nlEnd = mw.ustring.find(argN, 'infratit')
if nlStart == 1 then
local varNameWithIndex = mw.ustring.sub(argN, 1 + nlEnd, mw.ustring.len(argN))
local varNameLocation = mw.ustring.find(varNameWithIndex, "[^%d]") or (1 + #varNameWithIndex)
local variableIndexStr = mw.ustring.sub(varNameWithIndex, 1, varNameLocation - 1)
local varNamePostIndex = mw.ustring.find(varNameWithIndex, "%a[%w_]+") or (1 + #varNameWithIndex)
local variableName = mw.ustring.sub(varNameWithIndex, varNamePostIndex, #varNameWithIndex)
local variableIndex = tonumber(variableIndexStr)
if args['infratiri'][variableIndex] == nil then args['infratiri'][variableIndex] = {} end
if isNilOrEmpty(variableName) then
args['infratiri'][variableIndex]['oras'] = mw.text.trim(argV)
else
args['infratiri'][variableIndex][variableName] = mw.text.trim(argV)
end
end
nlStart, nlEnd = mw.ustring.find(argN, 'camp')
if nlStart == 1 then
local varNameWithIndex = mw.ustring.sub(argN, 1 + nlEnd, mw.ustring.len(argN))
local varNameLocation = mw.ustring.find(varNameWithIndex, "[^%d]") or (1 + #varNameWithIndex)
local variableIndexStr = mw.ustring.sub(varNameWithIndex, 1, varNameLocation - 1)
if isNilOrEmpty(variableIndexStr) then variableIndexStr = 1 end
local variableName = mw.ustring.sub(varNameWithIndex, mw.ustring.find(varNameWithIndex, '%a[%w_]+') or (1 + #varNameWithIndex), #varNameWithIndex)
local variableIndex = 1 + tonumber(variableIndexStr)
if args['campuri_goale'][variableIndex] == nil then args['campuri_goale'][variableIndex] = {} end
args['campuri_goale'][variableIndex][variableName] = mw.text.trim(argV)
end
nlStart, nlEnd = mw.ustring.find(argN, 'hartă%d*')
if nlStart == 1 then
local variableIndex, variableIndexStr
if argN == 'hartă' then
variableIndex = 1
variableIndexStr = ''
else
local indexLocation = mw.ustring.find(argN, "%d+")
variableIndexStr = mw.ustring.sub(argN, indexLocation, mw.ustring.len(argN))
if tonumber(variableIndexStr) ~= nil then
variableIndex = 1 + tonumber(variableIndexStr)
else
variableIndex = -1
end
end
if variableIndex > 0 then
if args['harti'][variableIndex] == nil then args['harti'][variableIndex] = {} end
args['harti'][variableIndex]['harta'] = argV
args['harti'][variableIndex]['descriere'] = origArgs['descriere_hartă' .. variableIndexStr]
args['harti'][variableIndex]['size'] = origArgs['dimensiune_hartă' .. variableIndexStr] or '290x290px'
end
end
end
if not isNilOrEmpty(origArgs['an']) then
if args['atestari'][1] == nil then args['atestari'][1] = {} end
args['atestari'][1]['an'] = origArgs['an']
args['atestari'][1]['titlu'] = origArgs['titlu_atestare'] or 'Atestare'
end
if args['lideri'][1] == nil or isNilOrEmpty(args['lideri'][1]['nume']) then
local wikidataMayorName = wikidata.findOneValue('P6')
if not isNilOrEmpty(wikidataMayorName) then
if args['lideri'][1] == nil then args['lideri'][1] = {} end
args['lideri'][1]['nume'] = wikidataMayorName
args['lideri'][1]['ales'] = wikidata.findLatestQualifierDateValueForOneProperty('P6', 'P580')
end
end
if args['lideri'][1] ~= nil and isNilOrEmpty(args['lideri'][1]['titlu']) then
local wikidataMayorTitle = wikidata.findOneValue('P1313')
if not isNilOrEmpty(wikidataMayorTitle) then
args['lideri'][1]['titlu'] = wikidataMayorTitle
else
args['lideri'][1]['titlu'] = 'Primar'
end
end
for i = 1,table.maxn(args['nume_limba']) do
if args['nume_limba'][i] then
for argN, argV in pairs(origArgs) do
nlStart, nlEnd = mw.ustring.find(argN, 'nume_limba' .. tostring(i) .. "_")
if nlStart == 1 then
local varNameWithIndex = mw.ustring.sub(argN, 1 + nlEnd, mw.ustring.len(argN))
local indexLocation = mw.ustring.find(varNameWithIndex, "%d+") or (1 + #varNameWithIndex)
local variableName = mw.ustring.sub(varNameWithIndex, 1, indexLocation - 1)
local variableIndexStr = mw.ustring.sub(varNameWithIndex, indexLocation, #varNameWithIndex)
local variableIndex
if variableIndexStr == nil or variableIndexStr == "" then variableIndex = 1 else variableIndex = 1 + tonumber(variableIndexStr) end
if args['nume_limba'][i][variableName] == nil then args['nume_limba'][i][variableName] = {} end
args['nume_limba'][i][variableName][variableIndex] = mw.text.trim(argV)
end
end
end
end
if table.maxn(args['infratiri']) == 0 then
local infratiri = wikidata.getEntityIdsList(nil, 'P190')
if infratiri then
for infrIdx = 1,#infratiri do
args['infratiri'][infrIdx] = {}
args['infratiri'][infrIdx]['oras'] = wikidata.findLinkToItem(infratiri[infrIdx])
local cityEntity = mw.wikibase.getEntity('Q' .. infratiri[infrIdx])
if cityEntity then
local countryLink = wikidata.findOneValueNoRef('P17', cityEntity)
if not isNilOrEmpty(countryLink) then
args['infratiri'][infrIdx]['tara'] = countryLink
end
end
end
end
end
if table.maxn(args['pushpin']) == 0 then
local entity = mw.wikibase.getEntityObject()
if entity and entity.claims and entity.claims['P17'] then
local defaultPushpin = {}
defaultPushpin.map = entity:formatPropertyValues('P17', mw.wikibase.entity.claimRanks).value
defaultPushpin.size = 290
defaultPushpin.caption = 'Poziția geografică'
defaultPushpin.label_position = args['pushpin_label_position'] or 'left'
table.insert(args['pushpin'], defaultPushpin)
end
end
args['imagine'] = origArgs['imagine'] or wikidata.findOneValueNoRef('P18', nil)
args['imagine_descriere'] = origArgs['imagine_descriere'] or (args['nume'])
if not isNilOrEmpty(origArgs['imagine_dimensiune']) then
args['imagine_dimensiune'] = origArgs['imagine_dimensiune']
else
args['imagine_dimensiune'] = "290x290px"
end
args['drapel'] = origArgs['drapel'] or origArgs['steag'] or origArgs['steag_imagine'] or wikidata.findOneValueNoRef('P41', nil)
args['image_seal'] = origArgs['image_seal'] or wikidata.findOneValueNoRef('P158', nil)
args['emblemă_imagine'] = origArgs['emblemă_imagine'] or origArgs['emblema_imagine']
args['stemă'] = origArgs['stemă'] or origArgs['stema'] or wikidata.findOneValueNoRef('P94', nil)
args['drapel_dimensiune'] = origArgs['drapel_dimensiune'] or origArgs['steag_dimensiune'] or '100px'
args['link_drapel'] = origArgs['link_drapel'] or origArgs['steag_link'] or returnIfPageExists('Drapelul orașului ' .. mw.title.getCurrentTitle().text) or wikidata.findOneValueNoRef('P162', nil)
args['seal_size'] = origArgs['seal_size'] or '100px'
args['seal_link'] = origArgs['seal_link'] or returnIfPageExists('Sigiliul orașului ' .. mw.title.getCurrentTitle().text) or ((not isNilOrEmpty(args['nume_oficial']) and returnIfPageExists('Sigiliul orașului ' .. args['nume_oficial']) or ''))
args['link_stemă'] = origArgs['link_stemă'] or origArgs['stemă_link'] or returnIfPageExists('Stema ' .. mw.title.getCurrentTitle().text) or ((not isNilOrEmpty(args['nume_oficial']) and returnIfPageExists('Stema ' .. args['nume_oficial']) or ''))
args['stemă_dimensiune'] = origArgs['stemă_dimensiune'] or '100px'
args['emblemă_link'] = origArgs['emblemă_link'] or origArgs['emblema_link'] or returnIfPageExists('Logo-ul ' .. mw.title.getCurrentTitle().text) or ((not isNilOrEmpty(args['nume_oficial']) and returnIfPageExists('Logo-ul ' .. args['nume_oficial']) or ''))
args['emblemă_dimensiune'] = origArgs['emblemă_dimensiune'] or origArgs['emblema_dimensiune'] or '100px'
args['emblemă_tip'] = origArgs['emblemă_tip'] or origArgs['emblema_tip'] or 'Logo'
args['poreclă'] = origArgs['porecla'] or origArgs['poreclă'] or ""
args['motto'] = origArgs['motto'] or ""
if not isNilOrEmpty(origArgs['hartă_punct_imagine']) then
args['hartă_punct'] = {}
args['hartă_punct'].imagine = origArgs['hartă_punct_imagine']
args['hartă_punct'].dimensiune = origArgs['hartă_punct_dimensiune'] or '180px'
args['hartă_punct'].descriere = origArgs['hartă_punct_descriere'] or ''
args['hartă_punct'].x = origArgs['dot_x'] or ''
args['hartă_punct'].y = origArgs['dot_y'] or ''
end
args['latd'] = origArgs['latd'] or origArgs['lat_d'] or ''
args['latm'] = origArgs['latm'] or origArgs['lat_m'] or ''
args['lats'] = origArgs['lats'] or origArgs['lat_s'] or ''
args['latNS'] = origArgs['lat_NS'] or origArgs['latNS']
args['longd'] = origArgs['longd'] or origArgs['long_d'] or ''
args['longm'] = origArgs['longm'] or origArgs['long_m'] or ''
args['longs'] = origArgs['longs'] or origArgs['long_s'] or ''
args['longEV'] = origArgs['longEV'] or origArgs['long_EV'] or origArgs['longEW'] or origArgs['long_EW']
if isNilOrEmpty(args['latd']) then
local wikidataCoords = wikidata.findDataValueObjects(nil, 'P625')
if wikidataCoords[1] then
args['latd'] = tostring(math.abs(wikidataCoords[1].latitude))
if wikidataCoords[1].latitude < 0 then args['latNS'] = 'S' end
args['longd'] = tostring(math.abs(wikidataCoords[1].longitude))
if wikidataCoords[1].longitude < 0 then args['longEV'] = 'V' end
end
end
args['background'] = origArgs['background'] or ''
args['tip_coordonate'] = origArgs['tip_coordonate'] or ''
args['coordinates_type'] = origArgs['coordinates_type'] or 'type:city'
args['coordonate'] = origArgs['coordonate'] or ''
args['fondator'] = origArgs['fondator'] or ''
args['numit_dupa'] = origArgs['numit_dupa'] or origArgs['numit_după'] or ''
args['resedinta'] = origArgs['reședință'] or origArgs['resedinta'] or origArgs['reședința'] or ''
args['tip_resedinta'] = origArgs['tip_resedinta'] or origArgs['tip_reședință'] or 'Reședință'
args['componenta'] = origArgs['componenta'] or ''
args['tip_componenta'] = mw.text.trim(origArgs['componenta_tip'] or origArgs['tip_componenta'] or origArgs['tip_componență'] or origArgs['componență_tip'] or 'Componență')
args['stil_componenta'] = mw.text.trim(origArgs['componenta_stil'] or '')
args['tip_guvernare'] = mw.text.trim(origArgs['guvernare_tip'] or origArgs['tip_guvernare'] or '')
args['guvernare_note_subsol'] = mw.text.trim(origArgs['guvernare_note_subsol'] or '')
local tipuriSuprafata = { 'totală', 'metropolitană', 'urbană', 'apă', 'pământ' }
local unitatiSuprafata = { 'km2', 'dunam', 'sqmi', 'ha', 'procent' }
for tipK, tipV in pairs(tipuriSuprafata) do
for unitK, unitV in pairs(unitatiSuprafata) do
local argument = 'suprafață_' .. tipV .. '_' .. unitV
if not isNilOrEmpty(origArgs[argument] or origArgs[removeDiacritics(argument)]) then
if args['suprafata'][removeDiacritics(tipV)] == nil then args['suprafata'][removeDiacritics(tipV)] = {} end
local crtArg = origArgs[argument] or origArgs[removeDiacritics(argument)]
args['suprafata'][removeDiacritics(tipV)][unitV] = crtArg
if args['suprafata'][removeDiacritics(tipV)]['km2'] == nil then
if unitV == 'dunam' then args['suprafata'][removeDiacritics(tipV)]['km2'] = tostring(round(.001 * tonumber(crtArg), 2))
elseif unitV == 'sqmi' then args['suprafata'][removeDiacritics(tipV)]['km2'] = tostring(round(convertSqMiToKm2(tonumber(crtArg)), 2))
elseif unitV == 'ha' then args['suprafata'][removeDiacritics(tipV)]['km2'] = tostring(round(.01 * tonumber(crtArg), 2)) end
end
end
end
end
args['note_subsol_suprafata'] = mw.text.trim(origArgs['note_subsol_suprafata'] or origArgs['suprafata_note_subsol'] or '')
args['tip_total'] = mw.text.trim(origArgs['tip_total'] or '')
args['note_subsol_altitudine'] = mw.text.trim(origArgs['note_subsol_altitudine'] or origArgs['altitudine_note_subsol'] or'')
local unitatiAltitudine = { 'm', 'ft' }
local tipuriAltitudine = { '', 'max', 'min' }
for tipK, tipV in pairs(tipuriAltitudine) do
for unitK, unitV in pairs(unitatiAltitudine) do
local crtArg = 'altitudine' .. (tipV ~= '' and '_' or '') .. tipV .. '_' .. unitV
local translatedArg = 'altitudine' .. (tipV ~= '' and '_' or '') .. tipV .. (tipV ~= '' and ('_' .. unitV) or '')
local translatedArgM = 'altitudine' .. (tipV ~= '' and '_' or '') .. tipV .. (tipV ~= '' and '_m' or '')
if not isNilOrEmpty(origArgs[crtArg]) or not isNilOrEmpty(origArgs[translatedArg]) then
args[translatedArg] = mw.text.trim(origArgs[crtArg] or origArgs[translatedArg])
if unitV == 'ft' and args[translatedArgM] == nil then args[translatedArgM] = tostring(round(convertFtToM(tonumber(mw.text.trim(args[translatedArg]))), 0)) end
end
end
end
args['populatie'] = origArgs['populatie'] or origArgs['populație'] or wikidata.findOneValueNoRef('P1082', nil)
args['populatie_urbana'] = origArgs['populatie_urbana'] or origArgs['populație_urbană'] or origArgs['populație_urbana']
args['densitate_pop_urbana'] = origArgs['densitate_populație_urbana_km2']
args['populatie_metropolitana'] = origArgs['populatie_metropolitana'] or origArgs['populație_metropolitană'] or origArgs['populație_metropolitana']
args['densitate_pop_metro'] = origArgs['densitate_populație_metro_km2']
args['recensamant'] = origArgs['recensamant'] or origArgs['recensământ']
args['note_subsol_populatie'] = origArgs['note_subsol_populatie'] or origArgs['populatie_note_subsol'] or origArgs['populație_note_subsol'] or ''
args['densitate'] = origArgs['densitate']
args['populatie_note'] = origArgs['populatie_note'] or origArgs['populație_note']
args['fus_orar'] = origArgs['fus_orar'] or origArgs['timezone'] or wikidata.findOneValue('P421', nil)
args['utc_offset'] = origArgs['utc_offset']
args['fus_orar_DST'] = origArgs['fus_orar_DST'] or origArgs['timezone_DST']
args['utc_offset_DST'] = origArgs['utc_offset_DST']
args['cod_postal'] = origArgs['codpoștal'] or origArgs['codpostal'] or origArgs['cod_poștal'] or origArgs['cod_postal'] or origArgs['postal_code'] or wikidata.findOneValue('P281', nil)
args['tip_cod_postal'] = mw.text.trim(origArgs['tip_cod_postal'] or '[[Cod poștal]]')
args['prefix_tel'] = origArgs['prefix_telefonic'] or origArgs['area_code'] or wikidata.findOneValue('P473', nil)
args['cod'] = origArgs['cod']
args['tip_cod'] = mw.text.trim(origArgs['tip_cod'] or '[[Cod]]')
args['note'] = origArgs['note']
args['webaddr'] = origArgs['sit-adresă'] or origArgs['web']
args['webname'] = origArgs['sit-nume']
if args['webaddr'] and args['webnume'] then
args['website'] = '[' .. args['webaddr'] .. ' ' .. args['webnume'] .. ']'
elseif args['webaddr'] then
args['website'] = args['webaddr']
else
args['website'] = origArgs['website'] or wikidata.findOneValueNoRef('P856', nil)
end
args['infodoc'] = origArgs['infodoc'] or 'Infocaseta Așezare'
if args['harti'][1] == nil then
local wikidataMap = wikidata.findOneValueNoRef('P242', nil)
if not isNilOrEmpty(wikidataMap) then
args['harti'][1] = {}
args['harti'][1]['harta'] = wikidataMap
end
end
if args['harti'][1] ~= nil and isNilOrEmpty(args['harti'][1]['descriere']) then
args['harti'][1]['descriere'] = 'Poziția ' .. args['tip_asezare_genitiv'] .. ' ' .. args['nume']
end
if args['harti'][1] ~= nil and isNilOrEmpty(args['harti'][1]['size']) then
args['harti'][1]['size'] = '290x290px'
end
if args['subdiviziuni'][1] == nil or isNilOrEmpty(args['subdiviziuni'][1]['nume']) then
local wikidataCountry = wikidata.findOneValueNoRef('P17', nil)
if not isNilOrEmpty(wikidataCountry) then
if args['subdiviziuni'][1] == nil then args['subdiviziuni'][1] = {} end
args['subdiviziuni'][1]['nume'] = wikidataCountry
args['subdiviziuni'][1]['tip'] = '[[Țările lumii|Țară]]'
end
end
if args['subdiviziuni'][2] == nil or isNilOrEmpty(args['subdiviziuni'][2]['nume']) then
local subdivs = wikidata.getEntityIdsList(nil, 'P131')
if subdivs and #subdivs > 0 then
for subdivIdx = 1,#subdivs do
if args['subdiviziuni'][1 + subdivIdx] == nil then args['subdiviziuni'][1 + subdivIdx] = {} end
args['subdiviziuni'][1 + subdivIdx]['nume'] = wikidata.findLinkToItem(subdivs[subdivIdx])
args['subdiviziuni'][1 + subdivIdx]['tip'] = wikidata.findOneValueNoRef('P31', mw.wikibase.getEntity('Q' .. subdivs[subdivIdx])) or ' '
end
end
end
return _generate()
end
return p