50 lines
1.3 KiB
Lua
50 lines
1.3 KiB
Lua
local lovely = require("lovely")
|
|
local nativefs = require("nativefs")
|
|
Notation = nativefs.load(lovely.mod_dir.."/Talisman/big-num/notations/notation.lua")()
|
|
ThousandNotation = nativefs.load(lovely.mod_dir.."/Talisman/big-num/notations/thousandnotation.lua")()
|
|
|
|
DynamicNotation = {}
|
|
DynamicNotation.__index = DynamicNotation
|
|
DynamicNotation.__tostring = function ()
|
|
return "DynamicNotation"
|
|
end
|
|
|
|
function DynamicNotation:new(opt)
|
|
return setmetatable({
|
|
small = opt.small or ThousandNotation:new(),
|
|
big = opt.big,
|
|
limit = opt.limit
|
|
}, DynamicNotation)
|
|
end
|
|
|
|
function DynamicNotation:get_notation(n)
|
|
if n:lte(self.limit) then
|
|
return self.small
|
|
end
|
|
return self.big
|
|
end
|
|
|
|
function DynamicNotation:get_prefix(n)
|
|
return self:get_notation(n):get_prefix(n)
|
|
end
|
|
|
|
function DynamicNotation:get_number(n, places)
|
|
return self:get_notation(n):get_number(n, places)
|
|
end
|
|
|
|
function DynamicNotation:get_suffix(n)
|
|
return self:get_notation(n):get_suffix(n)
|
|
end
|
|
|
|
function DynamicNotation:format(n, places_big, places_small)
|
|
local p = 0
|
|
if n:lte(self.limit) then
|
|
p = places_small or 0
|
|
else
|
|
p = places_big or 0
|
|
end
|
|
|
|
return self:get_prefix(n) .. self:get_number(n, p) .. self:get_suffix(n)
|
|
end
|
|
|
|
return DynamicNotation |