29 lines
719 B
Lua
29 lines
719 B
Lua
|
|
return function(op)
|
|
return {
|
|
name = 'Better numbers',
|
|
transform = function(e, opts)
|
|
return e.src
|
|
:gsub('%.?%d[%._0-9A-Fa-fxboXBO]+', function(num)
|
|
local base = 10
|
|
local nnum = num
|
|
:gsub('_', '')
|
|
:gsub('^0([xboXBO])', function(m)
|
|
if m == 'x' or m == 'X'
|
|
then base = 16
|
|
elseif m == 'b' or m == 'B'
|
|
then base = 2
|
|
elseif m == 'o' or m == 'O'
|
|
then base = 8
|
|
end
|
|
return ''
|
|
end)
|
|
assert(not nnum:match '[xboXBO]', 'invalid number '..num)
|
|
nnum = tonumber(nnum, base)
|
|
assert(nnum, 'invalid number '..num)
|
|
return tostring(nnum)
|
|
end)
|
|
end,
|
|
}
|
|
end
|