Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local classes = {}
- local registry = {}
- function classes.createClass(classname)
- local class = {}
- class.__views = {}
- registry[classname] = class
- return class
- end
- function classes.createInstance(classname)
- local class = registry[classname];
- local inst = {}
- local meta = {}
- meta.__index = function(inst, key)
- return classes.indexClass(inst, class, key)
- end
- setmetatable(inst, meta)
- return inst
- end
- function classes.indexClass(inst, class, key)
- local view = getmetatable(inst).__view
- if view then
- local view = class.__views[view];
- if view[key] then
- return class[key]
- else
- error("not in view")
- end
- else
- return class[key]
- end
- end
- function classes.createView(classname, viewname)
- local class = registry[classname]
- local view = {}
- class.__views[viewname] = view
- return view
- end
- function classes.setInstanceView(instance, view)
- getmetatable(instance).__view = view
- end
- return classes
Add Comment
Please, Sign In to add comment