csv.lua

changeset 3
5b24d66365ec
parent 0
0e2b5dc7ae34
equal deleted inserted replaced
2:5c9d6eba65bc 3:5b24d66365ec
10 10
11 local char_escape = lpeg.R"az" + lpeg.S"\\\r\n" + delim; 11 local char_escape = lpeg.R"az" + lpeg.S"\\\r\n" + delim;
12 local numeric_escape = (lpeg.R"09"^1)^-3; 12 local numeric_escape = (lpeg.R"09"^1)^-3;
13 local escape = (lpeg.P"\\" * (char_escape + numeric_escape)); 13 local escape = (lpeg.P"\\" * (char_escape + numeric_escape));
14 14
15 local value = (escape + (1-delim))^0; 15 local quoted_value = lpeg.P"\"" * ((1-lpeg.P"\"")^0) * lpeg.P"\"";
16 local value = quoted_value + (escape + (1-delim))^0;
16 17
17 local escape_map = setmetatable({ 18 local escape_map = setmetatable({
18 t = "\t", b = "\b", f = "\f"; 19 t = "\t", b = "\b", f = "\f";
19 n = "\n", r = "\r", v = "\v"; }, 20 n = "\n", r = "\r", v = "\v"; },
20 { __index = function (_, n) 21 { __index = function (_, n)

mercurial