From c93d6bf91f9ed5eb3db499a4b8dd3c8db056a122 Mon Sep 17 00:00:00 2001 From: Sabine Lim Date: Mon, 8 May 2023 17:22:05 +1000 Subject: [PATCH] Add metatable to Frame --- Basalt/plugins/xml.lua | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Basalt/plugins/xml.lua b/Basalt/plugins/xml.lua index 1de34e3..ae8567f 100644 --- a/Basalt/plugins/xml.lua +++ b/Basalt/plugins/xml.lua @@ -438,6 +438,22 @@ return { scripts.env.basalt = basalt scripts.env.main = self scripts.env.shared = {} + scripts.env.sharedObservers = {} + local shared = {} + setmetatable(scripts.env.shared, { + __index = function(_, k) + return shared[k] + end, + __newindex = function(_, k, v) + local observers = scripts.env.sharedObservers[k] + if observers ~= nil then + for _,observer in pairs(observers) do + observer(v) + end + end + shared[k] = v + end + }) local f = fs.open(path, "r") local data = XmlParser:ParseXmlText(f.readAll()) f.close()