diff --git a/classes/beastfile.lua b/classes/beastfile.lua index 146b399..e92ac81 100644 --- a/classes/beastfile.lua +++ b/classes/beastfile.lua @@ -12,7 +12,30 @@ function BeastFile:new(folder, name) end function BeastFile:readLines() - local lines = parseFile(self.filepath, function (line) self.datas:addLine(line) end) + self:readAllLines(self.filepath) +end + +function BeastFile:readAllLines(path) + parseFile(path, function (line) self:addLine(line) end) +end + +function BeastFile:addLine(line) + if (utils.startswith(line, "mixin;") or utils.startswith(line, "mixins;")) then + local mixin = utils.split(line, ";", true)[2] + self:loadMixin(mixin) + elseif (utils.startswith(line, "type;") or utils.startswith(line, "types;")) then + local mixin = utils.split(line, ";", true)[2] + self:loadMixin("types/" .. mixin) + else + self.datas:addLine(line) + end +end + +function BeastFile:loadMixin(mixin) + local testpath = "data/" .. utils.trim(mixin) .. ".beast" + if (testpath ~= nil) then + self:readAllLines(testpath) + end end function BeastFile:prepareJson()