Модуль:Wikidata.p1082


local p = {}

-- дата без источника
function p.formatDate( context, options, statement ) 
	local snak = ''
	--Date
    if ( statement.qualifiers and statement.qualifiers.P585 ) then
    	-- context.formatSnak( options, statement.qualifiers.P585[1] ) - Тептар-фицирует дату что не желательно
        snak = snak .. mw.wikibase.renderSnak( statement.qualifiers.P585[1] ) 
    end
    return snak
end

-- дата с источником
function p.formatDateRefClaim( context, options, statement )
	local snak = p.formatDate( context, options, statement )

	--References
	if ( options.references ) then
    	snak = snak .. context.formatRefs( options, statement );
    end

    return snak
end

-- голые данные без точности
function p.formatSnakDeafult( context, options, snak )
	if (snak and snak.datavalue and snak.datavalue.value and snak.datavalue.type == 'quantity') then
			local amount = string.gsub(snak.datavalue.value['amount'], '^%+', '')
			return tonumber( amount )
	end
	context.formatSnak( options, snak ) -- попытка финта ушами
	return context.formatValueDefault( context, options, snak.datavalue.value)
end

-- данные без источника, даты и оформления
function p.formatQuantityDeafult( context, options, statement )
	local snak = p.formatSnakDeafult(context, options, statement.mainsnak )
	return snak
end

-- данные без источника и даты
function p.formatQuantityWithoutRefClaim( context, options, statement )
	local lang = mw.language.getContentLanguage()
	local snak = lang:formatNum( p.formatSnakDeafult( context, options, statement.mainsnak ) )
	return snak
end

local oldresult=nil
function p.trent(datavalue)
	local trent=''
	if (datavalue and datavalue.value and datavalue.type == 'quantity') then
		local amount = string.gsub(datavalue.value['amount'], '^%+', '')
		local result = tonumber( amount )
		if(oldresult) then
			if (result < oldresult) then trent = '<span style="color: red; font-weight:bold; font-size: larger;">↘</span>'
			elseif (result > oldresult) then trent = '<span style="color: #0c0; font-weight:bold; font-size: larger;">↗</span>'
			else trent = '<span style="color:#0AF;">→</span>' end
		end
		oldresult=result
	end 
	return trent
end

-- данные без источника и даты, но с трендом
function p.formatTQuantityWithoutRefClaim( context, options, statement )
	return p.trent(statement.mainsnak.datavalue) .. p.formatQuantityWithoutRefClaim( context, options, statement )
end

-- данные c источниками без даты, но с трендом
function p.formatTQuantityRefClaim( context, options, statement )
	return p.formatTQuantityWithoutRefClaim( context, options, statement ) .. context.formatRefs( options, statement );
end

-- стартовая функция для formatDateRefClaim
function p.firstDateRefClaim( context, options, statement )
		context.oldformatStatement = context.formatStatement 
		context.oldformatStatementDefault = context.formatStatementDefault
		context.formatStatement = function (options, statement ) return p.formatDateRefClaim(context,options, statement) end
		context.formatStatementDefault = p.formatTQuantityWithoutRefClaim
		return context.formatStatement( options, statement )
end

-- стартовая функция для formatDate
function p.firstDateClaim( context, options, statement )
		context.oldformatStatement = context.formatStatement 
		context.oldformatStatementDefault = context.formatStatementDefault
		context.formatStatement = function (options, statement ) return p.formatDate(context,options, statement) end
		context.formatStatementDefault = p.formatQuantityDeafult
		return context.formatStatement( options, statement )
end

-- стартовая функция для formatTQuantityWithoutRefClaim
function p.firstTQuantityWithoutRefClaim( context, options, statement )
		context.oldformatStatement = context.formatStatement 
		context.oldformatStatementDefault = context.formatStatementDefault
		context.formatStatement = function (options, statement ) return p.formatTQuantityWithoutRefClaim(context,options, statement) end
		context.formatStatementDefault = p.formatDate
		return context.formatStatement( options, statement )
end

-- стартовая функция для formatTQuantityRefClaim
function p.firstTQuantitRefClaim( context, options, statement )
		context.oldformatStatement = context.formatStatement 
		context.oldformatStatementDefault = context.formatStatementDefault
		context.formatStatement = function (options, statement ) return p.formatTQuantityRefClaim(context,options, statement) end
		context.formatStatementDefault = p.formatDate
		return context.formatStatement( options, statement )
end

return p