Модуль:Wikidata/number
Поделись знанием:
< Модуль:Wikidata
Это текущая версия страницы, сохранённая Lockal (обсуждение | вклад) в 11:30, 1 сентября 2016. Вы просматриваете постоянную ссылку на эту версию.
Документация
Модуль используется для форматирования числовых значений из Викиданных.
Методы
formatQuantityWithDateClaim
- Используется в шаблонах: {{wikidata/p1082}}, {{wikidata/p1128}}.
- Формат возвращаемого значения:
<число>[' '<единица-измерения>][' ('<дата>')']
- Примеры:
-
4321 чел.
-
54 321 чел. (2014)
-
654 321 чел. (июнь 2014)
-
7 654 321 чел. (31 декабря 2014)
-
Тесты
Ошибка скрипта: Нет такого модуля, как «Wikidata/number/tests».
Во избежание поломок страниц, использующих данный модуль, желательно экспериментировать в Песочнице для модулей.
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