IDT handling improved
- Escaping support for TAB added - Check for line breaks in cells added
This commit is contained in:
parent
11614f64b3
commit
f6238f0895
79
IDT.js
79
IDT.js
@ -27,8 +27,6 @@ function escapeIDT(str)
|
|||||||
{
|
{
|
||||||
if (!escapeIDT_stat) {
|
if (!escapeIDT_stat) {
|
||||||
escapeIDT_stat = {
|
escapeIDT_stat = {
|
||||||
"re_lf": new RegExp("\n", "g"),
|
|
||||||
"re_cr": new RegExp("\r", "g"),
|
|
||||||
"re_tab": new RegExp("\t", "g")
|
"re_tab": new RegExp("\t", "g")
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@ -40,7 +38,7 @@ function escapeIDT(str)
|
|||||||
default: try { str = str.toString(); } catch (err) { return null; }
|
default: try { str = str.toString(); } catch (err) { return null; }
|
||||||
}
|
}
|
||||||
|
|
||||||
return str.replace(escapeIDT_stat.re_lf, "\\n").replace(escapeIDT_stat.re_cr, "\\r").replace(escapeIDT_stat.re_tab, "\\t");
|
return str.replace(escapeIDT_stat.re_tab, "\u0010");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -49,15 +47,7 @@ function unescapeIDT(str)
|
|||||||
{
|
{
|
||||||
if (!unescapeIDT_stat) {
|
if (!unescapeIDT_stat) {
|
||||||
unescapeIDT_stat = {
|
unescapeIDT_stat = {
|
||||||
"re_esc": new RegExp("\\\\(.)", "g"),
|
"re_tab": new RegExp("\u0010", "g")
|
||||||
"fn_esc": function($0, $1) {
|
|
||||||
switch ($1) {
|
|
||||||
case "n" : return "\n";
|
|
||||||
case "r" : return "\r";
|
|
||||||
case "t" : return "\t";
|
|
||||||
default : return $0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -68,7 +58,7 @@ function unescapeIDT(str)
|
|||||||
default: try { str = str.toString(); } catch (err) { return null; }
|
default: try { str = str.toString(); } catch (err) { return null; }
|
||||||
}
|
}
|
||||||
|
|
||||||
return str.replace(unescapeIDT_stat.re_esc, unescapeIDT_stat.fn_esc);
|
return str.replace(unescapeIDT_stat.re_tab, "\t");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -90,7 +80,7 @@ function IDT(path)
|
|||||||
|
|
||||||
var parseRow = function(row) {
|
var parseRow = function(row) {
|
||||||
for (var col in row)
|
for (var col in row)
|
||||||
row[col] = /*CRLF2LF(unescapeIDT(*/row[col]/*))*/;
|
row[col] = CRLF2LF(unescapeIDT(row[col]));
|
||||||
return row;
|
return row;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -304,9 +294,20 @@ IDT.prototype.save = function(path)
|
|||||||
if ("codepage" in this)
|
if ("codepage" in this)
|
||||||
dat.Charset = CodePageToId(this.codepage);
|
dat.Charset = CodePageToId(this.codepage);
|
||||||
|
|
||||||
|
var buildRow_stat = null;
|
||||||
var buildRow = function(row) {
|
var buildRow = function(row) {
|
||||||
for (var col in row)
|
if (!buildRow_stat) {
|
||||||
row[col] = /*escapeIDT(LF2CRLF(*/row[col]/*))*/;
|
buildRow_stat = {
|
||||||
|
"re_lf": new RegExp("\n", "g"),
|
||||||
|
"re_cr": new RegExp("\r", "g")
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var col in row) {
|
||||||
|
if (row[col].match(buildRow_stat.re_lf) || row[col].match(buildRow_stat.re_cr))
|
||||||
|
throw new Error("Cell \"" + row[col] + "\" contains line breaks. IDT cells cannot contain CR, nor LF.");
|
||||||
|
row[col] = escapeIDT(LF2CRLF(row[col]));
|
||||||
|
}
|
||||||
return row;
|
return row;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -338,8 +339,8 @@ IDT.prototype.save = function(path)
|
|||||||
// SIG // MIIXmAYJKoZIhvcNAQcCoIIXiTCCF4UCAQExCzAJBgUr
|
// SIG // MIIXmAYJKoZIhvcNAQcCoIIXiTCCF4UCAQExCzAJBgUr
|
||||||
// SIG // DgMCGgUAMGcGCisGAQQBgjcCAQSgWTBXMDIGCisGAQQB
|
// SIG // DgMCGgUAMGcGCisGAQQBgjcCAQSgWTBXMDIGCisGAQQB
|
||||||
// SIG // gjcCAR4wJAIBAQQQEODJBs441BGiowAQS9NQkAIBAAIB
|
// SIG // gjcCAR4wJAIBAQQQEODJBs441BGiowAQS9NQkAIBAAIB
|
||||||
// SIG // AAIBAAIBAAIBADAhMAkGBSsOAwIaBQAEFLsa75t64gpu
|
// SIG // AAIBAAIBAAIBADAhMAkGBSsOAwIaBQAEFJ/tikwss0Et
|
||||||
// SIG // 2OdK6hpOex2ar2DqoIISyDCCA+4wggNXoAMCAQICEH6T
|
// SIG // 3ttJAmu7jiM9K9f7oIISyDCCA+4wggNXoAMCAQICEH6T
|
||||||
// SIG // 6/t8xk5Z6kuad9QG/DswDQYJKoZIhvcNAQEFBQAwgYsx
|
// SIG // 6/t8xk5Z6kuad9QG/DswDQYJKoZIhvcNAQEFBQAwgYsx
|
||||||
// SIG // CzAJBgNVBAYTAlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENh
|
// SIG // CzAJBgNVBAYTAlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENh
|
||||||
// SIG // cGUxFDASBgNVBAcTC0R1cmJhbnZpbGxlMQ8wDQYDVQQK
|
// SIG // cGUxFDASBgNVBAcTC0R1cmJhbnZpbGxlMQ8wDQYDVQQK
|
||||||
@ -493,30 +494,30 @@ IDT.prototype.save = function(path)
|
|||||||
// SIG // OWQwCQYFKw4DAhoFAKBwMBAGCisGAQQBgjcCAQwxAjAA
|
// SIG // OWQwCQYFKw4DAhoFAKBwMBAGCisGAQQBgjcCAQwxAjAA
|
||||||
// SIG // MBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisG
|
// SIG // MBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisG
|
||||||
// SIG // AQQBgjcCAQsxDjAMBgorBgEEAYI3AgEVMCMGCSqGSIb3
|
// SIG // AQQBgjcCAQsxDjAMBgorBgEEAYI3AgEVMCMGCSqGSIb3
|
||||||
// SIG // DQEJBDEWBBRu5xBAe5kcb77O84IZ9XWRuoWXWTANBgkq
|
// SIG // DQEJBDEWBBRHhLxtUuUOHIaCFF3mNWhEmXCu7jANBgkq
|
||||||
// SIG // hkiG9w0BAQEFAASCAQByCKevP+rGuM9qUDq+tuDe4oGb
|
// SIG // hkiG9w0BAQEFAASCAQB2SwqhuJxnEDsmNiiSXGPGn4Cq
|
||||||
// SIG // qKim3ZgdbJxhX+RO36TWayaPBCTODcZmtIIXMYvBvymr
|
// SIG // G3nPi1puyMxpiTATyYWYqxqEB7gTnNKu95ZOEOMjGE5Y
|
||||||
// SIG // MafcGt9+IKbF1ul+6nu+Ae309fS+EQIPeIsdKn6Ahxy7
|
// SIG // ZXPsuPBnwGd6mfq/vW6b+InPhi4B1A+9xaY2jyP+6ctV
|
||||||
// SIG // pV8Myi6Mssf08fTPNpu1cqHiJboHrGGN1aBV2TqNTLj8
|
// SIG // sY7F/KEiHtE2t4IS61v3ZyeH20Z3NPTegWAOGREbM8J8
|
||||||
// SIG // D+6MLHgHl4xfnB1b3yA6CwU4BQzLDAcv1LPsyM+nCeLx
|
// SIG // iR1SvpyWEqf3SV0lGkPb2DDk0Ac9FRBxIN7N0yura+NY
|
||||||
// SIG // E/BRIaS7VqORznUst4XSwHQhDzhd+D4giulZQHUbIbQr
|
// SIG // s8M9lx01XqeegessTcWhGNVa21wcx360MHoSFVQeIimq
|
||||||
// SIG // /WYQDFIH2P0gDrHrC7VU1FNDD3i49GUHabIVB1MtO7uf
|
// SIG // OHt0MYSL8KN7Zc5N2H/FMN2+KvnUQONtRJ8+yhqKGwkw
|
||||||
// SIG // dqnH7FIGKD985BtuxLF8aKwnwWN14fLap1ah0zZePCxv
|
// SIG // jLYyZzEJ/NlIXmutNOiA4UFBaKbHFA9L+w1XZfUk2KEW
|
||||||
// SIG // 4dfx7nqgoYICCzCCAgcGCSqGSIb3DQEJBjGCAfgwggH0
|
// SIG // v4tgqRYToYICCzCCAgcGCSqGSIb3DQEJBjGCAfgwggH0
|
||||||
// SIG // AgEBMHIwXjELMAkGA1UEBhMCVVMxHTAbBgNVBAoTFFN5
|
// SIG // AgEBMHIwXjELMAkGA1UEBhMCVVMxHTAbBgNVBAoTFFN5
|
||||||
// SIG // bWFudGVjIENvcnBvcmF0aW9uMTAwLgYDVQQDEydTeW1h
|
// SIG // bWFudGVjIENvcnBvcmF0aW9uMTAwLgYDVQQDEydTeW1h
|
||||||
// SIG // bnRlYyBUaW1lIFN0YW1waW5nIFNlcnZpY2VzIENBIC0g
|
// SIG // bnRlYyBUaW1lIFN0YW1waW5nIFNlcnZpY2VzIENBIC0g
|
||||||
// SIG // RzICEA7P9DjI/r81bgTYapgbGlAwCQYFKw4DAhoFAKBd
|
// SIG // RzICEA7P9DjI/r81bgTYapgbGlAwCQYFKw4DAhoFAKBd
|
||||||
// SIG // MBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZI
|
// SIG // MBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZI
|
||||||
// SIG // hvcNAQkFMQ8XDTE2MTAwNTE1MjU0MlowIwYJKoZIhvcN
|
// SIG // hvcNAQkFMQ8XDTE2MTAwNTE3MzIxNFowIwYJKoZIhvcN
|
||||||
// SIG // AQkEMRYEFJEBTdR3yRRNSVqbpCrpNXyO8/1UMA0GCSqG
|
// SIG // AQkEMRYEFCCC7wLZ9oDJnDKDLAj9lf6crAQuMA0GCSqG
|
||||||
// SIG // SIb3DQEBAQUABIIBAFIuLB0zeuMize7hXz7DXDrKdex9
|
// SIG // SIb3DQEBAQUABIIBAHfJJeI+Ix08iPsrL1qBGIZ4LFvT
|
||||||
// SIG // /PuFKsKaQU1FFL9Vw68Wn2HAq+KmqQNo5LGmWXKZiO5x
|
// SIG // FtznVWoaLY7Kikx/zgYD8xkE7zIAq1Mm1VxjUXrX25oE
|
||||||
// SIG // sGyfd17mCessQKjzuCXe0cnKwHWYcQ8KFlWQmV1dbBZI
|
// SIG // dipImbIo6grg5ye/kw1ZO144NchC3h0vWSm9c468KdC6
|
||||||
// SIG // d1OfIDkjgD72/+Q2tLyjjKAjfZCDILnZHCOwediOS/Qs
|
// SIG // 1xQT5MRiL544NxIdd7DhcFCiJEDFRwRaV64wqTKAEfYX
|
||||||
// SIG // RPTLC0KS1ChA5BttKE3D3BYgujt2+cFU7ox9bW+VlkFj
|
// SIG // Quug47ElG/G3x7c5/JOqvKubxSJ52MQSbEnlQxGeNIad
|
||||||
// SIG // CwuzttwJmVgMMfX2T8bU9u3DNzL5/L6fCSKS53L/uZhL
|
// SIG // VQTnH8g9mjsyYL9x+Juqedj57kGpWP1VaztB/QHKVw3J
|
||||||
// SIG // 35ySvpyOYa1VER014WeXmBJaDXEOifdj5+/gTAVSortp
|
// SIG // 3GAAoMm4nelIZGdaMtZM0cvw60GbM08KffYdksd2szBN
|
||||||
// SIG // lVIJWb0DmIrYyTJhhLsBpIp6gwUsZelktIYh/qYkGe06
|
// SIG // dlW20tbIkE/WYTnU8CZ+cOOwylKkmUjEOD8HweSxekdt
|
||||||
// SIG // nWpHOM8=
|
// SIG // toW3WcI=
|
||||||
// SIG // End signature block
|
// SIG // End signature block
|
||||||
|
Loading…
x
Reference in New Issue
Block a user