Modulo:Wikidata/Formatters/round

El Vikipedio, la libera enciklopedio

Dokumentado por ĉi tiu modulo povas esti kreata ĉe Modulo:Wikidata/Formatters/round/dokumentado

require('strict')

local p = {}

local parent = require 'Modulo:Wikidata/Formatters/quantity'

p.getRawValue = parent.getRawValue

local function roundToOneDecimal(value)
	return tonumber(mw.ustring.format('%.1f', value))
end

function p.formatNumber(value, options)
	local formatNumber = parent.formatNumber
	local absolute = math.abs(value)
	if 10^6 < absolute and absolute < 10^9 then
		return mw.ustring.format('%s&nbsp;mil.', formatNumber(roundToOneDecimal(value / 10^6), {}))
	elseif 10^9 < absolute and absolute < 10^12 then
		return mw.ustring.format('%s&nbsp;mld.', formatNumber(roundToOneDecimal(value / 10^9), {}))
	elseif 10^12 < absolute and absolute < 10^15 then
		return mw.ustring.format('%s&nbsp;bil.', formatNumber(roundToOneDecimal(value / 10^12), {}))
	else
		return formatNumber(value, options)
	end
end

p.formatRawValue = p.formatNumber

function p.formatValue(value, options)
	parent.setFormatNumber(p.formatNumber)
	return parent._formatValue(value, options)
end

return p