How about something like this?
function dump(row, parameters)
local separator = (parameter or {}).separator or ','
local res = {}
for i, value in ipairs(row) do
local value = tostring(value)
if value:find(separator, 1, true) or value:find('"', 1, true) then
res[i] = ('"%s"'):format(value:gsub('"', '""'))
else
res[i] = value
end
end
return table.concat(res, separator)
end