Модуль:Wikidata/number
Ладъянъёсты лыдӟон
Для документации этого модуля может быть создана страница Модуль:Wikidata/number/doc
local p = {}
function p.formatQuantityWithDateClaim( context, options, statement )
local snak = context.formatSnak( options, statement.mainsnak )
--Unit
if ( options.unit and options.unit ~= '' ) then
snak = snak .. ' ' .. options.unit
end
--Date
if ( statement.qualifiers and statement.qualifiers.P585 ) then
snak = snak .. ' (' .. context.formatSnak( options, statement.qualifiers.P585[1] ) .. ')'
end
--References
if ( options.references ) then
snak = snak .. context.formatRefs( options, statement );
end
return snak
end
local function getUnitAbbr(unitQid)
local entity = mw.wikibase.getEntity(unitQid)
if entity and entity.claims and entity.claims.P558 then
for _, abbr in pairs( entity.claims.P558 ) do
if abbr.qualifiers then
if abbr.qualifiers.P407 and abbr.qualifiers.P407[1].datavalue.value.id == "Q7737" or
abbr.qualifiers.P282 and abbr.qualifiers.P282[1].datavalue.value.id == "Q8209" then
return abbr.mainsnak.datavalue.value
end
end
end
end
end
function p.formatQuantity( context, options, value )
local snak = value.amount
if snak:sub(1, 1) == '+' then
snak = snak:sub(2)
end
snak = snak:gsub('[.]', ',')
if ( options.unit and options.unit ~= '' ) then
snak = snak .. ' ' .. options.unit
return snak
end
if value.unit ~= nil then
local unitQid = value.unit:match('Q%d+')
if unitQid ~= nil then
local abbr = getUnitAbbr(unitQid)
if abbr ~= nil then
snak = snak .. ' ' .. abbr
end
end
end
return snak
end
return p