Модуль:AutoDescriptionLocality
- Страница документации: Модуль:AutoDescriptionLocality/doc.
Подмодуль модуля AutoDescription для заполнения населённых пунктов.
Инструкция по улучшению функционала модуля здесь.
Ошибки и предложения добавляйте на страницу обсуждения.
Использует
- Модуль:Declension, для ....
- Модуль:Langs, для ....
- Модуль:Math/tonumber, для ....
- Модуль:SerializeTable, для ....
--[[
------------------------------------------
-- AutoDescriptionLocality
-- Модуль для заполнения населённых пунктов.
------------------------------------------
--]]
local Declension = require("Module:Declension")
local Langs = require("Module:Langs")
local MathTonumber = require("Module:Math/tonumber")
local SerializeTable = require("Module:SerializeTable")
local AutoDescriptionLocality={}
-- Нам необходимо сформировать и вернуть три переменных
local description = "" -- уточнение (то, что в скобочках после имени, например, на языке оригинала, годы жизни и т.п.)
local details = "" -- строка описания
local categories = "[[Категория:Населённые пункты по алфавиту]]" -- категории
-- Промежуточный масив сущностей, в который помещаются результаты парсинга перед формированием описания
local entitiesArray = {typeOf = "", country = "", unitOfTime = "", inception = "",
centuary = "", headOf="", locatedITATE = "", langPr = "", nativeL = "",
population="", populationT = "", area = "", dimension = "", sisterTowns = "",
P421 = "", P131 = "", P6 = "", P1082 = "", P2046 = "", P190 = "", P1705 = ""}
-- Точка входа
function AutoDescriptionLocality.launch(entity)
AutoDescriptionLocality.parsing(entity) -- парсим карточку викиданных
AutoDescriptionLocality.forming() -- формируем переменные
return details, description, categories
end
-- Последовательно проходим свойства в карточке викиданных, для формирования массива сущностей entitiesArray
function AutoDescriptionLocality.parsing(entity)
AutoDescriptionLocality.parseP17(entity) -- государство
AutoDescriptionLocality.parseP31(entity) -- это частный случай понятия
entitiesArray["P421"] = AutoDescriptionLocality.parseP421(entity) -- часовой пояс
AutoDescriptionLocality.parseP571(entity) -- дата основания/создания/возникновения
entitiesArray["P131"] = AutoDescriptionLocality.parseP131(entity) -- административно-территориальная единица
entitiesArray["P6"] = AutoDescriptionLocality.parseP6(entity) -- глава правительства
entitiesArray["P1082"] = AutoDescriptionLocality.parseP1082(entity) -- численность населения
entitiesArray["P2046"] = AutoDescriptionLocality.parseP2046(entity) -- площадь
entitiesArray["P190"] = AutoDescriptionLocality.parseP190(entity) -- город-побратим
entitiesArray["P1705"] = AutoDescriptionLocality.parseP1705(entity) -- название на языке оригинала
end
function AutoDescriptionLocality.forming()
if((entitiesArray.langPr ~= "") and entitiesArray.langPr ~= "ru") then details = details .. "(" .. Langs.launch(entitiesArray.langPr, entitiesArray.nativeL) .. ")" end
if (entitiesArray.typeOf ~= "" ) then
do
description = description .. "[[" .. entitiesArray.typeOf .. "]]"
if(entitiesArray.country == "") then description = description .. "." end
end
end
if (entitiesArray.country ~= "" ) then
do
if(Declension.declineWord(entitiesArray.country, 6) ~= "Logical error Declension.declineWord(arg): word not found") then description = description .. " в [[" .. entitiesArray.country .. "|" .. Declension.declineWord(entitiesArray.country, 6) .. "]]."
else description = description .. "."
end
end
end
if(entitiesArray.unitOfTime == "век") then
do
if( (entitiesArray.typeOf == "город") or (entitiesArray.typeOf == "посёлок") or (entitiesArray.typeOf == "посёлок городского типа") or (entitiesArray.typeOf == "муниципалитет") )
then description = description .. " Основан в [[" .. entitiesArray.inception .. " " .. entitiesArray.centuary .. "]]" .. "e."
elseif ( (entitiesArray.typeOf == "деревня") or (entitiesArray.typeOf == "коммуна") or (entitiesArray.typeOf == "община") )
then description = description .. " Основана в [[" .. entitiesArray.inception .. " " .. entitiesArray.centuary .. "]]" .. "e."
elseif(entitiesArray.typeOf == "село")
then description = description .. " Основано в [[" .. entitiesArray.inception .. " " .. entitiesArray.centuary .. "]]" .. "e."
end
end
elseif( (entitiesArray.unitOfTime == "января") or (entitiesArray.unitOfTime == "февраля") or (entitiesArray.unitOfTime == "марта")
or (entitiesArray.unitOfTime == "апреля") or (entitiesArray.unitOfTime == "мая") or (entitiesArray.unitOfTime == "июня")
or (entitiesArray.unitOfTime == "июля") or (entitiesArray.unitOfTime == "августа") or (entitiesArray.unitOfTime == "сентября")
or (entitiesArray.unitOfTime == "октября") or (entitiesArray.unitOfTime == "ноября") or (entitiesArray.unitOfTime == "декабря") )
then
do
if( (entitiesArray.typeOf == "город") or (entitiesArray.typeOf == "посёлок") or (entitiesArray.typeOf == "посёлок городского типа") or (entitiesArray.typeOf == "муниципалитет") )
then description = description .. " Основан [[" .. entitiesArray.inception .. " года]]."
elseif( (entitiesArray.typeOf == "деревня") or (entitiesArray.typeOf == "коммуна") or (entitiesArray.typeOf == "община") )
then description = description .. " Основана [[" .. entitiesArray.inception .. " года]]."
elseif(entitiesArray.typeOf == "село")
then description = description .. " Основано [[" .. entitiesArray.inception .. " года]]."
end
end
elseif (entitiesArray.inception ~= "")
then
do
if( (entitiesArray.typeOf == "город") or (entitiesArray.typeOf == "посёлок") or (entitiesArray.typeOf == "посёлок городского типа") or (entitiesArray.typeOf == "муниципалитет") )
then description = description .. " Основан в [[" .. entitiesArray.inception .. " год]]у."
elseif( (entitiesArray.typeOf == "деревня") or (entitiesArray.typeOf == "коммуна") or (entitiesArray.typeOf == "община") )
then description = description .. " Основана в [[" .. entitiesArray.inception .. " год]]у."
elseif(entitiesArray.typeOf == "село")
then description = description .. " Основано в [[" .. entitiesArray.inception .. " год]]у."
end
end
end
if (entitiesArray.locatedITATE ~= "") then description = description .. entitiesArray["P131"] end
if(entitiesArray.headOf ~= "") then description = description .. entitiesArray["P6"] end
if(entitiesArray.population ~= "") then description = description .. entitiesArray["P1082"] end
if(entitiesArray["P2046"] ~= "") then description = description .. entitiesArray["P2046"] end
if(entitiesArray.sisterTowns ~= "") then description = description .. " [[Города-побратимы]]:" .. entitiesArray.sisterTowns:sub(1, #entitiesArray.sisterTowns - 1) .. "." end
if (entitiesArray.country ~= "" ) then
do
if(Declension.declineWord(entitiesArray.country, 2) == "Logical error Declension.declineWord(arg): word not found") then categories = categories .. "[[Категория:Страны без склонения]]"
else do
categories = categories .. " [[Категория:Населённые пункты " .. Declension.declineWord(entitiesArray.country, 2) .. "]]" .. " [[Категория:" .. Declension.declineWord(entitiesArray.typeOf, 7) .. " " .. Declension.declineWord(entitiesArray.country, 2) .. "]]"
end
end
end
end
categories = categories .. " [[Категория:" .. Declension.declineWord(entitiesArray.typeOf, 7) .. " по алфавиту]]"
if(entitiesArray.unitOfTime == "век") then
do
if(entitiesArray.inception ~= "") then categories = categories .. " [[Категория:Населённые пункты, основанные в " .. entitiesArray.inception .. " веке]]"
elseif (entitiesArray.typeOf == "город") then categories = categories .. " [[Категория:Города, основанные в " .. entitiesArray.inception .. " веке]]"
elseif(entitiesArray.typeOf == "деревня") then categories = categories .. " [[Категория:Деревни, основанные в " .. entitiesArray.inception .. " веке]]"
elseif(entitiesArray.typeOf == "село") then categories = categories .. " [[Категория:Сёла, основанные в " .. entitiesArray.inception .. " веке]]"
elseif(entitiesArray.typeOf == "посёлок") then categories = categories .. " [[Категория:Посёлки, основанные в " .. entitiesArray.inception .. " веке]]"
elseif(entitiesArray.typeOf == "посёлок городского типа") then categories = categories .. " [[Категория:Посёлки городского типа, основанные в " .. entitiesArray.inception .. " веке]]"
elseif(entitiesArray.typeOf == "коммуна") then categories = categories .. " [[Категория:Коммуны, основанные в " .. entitiesArray.inception .. " веке]]"
elseif(entitiesArray.typeOf == "община") then categories = categories .. " [[Категория:Общины, основанные в " .. entitiesArray.inception .. " веке]]"
elseif(entitiesArray.typeOf == "муниципалитет") then categories = categories .. " [[Категория:Муниципалитеты, основанные в " .. entitiesArray.inception .. " веке]]"
end
end
elseif( (entitiesArray.unitOfTime == "января") or (entitiesArray.unitOfTime == "февраля") or (entitiesArray.unitOfTime == "марта") or (entitiesArray.unitOfTime == "апреля")
or (entitiesArray.unitOfTime == "мая") or (entitiesArray.unitOfTime == "июня") or (entitiesArray.unitOfTime == "июля") or (entitiesArray.unitOfTime == "августа")
or (entitiesArray.unitOfTime == "сентября") or (entitiesArray.unitOfTime == "октября") or (entitiesArray.unitOfTime == "ноября") or (entitiesArray.unitOfTime == "декабря") ) then
do
categories = categories .. " [[Категория:Населённые пункты, основанные " .. entitiesArray.inception .. " года]]"
if(entitiesArray.typeOf == "город") then categories = categories .. " [[Категория:Города, основанные " .. entitiesArray.inception .. " года]]"
elseif(entitiesArray.typeOf == "деревня") then categories = categories .. " [[Категория:Деревни, основанные " .. entitiesArray.inception .. " года]]"
elseif(entitiesArray.typeOf == "село") then categories = categories .. " [[Категория:Сёла, основанные " .. entitiesArray.inception .. " года]]"
elseif(entitiesArray.typeOf == "посёлок") then categories = categories .. " [[Категория:Посёлки, основанные в " .. entitiesArray.inception .. " года]]"
elseif(entitiesArray.typeOf == "посёлок городского типа") then categories = categories .. " [[Категория:Посёлки городского типа, основанные в " .. entitiesArray.inception .. " года]]"
elseif(entitiesArray.typeOf == "коммуна") then categories = categories .. " [[Категория:Коммуны, основанные в " .. entitiesArray.inception .. " года]]"
elseif(entitiesArray.typeOf == "община") then categories = categories .. " [[Категория:Общины, основанные в " .. entitiesArray.inception .. " года]]"
elseif(entitiesArray.typeOf == "муниципалитет") then categories = categories .. " [[Категория:Муниципалитеты, основанные в " .. entitiesArray.inception .. " года]]"
end
end
elseif (entitiesArray.inception ~= "") then
do
categories = categories .. " [[Категория:Населённые пункты, основанные в " .. entitiesArray.inception .. " году]]"
if(entitiesArray.typeOf == "город") then categories = categories .. " [[Категория:Города, основанные в " .. entitiesArray.inception .. " году]]"
elseif(entitiesArray.typeOf == "деревня") then categories = categories .. " [[Категория:Деревни, основанные в " .. entitiesArray.inception .. " году]]"
elseif(entitiesArray.typeOf == "село") then categories = categories .. " [[Категория:Сёла, основанные в " .. entitiesArray.inception .. " году]]"
elseif(entitiesArray.typeOf == "посёлок") then categories = categories .. " [[Категория:Посёлки, основанные в " .. entitiesArray.inception .. " году]]"
elseif(entitiesArray.typeOf == "посёлок городского типа") then categories = categories .. " [[Категория:Посёлки городского типа, основанные в " .. entitiesArray.inception .. " году]]"
elseif(entitiesArray.typeOf == "коммуна") then categories = categories .. " [[Категория:Коммуны, основанные в " .. entitiesArray.inception .. " году]]"
elseif(entitiesArray.typeOf == "община") then categories = categories .. " [[Категория:Общины, основанные в " .. entitiesArray.inception .. " году]]"
elseif(entitiesArray.typeOf == "муниципалитет") then categories = categories .. " [[Категория:Муниципалитеты, основанные в " .. entitiesArray.inception .. " году]]"
end
end
end
end
function AutoDescriptionLocality.parseP17(entity)
local p17Statements = entity:getAllStatements("P17")
local v = entity:formatPropertyValues("P17", { mw.wikibase.entity.claimRanks.RANK_PREFERRED }).value
local countries = {
Q408 = "Австралия", Q40 = "Австрия", Q227 = "Азербайджан", Q222 = "Албания", Q262 = "Алжир",
Q399 = "Армения", Q398 = "Бахрейн", Q184 = "Белоруссия", Q31 = "Бельгия", Q219 = "Болгария",
Q225 = "Босния и Герцеговина", Q155 = "Бразилия", Q965 = "Буркина-Фасо", Q145 = "Великобритания", Q28 = "Венгрия",
Q183 = "Германия", Q41 = "Греция", Q230 = "Грузия", Q35 = "Дания", Q801 = "Израиль", Q796 = "Ирак",
Q189 = "Исландия", Q29 = "Испания", Q38 = "Италия", Q805 = "Йемен", Q232 = "Казахстан",
Q148 = "Китайская Народная Республика", Q739 = "Колумбия", Q211 = "Латвия", Q37 = "Литва", Q244165 = "Нагорно-Карабахская Республика",
Q836 = "Мьянма", Q55 = "Нидерланды", Q20 = "Норвегия", Q878 = "ОАЭ", Q419 = "Перу", Q36 = "Польша", Q45 = "Португалия",
Q884 = "Республика Корея", Q159 = "Россия", Q218 = "Румыния", Q851 = "Саудовская Аравия", Q403 = "Сербия",
Q858 = "Сирия", Q214 = "Словакия", Q215 = "Словения", Q30 = "Соединённые Штаты Америки", Q43 = "Турция",
Q212 = "Украина", Q33 = "Финляндия", Q142 = "Франция", Q224 = "Хорватия", Q236 = "Черногория",
Q213 = "Чехия", Q298 = "Чили", Q39 = "Швейцария", Q34 = "Швеция", Q191 = "Эстония", Q889 = "Афганистан", Q668 = "Индия"
}
for ki, vi in pairs (p17Statements) do
for kj, vj in pairs (countries) do
if (vi['mainsnak'] and vi['mainsnak']['datavalue'] and vi['mainsnak']['datavalue']['value'] and vi['mainsnak']['datavalue']['value']['id'] == kj) then
if (vj == "Украина") then entitiesArray.country = "Украина"
elseif(vj == "Республика Корея") then entitiesArray.country = "Южная Корея"
elseif(vj == "Соединённые Штаты Америки") then entitiesArray.country = "США"
elseif(vj == "Нагорно-Карабахская Республика") then entitiesArray.country = "Нагорный Карабах"
elseif(vj == "Китайская Народная Республика") then entitiesArray.country = "Китай"
else entitiesArray.country = vj
end
end
end
end
if(entitiesArray.country == "") then categories = categories .. "[[Категория:Страна не в таблице]]" end
if(v ~= nil and v ~= "") then entitiesArray.country = v end
end
function AutoDescriptionLocality.parseP31(entity)
local p31Statements = entity:getAllStatements("P31")
local towns = {Q515 = "город", Q3957 = "малый город", Q532 = "село", Q5084 = "деревня", Q51049922 = "деревня", Q2514025 = "посёлок", Q486972 = "населённый пункт", Q3744870 = "алевик", Q13539802 = "городская община",
Q2989457 = "посёлок городского типа", Q7216840 = "посёлок городского типа Украины", Q15078955 = "посёлок городского типа России",
Q1637706 = "город-миллионер", Q50330360 = "второй по величине город", Q12134916 = "областной центр", Q317548 = "курортный город", Q5119 = "столица",
Q15661340 = "древний город", Q15127838 = "город республиканского подчинения", Q1549591 = "город с населением более 100 000 человек", Q13218391 = "город хартии", Q537250 = "федеральный город", Q1187811 = "университетский город",
Q262882 = "уставный город Австрии", Q667509 = "муниципалитет в Австрии", Q2989398 = "коммуна Алжира",
Q1906268 = "община Болгарии", Q3184121 = "бразильский муниципалитет",
Q2590631 = "муниципалитет Венгрии",
Q747074 = "коммуна Италии",
Q33146843 = "муниципалитет Каталонии", Q2074737 = "муниципалитет Испании", Q2039348 = "община Нидерландов",
Q482821 = "город прямого подчинения Республики Корея",
Q21518270 = "столица штата либо островной территории США",
Q5123999 = "город областного значения Украины", Q12131624 = "город в Украине",
Q484170 = "коммуна Франции",
Q25412763 = "город в Чили",
Q12813115 = "населённый пункт Швеции", Q70208 = "община Швейцарии", Q14770218 = "столица швейцарского кантона",
Q21672098 = "село на Украине", Q7930989 = "город", Q755707 = "норвежская коммуна",
Q12131640 = "город районного значения", Q3199141 = "кота",
Q1093829 = "большой город в США", Q18511725 = "рыночный городок",
Q20202352 = "населённый пункт Мексики", Q3685430 = "коммуна Армении"
}
for ki, vi in pairs (p31Statements) do
for kj, vj in pairs (towns) do
if (vi['mainsnak']['datavalue']['value']['id'] == kj) then
if( (vj == "город") or (vj == "село") or (vj == "деревня") or (vj == "населённый пункт") or (vj == "алевик") or (vj == "посёлок") ) then entitiesArray.typeOf = vj
elseif( (vj == "посёлок городского типа") or (vj == "посёлок городского типа Украины") or (vj == "посёлок городского типа России") )
then entitiesArray.typeOf = "посёлок городского типа"
elseif( (vj == "город областного значения Украины") or (vj == "город районного значения") or (vj == "город в Украине") or (vj == "город прямого подчинения Республики Корея")
or (vj == "второй по величине город") or (vj == "город с населением более 100 000 человек") or (vj == "уставный город Австрии" ) or (vj == "муниципалитет в Австрии")
or (vj == "населённый пункт Швеции") or (vj == "столица швейцарского кантона") or (vj == "город в Чили") or (vj == "столица штата либо островной территории США")
or (vj == "кота") or (vj == "столица") or (vj == "город хартии") or (vj == "курортный город") or (vj == "город-миллионер") or (vj == "малый город") or (vj == "федеральный город")
or (vj == "университетский город") or (vj == "областной центр") or (vj == "город республиканского подчинения") or (vj == "древний город") or (vj == "большой город в США") )
then entitiesArray.typeOf = "город"
elseif (vj == "коммуна Италии" or vj == "норвежская коммуна" or (vj == "коммуна Франции") or (vj == "коммуна Алжира") or (vj == "коммуна Армении"))
then entitiesArray.typeOf = "коммуна"
elseif( (vj == "городская община") or (vj == "Общины Болгарии") or (vj == "община Нидерландов") or (vj == "община Швейцарии"))
then entitiesArray.typeOf = "община"
elseif( (vj =="муниципалитет Каталонии") or (vj == "муниципалитет Венгрии") or (vj == "муниципалитет Испании") or (vj == "бразильский муниципалитет") or (vj == "муниципалитет Нидерландов"))
then entitiesArray.typeOf = "муниципалитет"
elseif(vj == "село на Украине")
then entitiesArray.typeOf = "село"
elseif(vj == "населённый пункт Мексики")
then entitiesArray.typeOf = "населённый пункт"
else entitiesArray.typeOf = vj
end
if((entitiesArray.typeOf ~= "") and (entitiesArray.typeOf ~= "населённый пункт")) then return "" end -- (entitiesArray.typeOf ~= "населённый пункт")) - костыль, чтобы не возвращало его, если есть более точное значение
end
end
end
end
function AutoDescriptionLocality.parseP1705(entity)
local p1705Statements = entity:getAllStatements("P1705")
for ki, vi in pairs (p1705Statements) do
if (vi['mainsnak']['datavalue']['value']['language']) then entitiesArray.langPr=vi['mainsnak']['datavalue']['value']['language'] end
if (vi['mainsnak']['datavalue']['value']['text']) then entitiesArray.nativeL=vi['mainsnak']['datavalue']['value']['text'] end
end
end
function AutoDescriptionLocality.parseP571(entity)
local valuesP=entity:formatPropertyValues("P571", { mw.wikibase.entity.claimRanks.RANK_PREFERRED }).value
local valuesN=entity:formatPropertyValues("P571", { mw.wikibase.entity.claimRanks.RANK_NORMAL }).value
local values=""
if(valuesP ~= nil) then values=valuesP end
if (values == "" and valuesN ~= nil) then values=valuesN end
entitiesArray.unitOfTime=string.gsub(values, '[^а-я]', '' )
if(entitiesArray.unitOfTime == "век") then do
entitiesArray.centuary = string.gsub(values, '[^а-я]', '' )
entitiesArray.inception = string.gsub(values, '[^0-9]', '' )
entitiesArray.P571 = "t"
end
elseif( (entitiesArray.unitOfTime == "января") or (entitiesArray.unitOfTime == "февраля") or (entitiesArray.unitOfTime == "марта") or (entitiesArray.unitOfTime == "апреля")
or (entitiesArray.unitOfTime == "мая") or (entitiesArray.unitOfTime == "июня") or (entitiesArray.unitOfTime == "июля") or (entitiesArray.unitOfTime == "августа")
or (entitiesArray.unitOfTime == "сентября") or (entitiesArray.unitOfTime == "октября") or (entitiesArray.unitOfTime == "ноября") or (entitiesArray.unitOfTime == "декабря") ) then do
entitiesArray.inception=values
entitiesArray.P571 = "t"
end
elseif (values ~= "") then do
entitiesArray.inception=values
entitiesArray.P571 = "t"
end
else return ""
end
end
function AutoDescriptionLocality.parseP1376(entity)
local values=entity:formatPropertyValues("P1376",mw.wikibase.entity.claimRanks).value
q={["capitalOf"]=" "}
q["capitalOf"] = "(ст. " .. values .. " )"
return q["capitalOf"]
end
function AutoDescriptionLocality.parseP131(entity)
local p131Statements = entity:getAllStatements("P131")
local qLI = {Q167859 = "Волынская область", Q2347421 = "Ровненский район"}
for ki, vi in pairs (p131Statements) do
for kj, vj in pairs (qLI) do
if (vi['mainsnak']['datavalue']['value']['id'] == kj) then
if (vj == "Волынская область") then do
categories = categories .. " [[Категория:Населённые пункты Волынской области]]" .. " [[Категория:Города Волынской области]]"
return " Находится в [[Волынская область|Волынской области]]."
end
elseif (vj == "Ровненский район") then do
categories = categories .. " [[Категория:Населённые пункты Ровненского района]]" .. " [[Категория:Города Ровненского района]]"
return " Находится в [[Ровненский район|Ровненском районе]]."
end
end
end
end
end
end
function AutoDescriptionLocality.parseP6(entity)
local valuesP=entity:formatPropertyValues("P6", { mw.wikibase.entity.claimRanks.RANK_PREFERRED }).value
local valuesN=entity:formatPropertyValues("P6", { mw.wikibase.entity.claimRanks.RANK_NORMAL }).value
entitiesArray.headOf=values
if(valuesN ~= "") then do
if(valuesP ~= "") then entitiesArray.headOf=valuesP
else entitiesArray.headOf=valuesN end
return " Глава — [[" .. entitiesArray.headOf .. "]]."
end
else return ""
end
end
function AutoDescriptionLocality.parseP1082(entity)
local p1082Statements = entity:getAllStatements("P1082")
local rankMax="0"
local pO=""
for ki, vi in pairs (p1082Statements) do
rankMax=vi['mainsnak']['rank']
entitiesArray.population=string.gsub( vi['mainsnak']['datavalue']['value']['amount'], '+', '' )
--if(vi['qualifiers'] and vi['qualifiers']['P585']) then entitiesArray.populationT = MathTonumber.integerModule(vi['qualifiers']['P585'][1]['datavalue']['value']['time']) end
if(vi['qualifiers'] and vi['qualifiers']['P585']) then entitiesArray.populationT = MathTonumber.integerModule(vi['qualifiers']['P585'][1]['datavalue']['value']['time'])
elseif(vi['references'] and vi['references']['P813']) then entitiesArray.populationT = MathTonumber.integerModule(vi['references'][1]['snaks']['P813'][1]['datavalue']['value']['time'])
end
--return SerializeTable.go(vi['qualifiers'])
--if (vi['qualifiers']['snaks']) then return SerializeTable.go(p1082Statements) end
--vi['qualifiers']['P585'][1]['datavalue']['value']['time']
end
if(entitiesArray.population) then return " Население в [[" ..entitiesArray.populationT .. " год]]у составляло " .. entitiesArray.population .. " человек."
else return ""
end
end
function AutoDescriptionLocality.parseP2046(entity)
local values=entity:formatPropertyValues("P2046",mw.wikibase.entity.claimRanks).value
entitiesArray.area = string.gsub(values, '[^0-9]', '' )
if(string.find(values, "квадратный километр" )) then entitiesArray.dimension = "км²" end
if(string.find(values, "квадратный метр" )) then entitiesArray.dimension = "м²" end
if(values ~= "") then return " Площадь: " .. entitiesArray.area .. " " .. entitiesArray.dimension .."."
else return ""
end
end
function AutoDescriptionLocality.parseP421(entity)
local values=entity:formatPropertyValues("P421",mw.wikibase.entity.claimRanks).value
if(values ~= "") then return " (" .. values .. ")"
else return ""
end
end
function AutoDescriptionLocality.parseP190(entity)
local p190Statements = entity:getAllStatements("P190")
local d="d"
for ki, vi in pairs (p190Statements) do
d=p
if(vi['mainsnak'] ~= nil and vi['mainsnak']['datavalue'] ~= nil and vi['mainsnak']['datavalue']['value'] ~= nil and vi['mainsnak']['datavalue']['value']['id'] ~= nil) then
local cl = mw.wikibase.getLabel(vi['mainsnak']['datavalue']['value']['id'])
if(cl ~= None) then entitiesArray.sisterTowns = entitiesArray.sisterTowns .. " [[" .. cl .. "]]," end
end
end
if(d == "p") then
do
entitiesArray.sisterTowns=entitiesArray.sisterTowns:sub(1, #entitiesArray.sisterTowns - 1)
return entitiesArray.sisterTowns .. "."
end
else return "" end
end
return AutoDescriptionLocality