git @ Cat's Eye Technologies Decoy / master src / decoy / model / boolean.lua
master

Tree @master (Download .tar.gz)

boolean.lua @masterraw · history · blame

--
-- 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,
}