--
-- decoy.ast
--
-- 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
require "decoy.model"
local Define = {}
function Define:depict()
return "(define " .. tostring(self.name) .. ": " .. tostring(self.defn) .. ")"
end
Define.is_class_of = function(obj)
local mt = getmetatable(obj)
return mt and mt.__index == Define
end
Define.new = function(name, defn)
local self = {
name = name,
defn = defn,
}
setmetatable(self, {__index = Define})
return self
end
local ImportFrom = {}
function ImportFrom:depict()
return "(import-from " .. tostring(self.name) .. ": " .. tostring(self.imports) .. ")"
end
ImportFrom.is_class_of = function(obj)
local mt = getmetatable(obj)
return mt and mt.__index == ImportFrom
end
ImportFrom.new = function(name, imports)
local self = {
name = name,
imports = imports,
}
setmetatable(self, {__index = ImportFrom})
return self
end
return {
Define = Define,
ImportFrom = ImportFrom,
}