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 = {
new = function(name)
return {
value = nil,
name = name,
value = nil,
children = {},
attributes = {},

View File

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

View File

@@ -338,11 +338,11 @@ return {
end
end,
setValuesByXMLData = function(self, data, scripts)
base.setValuesByXMLData(self, data, 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 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 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)
setValuesByXMLData = function(self, node, scripts)
base.setValuesByXMLData(self, node, scripts)
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", 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", node), XMLParser.xmlValue("animateYOffset", node), XMLParser.xmlValue("animateDuration", node), XMLParser.xmlValue("animateTimeOffset", node), XMLParser.xmlValue("animateMode", node)
if(animX~=nil and animY~=nil)then
self:animatePosition(animX, animY, animateDuration, animeteTimeOffset, animateMode)
end

View File

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

View File

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

View File

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

View File

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