parent
19e10d6601
commit
a46532814f
@ -1,68 +0,0 @@ |
|||||||
-- |
|
||||||
-- classic |
|
||||||
-- |
|
||||||
-- Copyright (c) 2014, rxi |
|
||||||
-- |
|
||||||
-- This module is free software; you can redistribute it and/or modify it under |
|
||||||
-- the terms of the MIT license. See LICENSE for details. |
|
||||||
-- |
|
||||||
|
|
||||||
|
|
||||||
local Object = {} |
|
||||||
Object.__index = Object |
|
||||||
|
|
||||||
|
|
||||||
function Object:new() |
|
||||||
end |
|
||||||
|
|
||||||
|
|
||||||
function Object:extend() |
|
||||||
local cls = {} |
|
||||||
for k, v in pairs(self) do |
|
||||||
if k:find("__") == 1 then |
|
||||||
cls[k] = v |
|
||||||
end |
|
||||||
end |
|
||||||
cls.__index = cls |
|
||||||
cls.super = self |
|
||||||
setmetatable(cls, self) |
|
||||||
return cls |
|
||||||
end |
|
||||||
|
|
||||||
|
|
||||||
function Object:implement(...) |
|
||||||
for _, cls in pairs({...}) do |
|
||||||
for k, v in pairs(cls) do |
|
||||||
if self[k] == nil and type(v) == "function" then |
|
||||||
self[k] = v |
|
||||||
end |
|
||||||
end |
|
||||||
end |
|
||||||
end |
|
||||||
|
|
||||||
|
|
||||||
function Object:is(T) |
|
||||||
local mt = getmetatable(self) |
|
||||||
while mt do |
|
||||||
if mt == T then |
|
||||||
return true |
|
||||||
end |
|
||||||
mt = getmetatable(mt) |
|
||||||
end |
|
||||||
return false |
|
||||||
end |
|
||||||
|
|
||||||
|
|
||||||
function Object:__tostring() |
|
||||||
return "Object" |
|
||||||
end |
|
||||||
|
|
||||||
|
|
||||||
function Object:__call(...) |
|
||||||
local obj = setmetatable({}, self) |
|
||||||
obj:new(...) |
|
||||||
return obj |
|
||||||
end |
|
||||||
|
|
||||||
|
|
||||||
return Object |
|
Loading…
Reference in new issue