summaryrefslogtreecommitdiff
path: root/globals.lua
diff options
context:
space:
mode:
authorthe lemons <citrons@mondecitronne.com>2022-08-27 01:23:20 -0500
committerthe lemons <citrons@mondecitronne.com>2022-08-27 01:23:20 -0500
commit8bb18a89060ecd581a06238ce3fa5d2170ee3a15 (patch)
tree25baba9d2c267b986adfe7af661b3cd99a32b346 /globals.lua
parent001272dbcbaa1110541e0666af3cea1c97bc199f (diff)
implement component system
Diffstat (limited to 'globals.lua')
-rw-r--r--globals.lua23
1 files changed, 23 insertions, 0 deletions
diff --git a/globals.lua b/globals.lua
new file mode 100644
index 0000000..6ee62a9
--- /dev/null
+++ b/globals.lua
@@ -0,0 +1,23 @@
+local gbl_mt = {}
+local decl = {}
+
+function gbl_mt:__index(k)
+ if not decl[k] then
+ error("unknown global: "..k, 2)
+ end
+ return rawget(self, k)
+end
+
+function gbl_mt:__newindex(k, v)
+ if not decl[k] then
+ error("unknown global: "..k, 2)
+ end
+ rawset(self, k, v)
+end
+
+function global(k, v)
+ decl[k] = true
+ rawset(_G, k, v)
+end
+
+setmetatable(_G, gbl_mt)