2024-11-28 13:57:00 +01:00

51 lines
1.4 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

local S = minetest.get_translator("rp_localize")
local INFINITY = 1/0
local NEG_INFINITY = -1/0
loc = {}
--~ symbol representing infinity
local INF_SYMBOL = S("")
loc.num = function(numbr)
if type(numbr) == "string" then
numbr = tonumber(numbr)
if type(numbr) ~= "number" then
return numbr
end
end
if minetest.is_nan(numbr) then
return tostring(numbr)
end
if numbr == INFINITY then
return INF_SYMBOL
elseif numbr == NEG_INFINITY then
--~ a negative whole number. @1 will be replaced by digits
return S("@1", INF_SYMBOL)
end
local negative
if numbr < 0 then
negative = true
numbr = math.abs(numbr)
end
local pre = math.floor(numbr)
local post = numbr % 1
local str
if post ~= 0 then
post = string.sub(post, 3)
if negative then
--~ a negative number with some decimal places. @1 is the part before the decimal point, @2 is the part after it. Replace the minus sign and decimal point with whatever is appropriate for your language.
str = S("@1.@2", pre, post)
else
--~ a non-negative number with some decimal places. @1 is the part before the decimal point, @2 is the part after it. Replace the decimal point with whatever is appropriate for your language.
str = S("@1.@2", pre, post)
end
elseif negative then
--~ a negative whole number. @1 will be replaced by digits
str = S("@1", numbr)
else
str = tostring(numbr)
end
return str
end