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