Module:SK
Get statistic data about Slovak municipalities.
About
Get statistic data about Slovak municipalities.
This template is a sibling of Template:SK.
This template use the data from CC-BY database.
Original first author: Dušan Kreheľ.
Reference implementation is on hrwiki.
Parameters
First paramer
| Meaning | Parameter | Code | Code output |
|---|---|---|---|
| Population | p | {{#invoke:SK|sk|p|SK0417524395}} | 2687 |
| Population (source URL) |
P | {{#invoke:SK|sk|P|SK0417524395}}<br>{{#invoke:SK|sk|P|SK}}<br>{{#invoke:SK|sk|P|SK0106}} | https://datacube.statistics.sk/#!/view/en/vbd_dem/om7101rr/v_om7101rr_00_00_00_en https://datacube.statistics.sk/#!/view/en/vbd_dem/om7102rr/v_om7102rr_00_00_00_en https://datacube.statistics.sk/#!/view/en/vbd_dem/om7102rr/v_om7102rr_00_00_00_en |
| Population (ex. for table) |
p | {{#invoke:SK|sk|o|SK0417524395}} | 2,687 |
| Population Id | r | {{#invoke:SK|sk|r|SK0417524395}} | om7101rr |
| Area | a | {{#invoke:SK|sk|a|SK0417524395}} | 11.24 |
| Area (source URL) |
A | {{#invoke:SK|sk|A|SK0417524395}} | https://datacube.statistics.sk/#!/view/en/vbd_dem/om7014rr/v_om7014rr_00_00_00_en |
| Area Id | b | {{#invoke:SK|sk|b|SK0417524395}} | om7014rr |
| Population density (as population/area) |
d | {{#invoke:SK|sk|d}} | 239.03 |
| Data year | y | {{#invoke:SK|sk|y}} | |
| Last acces | l | {{#invoke:SK|sk|l}} | |
| Last update | u | {{#invoke:SK|sk|u}} | |
| Is slovak municipality (none support %i) |
i | {{#invoke:SK|sk|i|SK0417524395}} | 1 |
| Get NUTS/LAU code (none support %e) |
e |
You can used both the format string like printf() with parameters from table.
| Code: | {{#invoke:SK|sk|%p (source: %P)|SK0417524395}} |
| Output: | 2687 (source: https://datacube.statistics.sk/#!/view/en/vbd_dem/om7101rr/v_om7101rr_00_00_00_en |
Second parameter
It is a STUN or LAU code for place sup-place (ex. SK0417524395). If none, then code is automatic based on the actual page.
local sk = {}
sk.error_place="Unknown place."
sk.error_code="Unknown password."
sk.decimal_separator="."
sk.thousands_separator=","
sk.percentage_delimer=""
sk.percent_first_value=true
sk.year_suffix=""
sk.minus="−"
sk.open_th="<th>"
sk.open_td="<td>"
sk.none_value="–"
sk.religion_table_language="en"
sk.population_notice_title="Note on population"
sk.population_notice="The difference between the population numbers above and in the census (here and below) is that the population numbers above are mostly made up of permanent residents, etc.; and the census should indicate the place where people actually mainly live.<br>For example, a student is a citizen of a village because he has permanent residence there (he lived there as a child and has parents), but most of the time he studies at a university in the city."
sk.religion_table_percent_plus=1
sk.table_class="wikitable sortable"
sk.religion_header='<tr><th>Religion</th><th>Number</th><th>Fraction</th></tr>'
sk.etno_header='<tr><th>Ethnicity</th><th>Number</th><th>Fraction</th></tr>'
sk.religion_caption_ref="{{cite web| title=Population - Basic results| publisher=Statistical Office of the Slovak republic|url=LINK| accessdate=2025-11-03|website= www.scitanie.sk}}"
sk.religion_caption='Census YEAR (1+ %)REFERENCE'
sk.etno_caption='Census YEAR (1+ %)REFERENCES'
sk.etno_relig_interval_notice="Sum of %s–%s."
sk.etno_relig_text=true
sk.etno_relig_text_content_etno="In year %s was %s people by ethnicity %s."
sk.etno_relig_text_content_relig="In year %s was %s people by religion %s."
sk.etno_relig_text_item_etno="DELIMER NUMBER as NAME"
sk.etno_relig_text_item_relig="DELIMER NUMBER from NAME"
sk.etno_relig_text_delimer=", "
sk.etno_relig_text_delimer_end=" and "
sk.etno_relig_links_table=true
sk.etno_relig_links_text=true
function sk.etno_table(args)
local all_translates
local caption
local caption_notice
local caption_ref_first
local caption_ref_second
local dataset
local dataset_group
local etno_relig_content
local etno_relig_item_head
local etno_relig_item_content
local etno_relig_items
local etno_relig_items_content
local item_count
local label_raw
local lau=args.args[1]
local lau_length
local lua_length
local max_value
local oend
local ostart
local percent
local place
local place_values
local prefix_key
local ref_url
local ref_url_second
local select_prefix
local translate
local translate_key
local translate_key_term
local translates
local translates_links
local type_percent
local wiki
local year
if lau == "" then
lau=sk.get_nuts_lua()
end
-- Select translates --
all_translates=mw.ext.data.get("Translates of Population ethnicities of Slovak municipalities.tab")
translates={}
translates_links={}
select_prefix=sk.religion_table_language..":"
for i,items in ipairs(all_translates["data"]) do
prefix_key=string.sub(items[1], 1,3);
if prefix_key == select_prefix then
translates[items[1]]=items[2]
translates_links[items[1]]=items[3]
end
end
-- Datasets
lau_length=string.len(lau)
if lau_length == 12 then
dataset_group=tonumber(string.sub(lau,4,4));
if not dataset_group then
return ""
end
if dataset_group < 3 then
dataset=mw.ext.data.get("Population ethnicities of Slovak municipalities (SK01 and SK02; last census).tab")
else
if dataset_group == 3 then
dataset=mw.ext.data.get("Population ethnicities of Slovak municipalities (SK03, last census).tab")
else
dataset=mw.ext.data.get("Population ethnicities of Slovak municipalities (SK04, last census).tab")
end
end
else
dataset=mw.ext.data.get("Population ethnicities of Slovak supmunicipalities (last census).tab")
end
-- Place value statistic
place_values=false
for i,items in ipairs(dataset["data"]) do
if items[1] == lau then
place_values=items
break
end
end
if place_values == false then
return ""
end
-- Place statistic
place={}
place['values']={}
place['percents']={}
for i,items in ipairs(dataset["schema"]["fields"]) do
if i > 2 then
label_raw=items["title"]
if not label_raw then
label_raw=items["title"]["sk"]
end
type_percent=false
translate_key=sk.religion_table_language..":"..label_raw
translate_key_term=translate_key
ostart,oend=string.find(translate_key_term, " %(%%%)")
if ostart then
type_percent=true
translate_key_term=string.sub(translate_key_term, 1, ostart-1)
end
--translate=translates[translate_key_term]
translate=string.sub(translate_key_term, 4)
if translate then
if type_percent then
place['percents'][translate]=place_values[i]
else
table.insert(place['values'],{tostring(translate),place_values[i]})
end
end
end
end
-- Sort by value
table.sort(place['values'], function (v, w) if v[2] == w[2] then return v[1]>w[1] end return v[2]>w[2] end)
-- Table construction
ostart,oend=string.find(dataset["sources"], "the year ")
year=string.sub(dataset["sources"], ostart+9, ostart+12);
lau_length=string.len(lau)
if lau == "SK0422_0425" or lau == "SK_CAP" then
if lau == "SK_CAP" then
ref_url="https://www.scitanie.sk/en/population/basic-results/structure-of-population-by-ethnicity/KR/SK010/OK"
ref_url_second="https://www.scitanie.sk/en/population/basic-results/structure-of-population-by-another-ethnicity/KR/SK010/OK"
else
ref_url="https://www.scitanie.sk/en/population/basic-results/structure-of-population-by-ethnicity/KR/SK042/OK"
ref_url_second="https://www.scitanie.sk/en/population/basic-results/structure-of-population-by-another-ethnicity/KR/SK042/OK"
end
else
if(lau_length == 3) then
ref_url="https://www.scitanie.sk/en/population/basic-results/structure-of-population-by-ethnicity/SR/SK0/SR"
ref_url_second="https://www.scitanie.sk/en/population/basic-results/structure-of-population-by-another-ethnicity/SR/SK0/SR"
else
if(lau_length == 5) then
ref_url="https://www.scitanie.sk/en/population/basic-results/structure-of-population-by-ethnicity/KR/"..lau.."/KR"
ref_url_second="https://www.scitanie.sk/en/population/basic-results/structure-of-population-by-another-ethnicity/KR/"..lau.."/KR"
else
if(lau_length == 6) then
ref_url="https://www.scitanie.sk/en/population/basic-results/structure-of-population-by-ethnicity/OK/"..lau.."/OK"
ref_url_second="https://www.scitanie.sk/en/population/basic-results/structure-of-population-by-another-ethnicity/OK/"..lau.."/OK"
else
if(lau_length == 12) then
ref_url="https://www.scitanie.sk/en/population/basic-results/structure-of-population-by-ethnicity/OB/"..lau.."/OB"
ref_url_second="https://www.scitanie.sk/en/population/basic-results/structure-of-population-by-another-ethnicity/OB/"..lau.."/OB"
end
end
end
end
end
caption_ref_first=string.gsub(sk.religion_caption_ref, "LINK", ref_url)
caption_ref_first=args:callParserFunction("#tag", "ref", caption_ref_first)
caption_ref_second=string.gsub(sk.religion_caption_ref, "LINK", ref_url_second)
caption_ref_second=args:callParserFunction("#tag", "ref", caption_ref_second)
caption_notice=""
if lau == "SK0422_0425" or lau == "SK_CAP" then
if lau == "SK0422_0425" then
caption_notice=string.format(sk.etno_relig_interval_notice, "SK0422", "SK0425")
else
caption_notice=string.format(sk.etno_relig_interval_notice, "SK0101", "SK0105")
end
caption_notice=args:callParserFunction("#tag", "ref", caption_notice)
end
caption=string.gsub(sk.etno_caption, "REFERENCES", caption_ref_first..caption_ref_second..caption_notice)
caption=string.gsub(caption, "YEAR", year)
wiki='<table class="'..sk.table_class..'"><caption>'..caption..'</caption>'..sk.etno_header
max_value=-1
item_count=0;
for i, v in ipairs(place['values']) do
if v[2] > max_value then
max_value=v[2]
end
if v[2] ~= 0 then
item_count=item_count+1
end
percent=place['percents'][v[1]]
if not percent then
percent=0
end
if percent >= sk.religion_table_percent_plus then
if percent then
percent=sk.localised_number(tostring(percent))
else
percent=""
end
if sk.percent_first_value then
percent=percent..sk.percentage_delimer.."%"
else
percent="%"..sk.percentage_delimer..percent
end
if sk.etno_relig_links_table then
translate=translates_links[sk.religion_table_language..":"..v[1]]
if translate == "" then
translate=translates[sk.religion_table_language..":"..v[1]]
end
else
translate=translates[sk.religion_table_language..":"..v[1]]
end
wiki=wiki.."<tr><td>"..translate.."</td><td>"..sk.localised_number(tostring(v[2])).."</td><td>"..percent.."</td></tr>"
end
end
item_count=item_count-1 -- suma out
translate=translates[sk.religion_table_language..":Spolu"]
wiki=wiki.."<tr><td>"..translate.."</td><td>"..sk.localised_number(max_value).."</td></tr></table>"
-- Etno/relig text
if sk.etno_relig_text == false then
wiki=wiki.."\n:<small><table role=\"presentation\" class=\"wikitable mw-collapsible mw-collapsed\"><tr><th style=\"color:grey !important\">"..sk.population_notice_title.."</th></tr><tr><td>"..sk.population_notice.."</td></tr></table></small>\n\n"
do return wiki end
end
etno_relig_items="";
for i, v in ipairs(place['values']) do -- v = {place, count}
if v[2] > 0 and i > 1 then -- first is suma of all that it's skeeping
if i > 2 then
item_count=item_count-1
if item_count == 1 then
etno_relig_item_head=sk.etno_relig_text_delimer_end
else
etno_relig_item_head=sk.etno_relig_text_delimer
end
else
etno_relig_item_head=""
end
etno_relig_item_content=sk.etno_relig_text_item_etno
if sk.etno_relig_links_text then
translate=translates_links[sk.religion_table_language..":"..v[1]]
if translate == "" then
translate=translates[sk.religion_table_language..":"..v[1]]
end
else
translate=translates[sk.religion_table_language..":"..v[1]]
end
etno_relig_item_content=string.gsub(etno_relig_item_content, "DELIMER", etno_relig_item_head)
etno_relig_item_content=string.gsub(etno_relig_item_content, "NUMBER", sk.localised_number(tostring(v[2])))
etno_relig_item_content=string.gsub(etno_relig_item_content, "NAME", translate)
etno_relig_items=etno_relig_items..etno_relig_item_content
end
end
wiki=wiki..string.format(sk.etno_relig_text_content_etno, year, sk.localised_number(max_value),etno_relig_items)
wiki=wiki.."\n:<small><table role=\"presentation\" class=\"wikitable mw-collapsible mw-collapsed\"><tr><th style=\"color:grey !important\">"..sk.population_notice_title.."</th></tr><tr><td>"..sk.population_notice.."</td></tr></table></small>\n\n"
return wiki
end
function sk.religion_table(args)
local all_translates
local caption
local caption_notice
local caption_ref
local caption_ref_first
local dataset
local dataset_group
local item_count
local label_raw
local lau=args.args[1]
local lau_length
local max_value
local oend
local ostart
local percent
local place
local place_values
local prefix_key
local ref_url
local ref_url_second
local select_prefix
local translate
local translate_key
local translate_key_term
local translates
local translates_links
local type_percent
local wiki
local year
if lau == "" then
lau=sk.get_nuts_lua()
end
-- Select translates --
all_translates=mw.ext.data.get("Translates of Religious belief of Slovak municipalities.tab")
translates={}
translates_links={}
select_prefix=sk.religion_table_language..":"
for i,items in ipairs(all_translates["data"]) do
prefix_key=string.sub(items[1], 1,3);
if prefix_key == select_prefix then
translates[items[1]]=items[2]
translates_links[items[1]]=items[3]
end
end
-- Datasets
lau_length=string.len(lau)
if lau_length == 12 then
dataset_group=string.sub(lau,4,4);
if not dataset_group then
return ""
end
if tonumber(dataset_group) > 2 then
dataset=mw.ext.data.get("Religious belief of Slovak municipalities (SK03 and SK04; last census).tab")
else
dataset=mw.ext.data.get("Religious belief of Slovak municipalities (SK01 and SK02; last census).tab")
end
else
dataset=mw.ext.data.get("Religious belief of Slovak supmunicipalities (last census).tab")
end
-- Place value statistic
place_values=false
for i,items in ipairs(dataset["data"]) do
if items[1] == lau then
place_values=items
break
end
end
if place_values == false then
return "hodnoty miest"
end
-- Place statistic
place={}
place['values']={}
place['percents']={}
for i,items in ipairs(dataset["schema"]["fields"]) do
if i > 2 then
label_raw=items["title"]
if not label_raw then
label_raw=items["title"]["sk"]
end
type_percent=false
translate_key=sk.religion_table_language..":"..label_raw
translate_key_term=translate_key
ostart,oend=string.find(translate_key_term, " %(%%%)")
if ostart then
type_percent=true
translate_key_term=string.sub(translate_key_term, 1, ostart-1)
end
translate_key_term=string.gsub(translate_key_term, " %(abs%.%)", "")
--translate=translates[translate_key_term]
translate=string.sub(translate_key_term, 4)
if translate then
if type_percent then
place['percents'][translate]=place_values[i]
else
table.insert(place['values'],{translate,place_values[i]})
end
end
end
end
-- Sort by value
table.sort(place['values'], function (v, w) if v[2] == w[2] then return v[1]>w[1] end return v[2]>w[2] end)
-- Table construction
ostart,oend=string.find(dataset["sources"], "the year ")
year=string.sub(dataset["sources"], ostart+9, ostart+12);
lau_length=string.len(lau)
if lau == "SK0422_0425" or lau == "SK_CAP" then
if lau == "SK_CAP" then
ref_url="https://www.scitanie.sk/en/population/basic-results/structure-of-population-by-religious-belief/KR/SK010/OK"
ref_url_second="https://www.scitanie.sk/en/population/basic-results/structure-of-population-by-religious-belief/KR/SK010/OK"
else
ref_url="https://www.scitanie.sk/en/population/basic-results/structure-of-population-by-religious-belief/KR/SK042/OK"
ref_url_second="https://www.scitanie.sk/en/population/basic-results/structure-of-population-by-religious-belief/KR/SK042/OK"
end
else
if(lau_length == 3) then
ref_url="https://www.scitanie.sk/en/population/basic-results/structure-of-population-by-religious-belief/SR/SK0/SR"
else
if(lau_length == 5) then
ref_url="https://www.scitanie.sk/en/population/basic-results/structure-of-population-by-religious-belief/KR/"..lau.."/KR"
else
if(lau_length == 6) then
ref_url="https://www.scitanie.sk/en/population/basic-results/structure-of-population-by-religious-belief/OK/"..lau.."/OK"
else
if(lau_length == 12) then
ref_url="https://www.scitanie.sk/en/population/basic-results/structure-of-population-by-religious-belief/OB/"..lau.."/OB"
end
end
end
end
end
caption_ref_first=string.gsub(sk.religion_caption_ref, "LINK", ref_url)
caption_ref=args:callParserFunction("#tag", "ref", caption_ref_first)
caption=string.gsub(sk.religion_caption, "REFERENCE", caption_ref)
caption=string.gsub(caption, "YEAR", year)
caption_notice=""
if lau == "SK0422_0425" or lau == "SK_CAP" then
if lau == "SK0422_0425" then
caption_notice=string.format(sk.etno_relig_interval_notice, "SK0422", "SK0425")
else
caption_notice=string.format(sk.etno_relig_interval_notice, "SK0101", "SK0105")
end
caption_notice=args:callParserFunction("#tag", "ref", caption_notice)
end
wiki='<table class="'..sk.table_class..'"><caption>'..caption..caption_notice..'</caption>'..sk.religion_header
max_value=-1
item_count=0;
for i, v in ipairs(place['values']) do
if v[2] > max_value then
max_value=v[2]
end
if v[2] ~= 0 then
item_count=item_count+1
end
percent=place['percents'][v[1]]
if not percent then
percent=0
end
if percent >= sk.religion_table_percent_plus then
if percent then
percent=sk.localised_number(tostring(percent))
else
percent=""
end
if sk.percent_first_value then
percent=percent..sk.percentage_delimer.."%"
else
percent="%"..sk.percentage_delimer..percent
end
if sk.etno_relig_links_table then
translate=translates_links[sk.religion_table_language..":"..v[1]]
if translate == "" then
translate=translates[sk.religion_table_language..":"..v[1]]
end
else
translate=translates[sk.religion_table_language..":"..v[1]]
end
wiki=wiki.."<tr><td>"..translate.."</td><td>"..sk.localised_number(tostring(v[2])).."</td><td>"..percent.."</td></tr>"
end
end
item_count=item_count-1 -- suma out
translate=translates[sk.religion_table_language..":Spolu"]
wiki=wiki.."<tr><td>"..translate.."</td><td>"..sk.localised_number(max_value).."</td></tr></table>"
-- Etno/relig text
if sk.etno_relig_text == false then
do return wiki end
end
etno_relig_items="";
for i, v in ipairs(place['values']) do -- v = {place, count}
if v[2] > 0 and i > 1 then -- first is suma of all that it's skeeping
if i > 2 then
item_count=item_count-1
if item_count == 1 then
etno_relig_item_head=sk.etno_relig_text_delimer_end
else
etno_relig_item_head=sk.etno_relig_text_delimer
end
else
etno_relig_item_head=""
end
etno_relig_item_content=sk.etno_relig_text_item_relig
translate=translates[sk.religion_table_language..":m:"..v[1]]
if not translate then
if sk.etno_relig_links_text then
translate=translates_links[sk.religion_table_language..":"..v[1]]
if translate == "" then
translate=translates[sk.religion_table_language..":"..v[1]]
end
else
translate=translates[sk.religion_table_language..":"..v[1]]
end
end
etno_relig_item_content=string.gsub(etno_relig_item_content, "DELIMER", etno_relig_item_head)
etno_relig_item_content=string.gsub(etno_relig_item_content, "NUMBER", sk.localised_number(tostring(v[2])))
etno_relig_item_content=string.gsub(etno_relig_item_content, "NAME", translate)
etno_relig_items=etno_relig_items..etno_relig_item_content
end
end
wiki=wiki..string.format(sk.etno_relig_text_content_relig, year, sk.localised_number(max_value),etno_relig_items)
return wiki
end
function sk.get_nuts_lua()
local place_info
local nuts_lau
code=mw.wikibase.getEntityIdForCurrentPage()
if code == nil then
return nill
end
-- Source of 2 codes: https://commons.wikimedia.org/w/index.php?title=Data:Statistics_of_Slovak_supmunicipalities.tab&oldid=1001162094
if code == "Q1780" then return "SK_CAP" end
if code == "Q25409" then return "SK0422_0425" end
if code == "Q214" then return "SK0" end
if code == "SK" then return "SK0" end
while 1 do
place_info=mw.wikibase.getBestStatements(code,"P605")
if place_info[1] == nil then
break
end
nuts_lau=place_info[1]["mainsnak"]['datavalue']['value']
if nuts_lau == nil then
else
return nuts_lau
end
break
end
while 1 do
place_info=mw.wikibase.getBestStatements(code,"P782")
if place_info[1] == nil then
break
end
nuts_lau=place_info[1]["mainsnak"]['datavalue']['value']
if nuts_lau == nil then
else
return nuts_lau
end
break
end
return nil
end
function sk.is_slovak(args)
local nuts_lau=args.args[1]
if nuts_lau == nil or nuts_lau == "" then
nuts_lau=sk.get_nuts_lua()
if nuts_lau == nill then
return ""
end
end
if string.sub(nuts_lau, 1, 2) == "SK" then
return "1"
end
return ""
end
function sk.localised_number(number)
local number2
local offset
local offset_end
local first
local second
local first_length
local Output
number2=tostring(number)
offset, offset_end=string.find(number2, "%.")
if offset == nill then
first=number
second=""
else
first=string.sub(number2, 1, offset-1)
second=sk.decimal_separator..string.sub(number2, offset+1, offset+2)
end
if first == nill then
first=""
end
first_length=string.len(first)
if(first_length <= 4) then
return first..second
end
Output=string.sub(first, -3, -1)
if(first_length > 3) then
Output=string.sub(first, -6, -4)..sk.thousands_separator..Output
end
if(first_length > 6) then
Output=string.sub(first, -9, -7)..sk.thousands_separator..Output
end
if(first_length > 9) then
Output=string.sub(first, -12, -10)..sk.thousands_separator..Output
end
if second == nil then
return Output
else
return Output..second
end
end
function sk.localised_number_strict(number) -- NNNN is as N.NNNN
local number2
local offset
local offset_end
local first
local second
local first_length
local Output
number2=tostring(number)
offset, offset_end=string.find(number2, "%.")
if offset == nill then
first=number
second=""
else
first=string.sub(number2, 1, offset-1)
second=sk.decimal_separator..string.sub(number2, offset+1, offset+2)
end
first_length=string.len(first)
if(first_length <= 3) then
return first..second
end
Output=string.sub(first, -3, -1)
if(first_length > 3) then
Output=string.sub(first, -6, -4)..sk.thousands_separator..Output
end
if(first_length > 6) then
Output=string.sub(first, -9, -7)..sk.thousands_separator..Output
end
if(first_length > 9) then
Output=string.sub(first, -12, -10)..sk.thousands_separator..Output
end
if second == nil then
return Output
else
return Output..second
end
end
function sk.delta_progress(count_a, count_b) -- count_a < count_b
if count_a == 0 or count_b == 0 then
return "–"
end
local value
value=tostring(count_b/(count_a/100)-100)
if string.sub(value, 1, 1) == "-" then
value_string=string.sub(value, 2)
value="-"..sk.localised_number(value_string)..sk.percentage_delimer.."%"
else
value="+"..sk.localised_number(value)..sk.percentage_delimer.."%"
end
return value
end
function sk.get_line_data(data, nuts_lau)
index=1
while 1 do
item=data.data[index]
if item == nil then
break
end
if item[1] == nuts_lau then
break
end
index=index+1
end
if item == nil then
error(sk.error_place)
end
return item
end
function sk.constant_code(code)
if code == nil then
return nil
end
if string.len(code) == 2 then
-- Source of 2 codes: https://commons.wikimedia.org/w/index.php?title=Data:Statistics_of_Slovak_supmunicipalities.tab&oldid=1001162094
if code == "BA" then return "SK_CAP" end
if code == "KE" then return "SK0422_0425" end
if code == "SK" then return "SK0" end
end
return code
end
-- Reference data are for population
function sk.population_table(args)
local style=args.args[1] -- format
local nuts_lau=args.args[2] -- nuts / LAU, default: automatic
local count_years
local count_years_stop
local data
local head
local index
local item
local i_start
local i_end
local text
local one_step_year
local one_step_values
local value
local value_string
local year
local years={}
nuts_lau=sk.constant_code(nuts_lau)
-- get NUTS/LUA for page
if nuts_lau == nil or nuts_lau == "" then
nuts_lau=sk.get_nuts_lua()
if nuts_lau == nill then
return ""
end
end
-- select date line
if string.len(nuts_lau) == 12 then
data=mw.ext.data.get("Population statistic of Slovak municipalities (some years).tab")
else
data=mw.ext.data.get("Population statistic of Slovak supmunicipalities (some years).tab")
end
-- get years
head=""
text=data.sources
i_start, i_end=string.find(text, "years: ")
offset=i_start+7
count_years=0
while 1 do
year=string.sub(text, offset, offset+3)
count_years=count_years+1
years[count_years]=year
if string.sub(text, offset+4, offset+4) == " " then
offset=offset+7
break
end
offset=offset+6
end
year=string.sub(text, offset, offset+3)
count_years=count_years+1
years[count_years]=year
count_years_stop=count_years+1
head=""
for i=2,count_years_stop do
year_index=i-1
while 1 do
if year_index+1 < count_years_stop then
if (years[year_index]-years[year_index+1]) == -1 then
break
end
end
head=head.."<th>"..years[year_index]..sk.year_suffix.."</th>"
break
end
end
if style == "h" then
return head
end
-- values
item=sk.get_line_data(data, nuts_lau)
if item == nil then
error(sk.error_place)
end
-- get values
content=""
if style == "d" or style == "Y" or style == "V" or style == "P" then
one_step_year=""
one_step_values=""
one_step_progress=""
content="<td></td>\n"
for i=3,count_years_stop do
year_index=i-1
while 1 do
-- check the first item with delta = 1
if year_index+1 < count_years_stop then
if (years[year_index]-years[year_index+1]) == -1 then
one_step_year=one_step_year.."<th>"..years[year_index]..sk.year_suffix.."</th>"
one_step_values=one_step_values.."<td>"..sk.localised_number(item[i]).."</td>"
one_step_progress=one_step_progress.."<td></td>"
break
end
end
-- check the second item with delta = 1
if year_index > 1 then
if (years[year_index]-years[year_index-1]) == 1 then
one_step_year=one_step_year.."<th>"..years[year_index]..sk.year_suffix.."</th>"
one_step_values=one_step_values.."<td>"..sk.localised_number(item[i]).."</td>"
one_step_progress=one_step_progress.."<td>"..sk.delta_progress(item[i-1], item[i]).."</td>"
content=content.."<td>"..sk.delta_progress(item[i-2], item[i]).."</td>\n"
break
end
end
content=content.."<td>"..sk.delta_progress(item[i-1], item[i]).."</td>\n"
break
end
end
if style == "Y" then
return one_step_year
end
if style == "V" then
return one_step_values
end
if style == "P" then
return one_step_progress
end
return content
end
content=""
for i=2,count_years_stop do
year_index=i-1
while 1 do
if year_index+1 < count_years_stop then
if (years[year_index]-years[year_index+1]) == -1 then
break
end
end
content=content.."<td>"..sk.localised_number(item[i]).."</td>"
break
end
end
return content
end
function sk.sk(args)
local style=args.args[1] -- format
local nuts_lau=args.args[2] -- nuts / LAU, default: automatic
local code
local data
local index
local info
local item
local i_start
local i_start2
local i_end
local last_acces
local last_update
local place_info
local url_population
local url_area
local year
-- select date line
nuts_lau=sk.constant_code(nuts_lau)
if nuts_lau == nil or nuts_lau == "" then
nuts_lau=sk.get_nuts_lua()
if nuts_lau == nill then
return ""
end
end
if style == "i" then
local parameters={args={nuts_lau}}
return sk.is_slovak(parameters)
end
if style == "e" then
i_start, i_end=string.find(nuts_lau, "_")
if i_start == nil then
return nuts_lau
else
return ""
end
end
-- select date line
if string.len(nuts_lau) == 12 then
data=mw.ext.data.get("Statistics of Slovak municipalities.tab")
else
data=mw.ext.data.get("Statistics of Slovak supmunicipalities.tab")
end
-- get NUTS/LUA for page
if style == "l" or style == "u" or style == "y" then
else
item=sk.get_line_data(data, nuts_lau)
if item == nil then
error(sk.error_place)
end
end
-- year
i_start, i_end=string.find(data.sources, "year: ")
year=string.sub(data.sources, i_start+6, i_start+9)
-- last acces
i_start, i_end=string.find(data.sources, "acces: ")
if i_start == nil then
i_start, i_end=string.find(data.sources, "access: ")
last_acces=string.sub(data.sources, i_start+8, i_start+17)
else
last_acces=string.sub(data.sources, i_start+7, i_start+16)
end
-- last update
i_start, i_end=string.find(data.sources, "update: ")
last_update=string.sub(data.sources, i_start+8, i_start+17)
-- url_population
i_start, i_end=string.find(data.sources, "http")
i_start2, i_end=string.find(string.sub(data.sources, i_start), " ")
i_start2=i_start+i_start2-1
url_population=string.sub(data.sources, i_start, i_start2)
-- url_area
i_start, i_end=string.find(data.sources, "http")
info=string.sub(data.sources, i_start+1)
i_start, i_end=string.find(info, "http")
i_start2, i_end=string.find(string.sub(info, i_start), " ")
i_start2=i_start+i_start2-1
url_area=string.sub(info, i_start, i_start2)
-- population_id
i_start, i_end=string.find(url_population, "/vbd_dem/")
info=string.sub(url_population, i_start+9)
i_start, i_end=string.find(info, "/")
population_id=string.sub(info, 1, i_start-1)
-- area_id
i_start, i_end=string.find(url_area, "/vbd_dem/")
info=string.sub(url_area, i_start+9)
i_start, i_end=string.find(info, "/")
area_id=string.sub(info, 1, i_start-1)
-- render
i_start, i_end = string.find(style, "%%")
if i_start == nil then
if style == "p" then return sk.localised_number(item[2]) end
if style == "P" then return url_population end
if style == "o" then return sk.localised_number_strict(item[2]) end
if style == "a" then return sk.localised_number(item[3]) end
if style == "A" then return url_area end
if style == "d" then return sk.localised_number(item[2]/item[3]) end
if style == "y" then return year end
if style == "l" then return last_acces end
if style == "u" then return last_update end
if style == "r" then return population_id end
if style == "b" then return area_id end
error(sk.error_code)
else
Output=style
Output=string.gsub(Output, "%%p", sk.localised_number(item[2]))
Output=string.gsub(Output, "%%P", url_population)
Output=string.gsub(Output, "%%a", sk.localised_number(item[3]))
Output=string.gsub(Output, "%%o", sk.localised_number_strict(item[2]))
Output=string.gsub(Output, "%%A", url_area)
Output=string.gsub(Output, "%%d", sk.localised_number(item[2]/item[3]))
Output=string.gsub(Output, "%%y", year)
Output=string.gsub(Output, "%%l", last_acces)
Output=string.gsub(Output, "%%u", last_update)
Output=string.gsub(Output, "%%r", population_id)
Output=string.gsub(Output, "%%b", area_id)
return Output
end
end
return sk
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.