Rename data to node

This commit is contained in:
Sabine Lim
2023-05-16 21:47:27 +10:00
parent 4b029c9728
commit 884c02b5f7
8 changed files with 98 additions and 102 deletions

View File

@@ -1,8 +1,8 @@
local XMLNode = { local XMLNode = {
new = function(name) new = function(name)
return { return {
value = nil,
name = name, name = name,
value = nil,
children = {}, children = {},
attributes = {}, attributes = {},

View File

@@ -28,9 +28,9 @@ return {
return bgSymbolColor return bgSymbolColor
end, end,
setValuesByXMLData = function(self, data, scripts) setValuesByXMLData = function(self, node, scripts)
base.setValuesByXMLData(self, data, scripts) base.setValuesByXMLData(self, node, scripts)
if(XMLParser.xmlValue("background-symbol", data)~=nil)then self:setBackgroundSymbol(XMLParser.xmlValue("background-symbol", data), XMLParser.xmlValue("background-symbol-color", data)) end if(XMLParser.xmlValue("background-symbol", node)~=nil)then self:setBackgroundSymbol(XMLParser.xmlValue("background-symbol", node), XMLParser.xmlValue("background-symbol-color", node)) end
return self return self
end, end,

View File

@@ -338,11 +338,11 @@ return {
end end
end, end,
setValuesByXMLData = function(self, data, scripts) setValuesByXMLData = function(self, node, scripts)
base.setValuesByXMLData(self, data, scripts) base.setValuesByXMLData(self, node, scripts)
local animX, animY, animateDuration, animeteTimeOffset, animateMode = XMLParser.xmlValue("animateX", data), XMLParser.xmlValue("animateY", data), XMLParser.xmlValue("animateDuration", data), XMLParser.xmlValue("animateTimeOffset", data), XMLParser.xmlValue("animateMode", data) local animX, animY, animateDuration, animeteTimeOffset, animateMode = XMLParser.xmlValue("animateX", node), XMLParser.xmlValue("animateY", node), XMLParser.xmlValue("animateDuration", node), XMLParser.xmlValue("animateTimeOffset", node), XMLParser.xmlValue("animateMode", node)
local animW, animH, animateDuration, animeteTimeOffset, animateMode = XMLParser.xmlValue("animateW", data), XMLParser.xmlValue("animateH", data), XMLParser.xmlValue("animateDuration", data), XMLParser.xmlValue("animateTimeOffset", data), XMLParser.xmlValue("animateMode", data) local animW, animH, animateDuration, animeteTimeOffset, animateMode = XMLParser.xmlValue("animateW", node), XMLParser.xmlValue("animateH", node), XMLParser.xmlValue("animateDuration", node), XMLParser.xmlValue("animateTimeOffset", node), XMLParser.xmlValue("animateMode", node)
local animXOffset, animYOffset, animateDuration, animeteTimeOffset, animateMode = XMLParser.xmlValue("animateXOffset", data), XMLParser.xmlValue("animateYOffset", data), XMLParser.xmlValue("animateDuration", data), XMLParser.xmlValue("animateTimeOffset", data), XMLParser.xmlValue("animateMode", data) local animXOffset, animYOffset, animateDuration, animeteTimeOffset, animateMode = XMLParser.xmlValue("animateXOffset", node), XMLParser.xmlValue("animateYOffset", node), XMLParser.xmlValue("animateDuration", node), XMLParser.xmlValue("animateTimeOffset", node), XMLParser.xmlValue("animateMode", node)
if(animX~=nil and animY~=nil)then if(animX~=nil and animY~=nil)then
self:animatePosition(animX, animY, animateDuration, animeteTimeOffset, animateMode) self:animatePosition(animX, animY, animateDuration, animeteTimeOffset, animateMode)
end end

View File

@@ -195,9 +195,9 @@ return {
end end
end, end,
setValuesByXMLData = function(self, data, scripts) setValuesByXMLData = function(self, node, scripts)
base.setValuesByXMLData(self, data, scripts) base.setValuesByXMLData(self, node, scripts)
if(XMLParser.xmlValue("fontSize", data)~=nil)then self:setFontSize(XMLParser.xmlValue("fontSize", data)) end if(XMLParser.xmlValue("fontSize", node)~=nil)then self:setFontSize(XMLParser.xmlValue("fontSize", node)) end
return self return self
end, end,

View File

@@ -81,19 +81,19 @@ return {
end) end)
end, end,
setValuesByXMLData = function(self, data, scripts) setValuesByXMLData = function(self, node, scripts)
base.setValuesByXMLData(self, data) base.setValuesByXMLData(self, node)
local borders = {} local borders = {}
if(XMLParser.xmlValue("border", data)~=nil)then if(XMLParser.xmlValue("border", node)~=nil)then
borders["top"] = colors[XMLParser.xmlValue("border", data)] borders["top"] = colors[XMLParser.xmlValue("border", node)]
borders["bottom"] = colors[XMLParser.xmlValue("border", data)] borders["bottom"] = colors[XMLParser.xmlValue("border", node)]
borders["left"] = colors[XMLParser.xmlValue("border", data)] borders["left"] = colors[XMLParser.xmlValue("border", node)]
borders["right"] = colors[XMLParser.xmlValue("border", data)] borders["right"] = colors[XMLParser.xmlValue("border", node)]
end end
if(XMLParser.xmlValue("borderTop", data)~=nil)then borders["top"] = colors[XMLParser.xmlValue("borderTop", data)] end if(XMLParser.xmlValue("borderTop", node)~=nil)then borders["top"] = colors[XMLParser.xmlValue("borderTop", node)] end
if(XMLParser.xmlValue("borderBottom", data)~=nil)then borders["bottom"] = colors[XMLParser.xmlValue("borderBottom", data)] end if(XMLParser.xmlValue("borderBottom", node)~=nil)then borders["bottom"] = colors[XMLParser.xmlValue("borderBottom", node)] end
if(XMLParser.xmlValue("borderLeft", data)~=nil)then borders["left"] = colors[XMLParser.xmlValue("borderLeft", data)] end if(XMLParser.xmlValue("borderLeft", node)~=nil)then borders["left"] = colors[XMLParser.xmlValue("borderLeft", node)] end
if(XMLParser.xmlValue("borderRight", data)~=nil)then borders["right"] = colors[XMLParser.xmlValue("borderRight", data)] end if(XMLParser.xmlValue("borderRight", node)~=nil)then borders["right"] = colors[XMLParser.xmlValue("borderRight", node)] end
self:setBorder(borders["top"], borders["bottom"], borders["left"], borders["right"]) self:setBorder(borders["top"], borders["bottom"], borders["left"], borders["right"])
return self return self
end end

View File

@@ -2,34 +2,30 @@ local XMLParser = require("xmlParser")
local utils = require("utils") local utils = require("utils")
local uuid = utils.uuid local uuid = utils.uuid
local function maybeExecuteScript(data, renderContext) local function maybeExecuteScript(nodeTree, renderContext)
local script = XMLParser.xmlValue('script', data) for _, node in ipairs(nodeTree.children) do
if (script ~= nil) then if (node.name == "script") then
load(script, nil, "t", renderContext.env)() return load(node.value, nil, "t", renderContext.env)()
end
end end
end end
local function registerFunctionEvent(self, data, event, renderContext) local function registerFunctionEvent(self, event, script, renderContext)
local eventEnv = renderContext.env local eventEnv = renderContext.env
if(data:sub(1,1)=="$")then event(self, function(...)
local data = data:sub(2) eventEnv.event = {...}
event(self, self:getBasalt().getVariable(data)) local success, msg = pcall(load(script, nil, "t", eventEnv))
else if not success then
event(self, function(...) error("XML Error: "..msg)
eventEnv.event = {...} end
local success, msg = pcall(load(data, nil, "t", eventEnv)) end)
if not success then
error("XML Error: "..msg)
end
end)
end
end end
local function registerFunctionEvents(self, data, events, renderContext) local function registerFunctionEvents(self, node, events, renderContext)
for _, event in pairs(events) do for _, event in pairs(events) do
local expression = data.attributes[event] local expression = node.attributes[event]
if (expression ~= nil) then if (expression ~= nil) then
registerFunctionEvent(self, expression .. "()", self[event], renderContext) registerFunctionEvent(self, self[event], expression .. "()", renderContext)
end end
end end
end end
@@ -114,16 +110,16 @@ return {
VisualObject = function(base, basalt) VisualObject = function(base, basalt)
local object = { local object = {
setValuesByXMLData = function(self, data, renderContext) setValuesByXMLData = function(self, node, renderContext)
renderContext.env[self:getName()] = self renderContext.env[self:getName()] = self
for attribute, expression in pairs(data.attributes) do for attribute, expression in pairs(node.attributes) do
local update = function() local update = function()
local value = load("return " .. expression, nil, "t", renderContext.env)() local value = load("return " .. expression, nil, "t", renderContext.env)()
self:setProperty(attribute, value) self:setProperty(attribute, value)
end end
basalt.effect(update) basalt.effect(update)
end end
registerFunctionEvents(self, data, { registerFunctionEvents(self, node, {
"onClick", "onClick",
"onClickUp", "onClickUp",
"onHover", "onHover",
@@ -148,9 +144,9 @@ return {
ChangeableObject = function(base, basalt) ChangeableObject = function(base, basalt)
local object = { local object = {
setValuesByXMLData = function(self, data, renderContext) setValuesByXMLData = function(self, node, renderContext)
base.setValuesByXMLData(self, data, renderContext) base.setValuesByXMLData(self, node, renderContext)
registerFunctionEvent(self, data, { registerFunctionEvent(self, node, {
"onChange" "onChange"
}, renderContext) }, renderContext)
return self return self
@@ -162,9 +158,9 @@ return {
Container = function(base, basalt) Container = function(base, basalt)
local lastXMLReferences = {} local lastXMLReferences = {}
local function xmlDefaultValues(data, obj, renderContext) local function xmlDefaultValues(node, obj, renderContext)
if (obj~=nil) then if (obj~=nil) then
obj:setValuesByXMLData(data, renderContext) obj:setValuesByXMLData(node, renderContext)
end end
end end
@@ -198,13 +194,13 @@ return {
end end
local object = { local object = {
setValuesByXMLData = function(self, data, renderContext) setValuesByXMLData = function(self, node, renderContext)
lastXMLReferences = {} lastXMLReferences = {}
base.setValuesByXMLData(self, data, renderContext) base.setValuesByXMLData(self, node, renderContext)
local _OBJECTS = basalt.getObjects() local _OBJECTS = basalt.getObjects()
for _, childNode in pairs(data.children) do for _, childNode in pairs(node.children) do
local tagName = childNode.name local tagName = childNode.name
if (tagName ~= "animation") then if (tagName ~= "animation") then
local layout = renderContext.env[tagName] local layout = renderContext.env[tagName]
@@ -218,7 +214,7 @@ return {
end end
end end
addXMLObjectType(data["animation"], self.addAnimation, self, renderContext) addXMLObjectType(node["animation"], self.addAnimation, self, renderContext)
return self return self
end, end,
@@ -228,11 +224,11 @@ return {
renderContext.env = _ENV renderContext.env = _ENV
renderContext.env.props = props renderContext.env.props = props
local f = fs.open(path, "r") local f = fs.open(path, "r")
local data = XMLParser.parseText(f.readAll()) local nodeTree = XMLParser.parseText(f.readAll())
f.close() f.close()
lastXMLReferences = {} lastXMLReferences = {}
maybeExecuteScript(data, renderContext) maybeExecuteScript(nodeTree, renderContext)
self:setValuesByXMLData(data, renderContext) self:setValuesByXMLData(nodeTree, renderContext)
end end
return self return self
end, end,
@@ -246,17 +242,17 @@ return {
Textfield = function(base, basalt) Textfield = function(base, basalt)
local object = { local object = {
setValuesByXMLData = function(self, data, renderContext) setValuesByXMLData = function(self, node, renderContext)
base.setValuesByXMLData(self, data, renderContext) base.setValuesByXMLData(self, node, renderContext)
if(data["lines"]~=nil)then if(node["lines"]~=nil)then
local l = data["lines"]["line"] local l = node["lines"]["line"]
if(l.attributes~=nil)then l = {l} end if(l.attributes~=nil)then l = {l} end
for _,v in pairs(l)do for _,v in pairs(l)do
self:addLine(v.value) self:addLine(v.value)
end end
end end
if(data["keywords"]~=nil)then if(node["keywords"]~=nil)then
for k,v in pairs(data["keywords"])do for k,v in pairs(node["keywords"])do
if(colors[k]~=nil)then if(colors[k]~=nil)then
local entry = v local entry = v
if(entry.attributes~=nil)then entry = {entry} end if(entry.attributes~=nil)then entry = {entry} end
@@ -272,10 +268,10 @@ return {
end end
end end
end end
if(data["rules"]~=nil)then if(node["rules"]~=nil)then
if(data["rules"]["rule"]~=nil)then if(node["rules"]["rule"]~=nil)then
local tab = data["rules"]["rule"] local tab = node["rules"]["rule"]
if(data["rules"]["rule"].attributes~=nil)then tab = {data["rules"]["rule"]} end if(node["rules"]["rule"].attributes~=nil)then tab = {node["rules"]["rule"]} end
for k,v in pairs(tab)do for k,v in pairs(tab)do
if(XMLParser.xmlValue("pattern", v)~=nil)then if(XMLParser.xmlValue("pattern", v)~=nil)then
@@ -292,8 +288,8 @@ return {
Thread = function(base, basalt) Thread = function(base, basalt)
local object = { local object = {
setValuesByXMLData = function(self, data, renderContext) setValuesByXMLData = function(self, node, renderContext)
local script = XMLParser.xmlValue("start", data)~=nil local script = XMLParser.xmlValue("start", node)~=nil
if(script~=nil)then if(script~=nil)then
local f = load(script, nil, "t", renderContext.env) local f = load(script, nil, "t", renderContext.env)
self:start(f) self:start(f)
@@ -306,9 +302,9 @@ return {
Timer = function(base, basalt) Timer = function(base, basalt)
local object = { local object = {
setValuesByXMLData = function(self, data, renderContext) setValuesByXMLData = function(self, node, renderContext)
base.setValuesByXMLData(self, data, renderContext) base.setValuesByXMLData(self, node, renderContext)
registerFunctionEvents(self, data, { registerFunctionEvents(self, node, {
"onCall" "onCall"
}, renderContext) }, renderContext)
return self return self
@@ -319,10 +315,10 @@ return {
List = function(base, basalt) List = function(base, basalt)
local object = { local object = {
setValuesByXMLData = function(self, data, renderContext) setValuesByXMLData = function(self, node, renderContext)
base.setValuesByXMLData(self, data, renderContext) base.setValuesByXMLData(self, node, renderContext)
if(data["item"]~=nil)then if(node["item"]~=nil)then
local tab = data["item"] local tab = node["item"]
if(tab.attributes~=nil)then tab = {tab} end if(tab.attributes~=nil)then tab = {tab} end
for _,v in pairs(tab)do for _,v in pairs(tab)do
if(self:getType()~="Radio")then if(self:getType()~="Radio")then
@@ -338,8 +334,8 @@ return {
Dropdown = function(base, basalt) Dropdown = function(base, basalt)
local object = { local object = {
setValuesByXMLData = function(self, data, renderContext) setValuesByXMLData = function(self, node, renderContext)
base.setValuesByXMLData(self, data, renderContext) base.setValuesByXMLData(self, node, renderContext)
return self return self
end, end,
} }
@@ -348,10 +344,10 @@ return {
Radio = function(base, basalt) Radio = function(base, basalt)
local object = { local object = {
setValuesByXMLData = function(self, data, renderContext) setValuesByXMLData = function(self, node, renderContext)
base.setValuesByXMLData(self, data, renderContext) base.setValuesByXMLData(self, node, renderContext)
if(data["item"]~=nil)then if(node["item"]~=nil)then
local tab = data["item"] local tab = node["item"]
if(tab.attributes~=nil)then tab = {tab} end if(tab.attributes~=nil)then tab = {tab} end
for _,v in pairs(tab)do for _,v in pairs(tab)do
self:addItem(XMLParser.xmlValue("text", v), XMLParser.xmlValue("x", v), XMLParser.xmlValue("y", v), colors[XMLParser.xmlValue("bg", v)], colors[XMLParser.xmlValue("fg", v)]) self:addItem(XMLParser.xmlValue("text", v), XMLParser.xmlValue("x", v), XMLParser.xmlValue("y", v), colors[XMLParser.xmlValue("bg", v)], colors[XMLParser.xmlValue("fg", v)])
@@ -365,10 +361,10 @@ return {
Graph = function(base, basalt) Graph = function(base, basalt)
local object = { local object = {
setValuesByXMLData = function(self, data, renderContext) setValuesByXMLData = function(self, node, renderContext)
base.setValuesByXMLData(self, data, renderContext) base.setValuesByXMLData(self, node, renderContext)
if(data["item"]~=nil)then if(node["item"]~=nil)then
local tab = data["item"] local tab = node["item"]
if(tab.attributes~=nil)then tab = {tab} end if(tab.attributes~=nil)then tab = {tab} end
for _,_ in pairs(tab)do for _,_ in pairs(tab)do
self:addDataPoint(XMLParser.xmlValue("value")) self:addDataPoint(XMLParser.xmlValue("value"))
@@ -382,11 +378,11 @@ return {
Treeview = function(base, basalt) Treeview = function(base, basalt)
local object = { local object = {
setValuesByXMLData = function(self, data, renderContext) setValuesByXMLData = function(self, node, renderContext)
base.setValuesByXMLData(self, data, renderContext) base.setValuesByXMLData(self, node, renderContext)
local function addNode(node, data) local function addNode(node, node)
if(data["node"]~=nil)then if(node["node"]~=nil)then
local tab = data["node"] local tab = node["node"]
if(tab.attributes~=nil)then tab = {tab} end if(tab.attributes~=nil)then tab = {tab} end
for _,v in pairs(tab)do for _,v in pairs(tab)do
local n = node:addNode(XMLParser.xmlValue("text", v), colors[XMLParser.xmlValue("bg", v)], colors[XMLParser.xmlValue("fg", v)]) local n = node:addNode(XMLParser.xmlValue("text", v), colors[XMLParser.xmlValue("bg", v)], colors[XMLParser.xmlValue("fg", v)])
@@ -394,8 +390,8 @@ return {
end end
end end
end end
if(data["node"]~=nil)then if(node["node"]~=nil)then
local tab = data["node"] local tab = node["node"]
if(tab.attributes~=nil)then tab = {tab} end if(tab.attributes~=nil)then tab = {tab} end
for _,v in pairs(tab)do for _,v in pairs(tab)do
local n = self:addNode(XMLParser.xmlValue("text", v), colors[XMLParser.xmlValue("bg", v)], colors[XMLParser.xmlValue("fg", v)]) local n = self:addNode(XMLParser.xmlValue("text", v), colors[XMLParser.xmlValue("bg", v)], colors[XMLParser.xmlValue("fg", v)])

View File

@@ -30,9 +30,9 @@ return {
end) end)
end, end,
setValuesByXMLData = function(self, data, scripts) setValuesByXMLData = function(self, node, scripts)
base.setValuesByXMLData(self, data, scripts) base.setValuesByXMLData(self, node, scripts)
if(XMLParser.xmlValue("shadow", data)~=nil)then self:setShadow(XMLParser.xmlValue("shadow", data)) end if(XMLParser.xmlValue("shadow", node)~=nil)then self:setShadow(XMLParser.xmlValue("shadow", node)) end
return self return self
end end
} }

View File

@@ -109,11 +109,11 @@ return {
self:setDrawState("texture-base", false) self:setDrawState("texture-base", false)
end, end,
setValuesByXMLData = function(self, data, scripts) setValuesByXMLData = function(self, node, scripts)
base.setValuesByXMLData(self, data, scripts) base.setValuesByXMLData(self, node, scripts)
if(XMLParser.xmlValue("texture", data)~=nil)then self:addTexture(XMLParser.xmlValue("texture", data), XMLParser.xmlValue("animate", data)) end if(XMLParser.xmlValue("texture", node)~=nil)then self:addTexture(XMLParser.xmlValue("texture", node), XMLParser.xmlValue("animate", node)) end
if(XMLParser.xmlValue("textureMode", data)~=nil)then self:setTextureMode(XMLParser.xmlValue("textureMode", data)) end if(XMLParser.xmlValue("textureMode", node)~=nil)then self:setTextureMode(XMLParser.xmlValue("textureMode", node)) end
if(XMLParser.xmlValue("infinitePlay", data)~=nil)then self:setInfinitePlay(XMLParser.xmlValue("infinitePlay", data)) end if(XMLParser.xmlValue("infinitePlay", node)~=nil)then self:setInfinitePlay(XMLParser.xmlValue("infinitePlay", node)) end
return self return self
end end
} }