-- This file defines some methods on Lua numbers, bools, actions, nil, and coroutines require "text" number_mt = __type: "a Number" as_lua: tostring as_nomsu: tostring as_text: tostring as_a_number: => @ rounded: => math.floor(@ + .5) rounded_down: math.floor rounded_up: math.ceil to_the_nearest: (rounder)=> rounder * math.floor(@/rounder + 0.5) base16: => ("%X")\format(@) number_mt.__index = number_mt debug.setmetatable 0, number_mt bool_mt = __type: "a Boolean" as_lua: tostring as_nomsu: => @ and "yes" or "no" as_text: => @ and "yes" or "no" bool_mt.__index = bool_mt debug.setmetatable true, bool_mt fn_mt = __type: "an Action" as_text: => (tostring(@)\gsub("function", "Action")) fn_mt.__index = fn_mt debug.setmetatable (->), fn_mt co_mt = __type: "a Coroutine" as_text: => (tostring(@)\gsub("thread", "Coroutine")) co_mt.__index = co_mt debug.setmetatable(coroutine.create(->), co_mt) nil_mt = __type: "Nil" as_lua: => "nil" as_nomsu: => "nil" as_text: => "nil" nil_mt.__index = nil_mt debug.setmetatable nil, nil_mt