+142
-37
lines changedFilter options
+142
-37
lines changed Original file line number Diff line number Diff line change
@@ -80,23 +80,26 @@ function guessType(ci, rows) {
80
80
return t;
81
81
}
82
82
83
+
const toJSON = JSON.stringify;
84
+
const onlyStrEsc = v => typeof v === 'string' ? toJSON(v) : v;
85
+
83
86
function getValParseExpr(ci, col) {
84
87
let { type } = col;
85
88
86
89
let rv = `r[${ci}]`;
87
90
88
91
let parseExpr =
89
-
type === T_DATE ? `new Date(${rv})` :
90
-
type === T_JSON ? `JSON.parse(${rv})` :
91
-
type === T_NUMBER ? `+${rv}` :
92
-
type[0] === T_BOOLEAN ? `${rv} === '${type.slice(2)}' ? true : false` :
92
+
type === T_DATE ? `new Date(${rv})` :
93
+
type === T_JSON ? `JSON.parse(${rv})` :
94
+
type === T_NUMBER ? `+${rv}` :
95
+
type[0] === T_BOOLEAN ? `${rv} === ${toJSON(type.slice(2))} ? true : false` :
93
96
rv;
94
97
95
98
let { repl } = col;
96
99
97
-
let nanExpr = repl.NaN !== void 0 && type === T_NUMBER ? `${rv} === 'NaN' ? ${repl.NaN} : ` : '';
98
-
let nullExpr = repl.null !== void 0 ? `${rv} === 'null' || ${rv} === 'NULL' ? ${repl.null} : ` : '';
99
-
let emptyExpr = repl.empty !== void 0 ? `${rv} === '' ? ${repl.empty} : ` : '';
100
+
let nanExpr = repl.NaN !== void 0 && type === T_NUMBER ? `${rv} === 'NaN' ? ${onlyStrEsc(repl.NaN)} : ` : '';
101
+
let nullExpr = repl.null !== void 0 ? `${rv} === 'null' || ${rv} === 'NULL' ? ${onlyStrEsc(repl.null)} : ` : '';
102
+
let emptyExpr = repl.empty !== void 0 ? `${rv} === '' ? ${onlyStrEsc(repl.empty)} : ` : '';
100
103
101
104
return `${emptyExpr} ${nullExpr} ${nanExpr} ${parseExpr}`;
102
105
}
@@ -137,7 +140,7 @@ function genToTypedRows(cols, objs = false, deep = false) {
137
140
colIdx++;
138
141
} while (paths.length > 0);
139
142
140
-
buf = JSON.stringify(tplObj).replace(/"¦(\d+)¦"/g, (m, ci) => getValParseExpr(+ci, cols[+ci]));
143
+
buf = toJSON(tplObj).replace(/"¦(\d+)¦"/g, (m, ci) => getValParseExpr(+ci, cols[+ci]));
141
144
}
142
145
else {
143
146
if (!objs && cols.every(c => c.type === T_STRING))
@@ -146,7 +149,7 @@ function genToTypedRows(cols, objs = false, deep = false) {
146
149
buf = objs ? '{' : '[';
147
150
148
151
cols.forEach((col, ci) => {
149
-
buf += objs ? `"${col.name.replaceAll('"', '\\"')}":` : '';
152
+
buf += objs ? `${toJSON(col.name)}:` : '';
150
153
let parseVal = getValParseExpr(ci, col);
151
154
buf += `${parseVal},`;
152
155
});
Original file line number Diff line number Diff line change
@@ -81,23 +81,26 @@ var uDSV = (function (exports) {
81
81
return t;
82
82
}
83
83
84
+
const toJSON = JSON.stringify;
85
+
const onlyStrEsc = v => typeof v === 'string' ? toJSON(v) : v;
86
+
84
87
function getValParseExpr(ci, col) {
85
88
let { type } = col;
86
89
87
90
let rv = `r[${ci}]`;
88
91
89
92
let parseExpr =
90
-
type === T_DATE ? `new Date(${rv})` :
91
-
type === T_JSON ? `JSON.parse(${rv})` :
92
-
type === T_NUMBER ? `+${rv}` :
93
-
type[0] === T_BOOLEAN ? `${rv} === '${type.slice(2)}' ? true : false` :
93
+
type === T_DATE ? `new Date(${rv})` :
94
+
type === T_JSON ? `JSON.parse(${rv})` :
95
+
type === T_NUMBER ? `+${rv}` :
96
+
type[0] === T_BOOLEAN ? `${rv} === ${toJSON(type.slice(2))} ? true : false` :
94
97
rv;
95
98
96
99
let { repl } = col;
97
100
98
-
let nanExpr = repl.NaN !== void 0 && type === T_NUMBER ? `${rv} === 'NaN' ? ${repl.NaN} : ` : '';
99
-
let nullExpr = repl.null !== void 0 ? `${rv} === 'null' || ${rv} === 'NULL' ? ${repl.null} : ` : '';
100
-
let emptyExpr = repl.empty !== void 0 ? `${rv} === '' ? ${repl.empty} : ` : '';
101
+
let nanExpr = repl.NaN !== void 0 && type === T_NUMBER ? `${rv} === 'NaN' ? ${onlyStrEsc(repl.NaN)} : ` : '';
102
+
let nullExpr = repl.null !== void 0 ? `${rv} === 'null' || ${rv} === 'NULL' ? ${onlyStrEsc(repl.null)} : ` : '';
103
+
let emptyExpr = repl.empty !== void 0 ? `${rv} === '' ? ${onlyStrEsc(repl.empty)} : ` : '';
101
104
102
105
return `${emptyExpr} ${nullExpr} ${nanExpr} ${parseExpr}`;
103
106
}
@@ -138,7 +141,7 @@ var uDSV = (function (exports) {
138
141
colIdx++;
139
142
} while (paths.length > 0);
140
143
141
-
buf = JSON.stringify(tplObj).replace(/"¦(\d+)¦"/g, (m, ci) => getValParseExpr(+ci, cols[+ci]));
144
+
buf = toJSON(tplObj).replace(/"¦(\d+)¦"/g, (m, ci) => getValParseExpr(+ci, cols[+ci]));
142
145
}
143
146
else {
144
147
if (!objs && cols.every(c => c.type === T_STRING))
@@ -147,7 +150,7 @@ var uDSV = (function (exports) {
147
150
buf = objs ? '{' : '[';
148
151
149
152
cols.forEach((col, ci) => {
150
-
buf += objs ? `"${col.name.replaceAll('"', '\\"')}":` : '';
153
+
buf += objs ? `${toJSON(col.name)}:` : '';
151
154
let parseVal = getValParseExpr(ci, col);
152
155
buf += `${parseVal},`;
153
156
});
Original file line number Diff line number Diff line change
@@ -78,23 +78,26 @@ function guessType(ci, rows) {
78
78
return t;
79
79
}
80
80
81
+
const toJSON = JSON.stringify;
82
+
const onlyStrEsc = v => typeof v === 'string' ? toJSON(v) : v;
83
+
81
84
function getValParseExpr(ci, col) {
82
85
let { type } = col;
83
86
84
87
let rv = `r[${ci}]`;
85
88
86
89
let parseExpr =
87
-
type === T_DATE ? `new Date(${rv})` :
88
-
type === T_JSON ? `JSON.parse(${rv})` :
89
-
type === T_NUMBER ? `+${rv}` :
90
-
type[0] === T_BOOLEAN ? `${rv} === '${type.slice(2)}' ? true : false` :
90
+
type === T_DATE ? `new Date(${rv})` :
91
+
type === T_JSON ? `JSON.parse(${rv})` :
92
+
type === T_NUMBER ? `+${rv}` :
93
+
type[0] === T_BOOLEAN ? `${rv} === ${toJSON(type.slice(2))} ? true : false` :
91
94
rv;
92
95
93
96
let { repl } = col;
94
97
95
-
let nanExpr = repl.NaN !== void 0 && type === T_NUMBER ? `${rv} === 'NaN' ? ${repl.NaN} : ` : '';
96
-
let nullExpr = repl.null !== void 0 ? `${rv} === 'null' || ${rv} === 'NULL' ? ${repl.null} : ` : '';
97
-
let emptyExpr = repl.empty !== void 0 ? `${rv} === '' ? ${repl.empty} : ` : '';
98
+
let nanExpr = repl.NaN !== void 0 && type === T_NUMBER ? `${rv} === 'NaN' ? ${onlyStrEsc(repl.NaN)} : ` : '';
99
+
let nullExpr = repl.null !== void 0 ? `${rv} === 'null' || ${rv} === 'NULL' ? ${onlyStrEsc(repl.null)} : ` : '';
100
+
let emptyExpr = repl.empty !== void 0 ? `${rv} === '' ? ${onlyStrEsc(repl.empty)} : ` : '';
98
101
99
102
return `${emptyExpr} ${nullExpr} ${nanExpr} ${parseExpr}`;
100
103
}
@@ -135,7 +138,7 @@ function genToTypedRows(cols, objs = false, deep = false) {
135
138
colIdx++;
136
139
} while (paths.length > 0);
137
140
138
-
buf = JSON.stringify(tplObj).replace(/"¦(\d+)¦"/g, (m, ci) => getValParseExpr(+ci, cols[+ci]));
141
+
buf = toJSON(tplObj).replace(/"¦(\d+)¦"/g, (m, ci) => getValParseExpr(+ci, cols[+ci]));
139
142
}
140
143
else {
141
144
if (!objs && cols.every(c => c.type === T_STRING))
@@ -144,7 +147,7 @@ function genToTypedRows(cols, objs = false, deep = false) {
144
147
buf = objs ? '{' : '[';
145
148
146
149
cols.forEach((col, ci) => {
147
-
buf += objs ? `"${col.name.replaceAll('"', '\\"')}":` : '';
150
+
buf += objs ? `${toJSON(col.name)}:` : '';
148
151
let parseVal = getValParseExpr(ci, col);
149
152
buf += `${parseVal},`;
150
153
});
You can’t perform that action at this time.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4