* add todo * refactor(#2886): multi instance: node class refactoring: extract links, *_git_status (#2944) * extract DirectoryLinkNode and FileLinkNode, move Node methods to children * temporarily move DirectoryNode methods into BaseNode for easier reviewing * move mostly unchanged DirectoryNode methods back to BaseNode * tidy * git.git_status_file takes an array * update git status of links * luacheck hack * safer git_status_dir * refactor(#2886): multi instance: node class refactoring: DirectoryNode:expand_or_collapse (#2957) move expand_or_collapse to DirectoryNode * refactor(#2886): multi instance: node group functions refactoring (#2959) * move last_group_node to DirectoryNode * move add BaseNode:as and more doc * revert parameter name changes * revert parameter name changes * add Class * move group methods into DN * tidy group methods * tidy group methods * tidy group methods * tidy group methods * parent is DirectoryNode * tidy expand all * BaseNode -> Node * move watcher to DirectoryNode * last_group_node is DirectoryNode only * simplify create-file * simplify parent * simplify collapse-all * simplify live-filter * style * more type safety
41 lines
774 B
Lua
41 lines
774 B
Lua
---Generic class, useful for inheritence.
|
|
---@class (exact) Class
|
|
---@field private __index? table
|
|
local Class = {}
|
|
|
|
---@param o Class?
|
|
---@return Class
|
|
function Class:new(o)
|
|
o = o or {}
|
|
|
|
setmetatable(o, self)
|
|
self.__index = self
|
|
|
|
return o
|
|
end
|
|
|
|
---Object is an instance of class
|
|
---This will start with the lowest class and loop over all the superclasses.
|
|
---@param class table
|
|
---@return boolean
|
|
function Class:is(class)
|
|
local mt = getmetatable(self)
|
|
while mt do
|
|
if mt == class then
|
|
return true
|
|
end
|
|
mt = getmetatable(mt)
|
|
end
|
|
return false
|
|
end
|
|
|
|
---Return object if it is an instance of class, otherwise nil
|
|
---@generic T
|
|
---@param class T
|
|
---@return `T`|nil
|
|
function Class:as(class)
|
|
return self:is(class) and self or nil
|
|
end
|
|
|
|
return Class
|