--
-- decoy_model_boolean.lua
--
-- SPDX-FileCopyrightText: Copyright (c) 2023-2024 Chris Pressey, Cat's Eye Technologies.
-- This work is distributed under a 2-clause BSD license. For more information, see:
-- SPDX-License-Identifier: LicenseRef-BSD-2-Clause-X-Decoy
local Boolean = {}
function Boolean:value()
return self._value
end
-- Private new, to create new objects
Boolean._new = function(value)
local self = {
_value = value,
}
setmetatable(self, {__index = Boolean})
return self
end
local True = Boolean._new(true)
local False = Boolean._new(false)
-- Public new, for to memoize and not create new objects
Boolean.new = function(b)
if b then return True else return False end
end
Boolean.is_class_of = function(obj)
local mt = getmetatable(obj)
return mt and mt.__index == Boolean
end
return {
Boolean = Boolean,
True = True,
False = False,
value = value,
}