Module:Sandbox/Carn/TextSnippets explained

--

local snippet = --"a" + "z" = is there space or not 0 1 2 3 0 - - - + 1 - - + + 2 - + + + 3 + + + +--

function snippet:dress (var) if not self or type(self) ~= "table" then return end -- todo: обработка ошибки -- в случае если на входе уже объект нужного класса, возвращаем его же if type(var)

"table" and getmetatable(var)

self then return var end var = var or if type(var) ~= "table" and (type(var)

"string" or type(var)

"number") then local text = var var = elseif type(var) ~= "table" then return end -- обработчик ошибок без входящего параметра status и без создания замыканий сюда бы setmetatable(var,self) return varend

function snippet.__eq (pre, aft) return pre.text

aft.value and pre.a

aft.a and pre.z

aft.zend

function snippet.__add (pre,aft) pre=snippet:dress(pre) aft=snippet:dress(aft) if pre

empty or pre.text

"" then return aft end if aft

empty or aft.text

"" then return pre end local sill = pre.z + aft.a local output = return snippet:dress(output)end

function snippet.__tostring (table) if type(table)

"table" then return table.text endend

return snippet