summaryrefslogtreecommitdiff
path: root/class.lua
diff options
context:
space:
mode:
authorrebecca <ubq323@ubq323.website>2026-09-26 21:46:41 +0100
committerrebecca <ubq323@ubq323.website>2026-09-26 21:46:41 +0100
commit5107345463be25bc471274bc82c503ba2acdf5b4 (patch)
treef1f1a8aec7af43fbc37faf43bb710f2d456e5b2b /class.lua
parent753803362cd516fb461d57efba18f9a32916106d (diff)
class: add is(obj, cls)
Diffstat (limited to 'class.lua')
-rw-r--r--class.lua13
1 files changed, 12 insertions, 1 deletions
diff --git a/class.lua b/class.lua
index 22cf217..fda1e24 100644
--- a/class.lua
+++ b/class.lua
@@ -23,9 +23,20 @@ local function extend(Base)
return T
end
+local function is(obj, cls)
+ if not type(obj) == 'table' then return false end
+ local mt = getmetatable(obj).__index
+ while mt do
+ if rawequal(cls, mt) then return true end
+ mt = (getmetatable(mt) or {}).__index
+ end
+ return false
+end
+
return setmetatable({
class=class,
- extend=extend
+ extend=extend,
+ is=is,
},{__call=class})