Модуль:Песочница/D6194c-1cc/WDCommonV2

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Документация
require('strict')

local p = {}

local NS_MODULE = 828 --: https://www.mediawiki.org/wiki/Extension_default_namespaces
local moduleNamespace = mw.site.namespaces[NS_MODULE].name

local base = require(moduleNamespace .. ':Песочница/D6194c-1cc/WDBaseV2')
p.base = base

p.P_SHORT_NAME = 'P1813'
p.P_UNIT = 'P5061'
p.P_URL_MASK = 'P1630'
p.P_NAME = 'P1476'
p.P_ABBR_ENTRY = 'P8703'
p.P_USED_BY = 'P1535'

function p.name(entity, lang)
	local name, valueLang = base.tryTextByLang(entity, p.P_NAME, lang)
	if not name then
		if lang then
			name = mw.wikibase.getLabelByLang(entity, lang)
			valueLang = lang
		end
		if not name then
			name, valueLang = mw.wikibase.getLabelWithLang(entity)
		end
	end
	return name, valueLang
end

function p.nameData(entity, lang)
	local data = {}
	data.value, data.lang = base.tryTextByLang(entity, p.P_NAME, lang)
	if not data.value then
		if lang then
			data.value = mw.wikibase.getLabelByLang(entity, lang)
			data.lang = lang
		end
		if not data.value then
			data.value, data.lang = mw.wikibase.getLabelWithLang(entity)
		end
		if data.value then
			data.fromLabel = true
		end
	end
	data.entity = entity
	return data
end

function p.short(entity, lang)
	local short = base.textByLang(entity, p.P_SHORT_NAME, lang)
	local ok = true
	if not short then
		if lang then
			short = mw.wikibase.getLabelByLang(entity, lang)
		else
			short, lang = mw.wikibase.getLabelWithLang(entity)
		end
		ok = false
	end
	return short, lang, ok
end

function p.abbr(entity, lang)
	-- Currently there is no global property for abbreviations by languages,
	-- see [[d:Wikidata:Property proposal/abbreviation for details]]
	local abbrByLang = {
		ru = 'Q114796497',
	}
	local abbrTableEntity = abbrByLang[lang]
	local abbr = base.valueByQualifier(entity, p.P_ABBR_ENTRY, p.P_USED_BY, abbrTableEntity)
	if not abbr then
		local short, lang = p.short(entity, lang)
		return short, lang, false
	end
	return abbr, lang, true
end

function p.abbrBiblio(entity, lang)
	-- Only Russian language is supported
	local abbrByLang = {
		ru = 'Q19670003',
	}
	if not lang then
		lang = defaultLang
	end
	local abbrTableEntity = abbrByLang[lang]
	local abbr = base.valueByQualifier(entity, p.P_ABBR_ENTRY, p.P_USED_BY, abbrTableEntity)
	if not abbr then
		return p.abbr(entity, lang)
	end
	return abbr, lang, true
end

function p.unit(entity, lang)
	return base.textByLang(entity, p.P_UNIT, lang)
end

function p.urlMask(entity, lang)
	return base.tryTextByLang(entity, p.P_URL_MASK, lang)
end

return p