Fix handling of date/datetime fields that are null.
diff --git a/render.js b/render.js
index 215a44e..07d5556 100644
--- a/render.js
+++ b/render.js
@@ -98,6 +98,7 @@
for (var coli in row) {
impossible[coli] += 0;
var cell = row[coli];
+ if (cell == '' || cell == null) continue;
var d = myParseDate(cell);
if (isNaN(d)) {
impossible[coli] |= CANT_DATE | CANT_DATETIME;
@@ -118,12 +119,12 @@
var imp = impossible[coli];
if (!(imp & CANT_BOOL)) {
types[coli] = T_BOOL;
- } else if (!(imp & CANT_NUM)) {
- types[coli] = T_NUM;
} else if (!(imp & CANT_DATE)) {
types[coli] = T_DATE;
} else if (!(imp & CANT_DATETIME)) {
types[coli] = T_DATETIME;
+ } else if (!(imp & CANT_NUM)) {
+ types[coli] = T_NUM;
} else {
types[coli] = T_STRING;
}
@@ -135,6 +136,8 @@
var DATE_RE1 = RegExp('^(\\d{4})[-/](\\d{1,2})(?:[-/](\\d{1,2})(?:[T\\s](\\d{1,2}):(\\d\\d)(?::(\\d\\d))?)?)?$');
var DATE_RE2 = RegExp('^Date\\((\\d+),(\\d+),(\\d+)(?:,(\\d+),(\\d+)(?:,(\\d+))?)?\\)$');
function myParseDate(s) {
+ if (s == null) return s;
+ if (s && s.getDate) return s;
var g = DATE_RE1.exec(s) || DATE_RE2.exec(s);
if (g) {
return new Date(g[1], g[2]-1, g[3] || 1,
@@ -420,9 +423,9 @@
var out = []
for (var coli in types) {
if (types[coli] === T_DATE) {
- out.push(row[coli].strftime('%Y-%m-%d'));
+ out.push(row[coli].strftime('%Y-%m-%d') || '');
} else if (types[coli] === T_DATETIME) {
- out.push(row[coli].strftime('%Y-%m-%d %H:%M:%S'));
+ out.push(row[coli].strftime('%Y-%m-%d %H:%M:%S') || '');
} else {
out.push((row[coli] + '') || '(none)');
}