Module:Buffer: Difference between revisions
From Zoophilia Wiki
Jump to navigationJump to search
meta>Codehydro (lovely little idea, no?) |
meta>Codehydro (convert non-nil/boolean to string) |
||
Line 1: | Line 1: | ||
return setmetatable({ | return setmetatable({ | ||
__index = { | __index = { | ||
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, | |||
_ = function(self, v) | _ = function(self, v) | ||
table.insert(self, self.check(v)) | |||
return self | return self | ||
end, | end, | ||
Line 19: | Line 27: | ||
return parent or child | return parent or child | ||
end, | end, | ||
v | self.check(v) | ||
}, getmetatable(self)) | }, getmetatable(self)) | ||
end | end | ||
Line 28: | Line 36: | ||
}, | }, | ||
{__call = function(self, v) | {__call = function(self, v) | ||
return setmetatable({v | return setmetatable({self.check(v)}, self) | ||
end | end | ||
}) | }) |
Revision as of 02:58, 30 January 2015
Documentation for this module may be created at Module:Buffer/doc
return setmetatable({ __index = { 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, _ = function(self, v) table.insert(self, self.check(v)) return self end, _in = function(self, v) return setmetatable({ parent = self, _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, self.check(v) }, getmetatable(self)) end }, __call = function(t, i) return table.concat(t, i) end }, {__call = function(self, v) return setmetatable({self.check(v)}, self) end })