Модуль:Wikidata/P166
ХӀокху модулах лаьцна хааман Модуль:Wikidata/P166/doc агӀо кхолла мега
-- https://www.mediawiki.org/wiki/Wikibase/DataModel
-- https://www.wikidata.org/wiki/Wikidata:Glossary/ru
-- https://www.mediawiki.org/wiki/Extension:Wikibase_Client/Lua
-- https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/ru
local p = {}
local function getMedalsOld(entity)
local result = {}
local medalsStr = entity:formatPropertyValues('P166').value
for str in string.gmatch(medalsStr, '([А-яёЁ0-9с-я%.%-— ]+),?%s?') do
if str ~= 'неизвестное значение' and str ~= 'значение не задано' then
table.insert(result, str)
end
end
return result
end
local function formattedTableOfMedals(medals, frame)
local result = '{| style="background:transparent"\n'
for i, medal in ipairs(medals) do
local title = mw.title.new('Кеп:' .. medal)
if title then
if title.exists then
result = result .. '|' .. frame:expandTemplate{ title = medal, args = {} } .. '\n'
else
result = result .. '| [[Кеп:' .. medal .. ']]\n'
end
end
if math.fmod(i, 4) == 0 then
result = result .. '|-\n'
end
end
return result .. '|}'
end
local function getMedals(frame)
local result = {}
local entity = mw.wikibase.getEntityObject()
local medalsStr = entity:formatPropertyValues('P1668').value
return medalsStr
--[[
for key, value in pairs(frame.args) do
table.insert(result, value)
end
return {
src = 0,
items = result
}
]]
end
local function sortMedals(medals)
local result = {
src = medals.src,
items = {}
}
if medals.src == 0 then
result.items = {
medals = medals.items,
orders = {},
others = {}
}
else
local m_medals, m_orders, m_others = {}, {}, {}
for i = 1, #medals.items do
if string.find(medals.items[i], '[Мм]едаль') ~= nil then
table.insert(m_medals, medals.items[i])
end
if string.find(medals.items[i], '[Оо]рден') ~= nil then
table.insert(m_orders, medals.items[i])
else
table.insert(m_others, medals.items[i])
end
end
result.items = {
medals = m_medals,
orders = m_orders,
others = m_others
}
end
return result
end
local function printOneTypeMedal(medals)
local str = ''
for i = 1, #medals do
if string.len(medals[i]) ~= 0 then
str = str .. '|' .. medals[i] .. '\n'
if math.fmod(i, 4) == 0 then
str = str .. '|-\n'
end
end
end
return str .. '|-\n';
end
local function formattedMedals(medals)
local startStr, str, endStr = '{| style="background:transparent"\n', '', '|}'
str = str .. printOneTypeMedal(medals.items.medals)
str = str .. printOneTypeMedal(medals.items.orders)
str = str .. printOneTypeMedal(medals.items.others)
return startStr .. str .. endStr
end
function p.display(frame)
local medals = getMedals(frame)
return '0' .. medals .. '0'
--local sortedMedals = sortMedals(medals)
--return formattedMedals(sortedMedals)
--return table.concat(medals, ', ')
--local entity = mw.wikibase.getEntityObject()
--return formattedTableOfMedals(getMedalsOld(entity), frame)
end
return p