Модуль:Recursive concat
Для документации этого модуля может быть создана страница Модуль:Recursive concat/doc
local function wrap (tbl, separator)
local default_separator = separator
local concat = table.concat
local function serialise (value)
if type (value) ~= 'table' then
return tostring (value)
end
local separator = value.separator or default_separator
local serialised = {}
for i, val in ipairs (value) do
serialised [i] = serialise (val)
end
return concat (serialised, separator)
end
return setmetatable (tbl, {
__tostring = function (value)
return serialise (value)
end
})
end
local tbl = {
'A', 'B', 'C', 'D', separator = '; ',
{ 'e', 'f', 'g', 'h' },
'I'
}
return {
test = function (frame)
return tostring (wrap (tbl, ', '))
end
}