Module:Buffer: Difference between revisions
From Zoophilia Wiki
Jump to navigationJump to search
meta>Codehydro No edit summary |
meta>Codehydro (move out to meta) |
||
Line 21: | Line 21: | ||
return setmetatable({ | return setmetatable({ | ||
parent = self, | parent = self, | ||
getmetatable(self).check(v) | getmetatable(self).check(v) | ||
}, getmetatable(self)) | }, getmetatable(self)) | ||
end, | |||
_out = function(child, v2, outs) | |||
local parent = child.parent:_(child(v2)) | |||
if outs and outs > 0 then repeat | |||
child = parent | |||
parent = parent.parent | |||
outs = parent and parent:_(child()) and (outs - 1) or 0 | |||
until outs == 0 end | |||
return parent or child | |||
end | end | ||
}, | }, |
Revision as of 13:46, 30 January 2015
Documentation for this module may be created at Module:Buffer/doc
return setmetatable({ check = function(v) if v and v ~= true then if type(v) == 'table' then return getmetatable(v) and getmetatable(v).__tostring and tostring(v) or table.concat(v) end return v--i.e. numbers or strings end end, __index = { _ = function(self, v) local valid = getmetatable(self).check(v) if valid then table.insert(self, valid) end return self end, _in = function(self, v) return setmetatable({ parent = self, getmetatable(self).check(v) }, getmetatable(self)) end, _out = function(child, v2, outs) local parent = child.parent:_(child(v2)) if outs and outs > 0 then repeat child = parent parent = parent.parent outs = parent and parent:_(child()) and (outs - 1) or 0 until outs == 0 end return parent or child end }, __call = function(t, i) return table.concat(t, i) end }, {__call = function(self, v) return setmetatable({self.check(v)}, self) end })