Layout Props #68
@@ -2,19 +2,21 @@ local tHex = require("tHex")
|
||||
local sub,find,reverse,rep,insert,len = string.sub,string.find,string.reverse,string.rep,table.insert,string.len
|
||||
|
||||
local function splitString(str, delimiter)
|
||||
local result = {}
|
||||
local results = {}
|
||||
local nResults = 1
|
||||
if str == "" or delimiter == "" then
|
||||
return result
|
||||
return results
|
||||
end
|
||||
local start = 1
|
||||
local delim_start, delim_end = find(str, delimiter, start)
|
||||
while delim_start do
|
||||
insert(result, sub(str, start, delim_start - 1))
|
||||
insert(results, sub(str, start, delim_start - 1))
|
||||
nResults = nResults + 1
|
||||
start = delim_end + 1
|
||||
delim_start, delim_end = find(str, delimiter, start)
|
||||
end
|
||||
insert(result, sub(str, start))
|
||||
return result
|
||||
insert(results, sub(str, start))
|
||||
return results, nResults
|
||||
end
|
||||
|
||||
local function removeTags(input)
|
||||
|
||||
@@ -205,17 +205,26 @@ return {
|
||||
setValuesByXMLData = function(self, data, scripts)
|
||||
scripts.env[self:getName()] = self
|
||||
for k,v in pairs(data:reactiveProperties()) do
|
||||
local sharedVariable = string.sub(v, 8, -1)
|
||||
local sharedObservers = scripts.env.sharedObservers
|
||||
if (sharedObservers[sharedVariable]) == nil then
|
||||
sharedObservers[sharedVariable] = {}
|
||||
local parts, nParts = utils.splitString(v, "%.")
|
||||
if (nParts ~= 2) then
|
||||
return
|
||||
end
|
||||
table.insert(
|
||||
sharedObservers[sharedVariable],
|
||||
function(val)
|
||||
self:updateValue(k, val)
|
||||
local tableName = parts[1]
|
||||
local entryName = parts[2]
|
||||
if (tableName == "props") then
|
||||
self:updateValue(k, scripts.env.props[entryName])
|
||||
elseif (tableName == "shared") then
|
||||
local sharedObservers = scripts.env.sharedObservers
|
||||
if (sharedObservers[entryName]) == nil then
|
||||
sharedObservers[entryName] = {}
|
||||
end
|
||||
)
|
||||
table.insert(
|
||||
sharedObservers[entryName],
|
||||
function(val)
|
||||
self:updateValue(k, val)
|
||||
end
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
self:updateSpecifiedValuesByXMLData(data, {
|
||||
@@ -332,11 +341,12 @@ return {
|
||||
return lastXMLReferences
|
||||
end,
|
||||
|
||||
loadLayout = function(self, path)
|
||||
loadLayout = function(self, path, props)
|
||||
if(fs.exists(path))then
|
||||
local scripts = {}
|
||||
scripts.env = _ENV
|
||||
scripts.env.basalt = basalt
|
||||
scripts.env.props = props
|
||||
scripts.env.shared = {}
|
||||
scripts.env.sharedObservers = {}
|
||||
local shared = {}
|
||||
@@ -430,12 +440,13 @@ return {
|
||||
return lastXMLReferences
|
||||
end,
|
||||
|
||||
loadLayout = function(self, path)
|
||||
loadLayout = function(self, path, props)
|
||||
if(fs.exists(path))then
|
||||
local scripts = {}
|
||||
scripts.env = _ENV
|
||||
scripts.env.basalt = basalt
|
||||
scripts.env.main = self
|
||||
scripts.env.props = props
|
||||
scripts.env.shared = {}
|
||||
scripts.env.sharedObservers = {}
|
||||
local shared = {}
|
||||
|
||||
Reference in New Issue
Block a user