IDT escape sequences honored now

This commit is contained in:
Simon Rozman 2016-09-13 22:38:24 +02:00
parent c0014cfa3d
commit f90c309741
2 changed files with 123 additions and 50 deletions

60
IDT.js
View File

@ -59,14 +59,20 @@ function IDT(path)
// Load file.
dat.LoadFromFile(path);
var parseRow = function(row) {
for (var col in row)
row[col] = CRLF2LF(_unC(row[col]));
return row;
}
// Parse column names.
this.columns = dat.ReadText(adReadLine).split("\t");
this.columns = parseRow(dat.ReadText(adReadLine).split("\t"));
// Parse column types.
this.types = dat.ReadText(adReadLine).split("\t");
this.types = parseRow(dat.ReadText(adReadLine).split("\t"));
// Parse meta info
var line = dat.ReadText(adReadLine).split("\t"), i = 0;
var line = parseRow(dat.ReadText(adReadLine).split("\t")), i = 0;
this.codepage = parseInt(line[i], 10);
if (isNaN(this.codepage)) this.codepage = 1252; else i++;
this.table = line[i++];
@ -92,7 +98,7 @@ function IDT(path)
// Parse data and build associative array.
this.data = new Array();
while (!dat.EOS) {
line = dat.ReadText(adReadLine).split("\t");
line = parseRow(dat.ReadText(adReadLine).split("\t"));
var key = new Array();
for (var i in this.key)
key.push(line[this.key[i]]);
@ -109,8 +115,8 @@ function IDT(path)
// SIG // MIIXmAYJKoZIhvcNAQcCoIIXiTCCF4UCAQExCzAJBgUr
// SIG // DgMCGgUAMGcGCisGAQQBgjcCAQSgWTBXMDIGCisGAQQB
// SIG // gjcCAR4wJAIBAQQQEODJBs441BGiowAQS9NQkAIBAAIB
// SIG // AAIBAAIBAAIBADAhMAkGBSsOAwIaBQAEFFXDaT+CYy7L
// SIG // VxwKY0RTIDJ0FrkuoIISyDCCA+4wggNXoAMCAQICEH6T
// SIG // AAIBAAIBAAIBADAhMAkGBSsOAwIaBQAEFIzK70oZpbT3
// SIG // eWu8CJm/CgPdWQ8QoIISyDCCA+4wggNXoAMCAQICEH6T
// SIG // 6/t8xk5Z6kuad9QG/DswDQYJKoZIhvcNAQEFBQAwgYsx
// SIG // CzAJBgNVBAYTAlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENh
// SIG // cGUxFDASBgNVBAcTC0R1cmJhbnZpbGxlMQ8wDQYDVQQK
@ -264,30 +270,30 @@ function IDT(path)
// SIG // OWQwCQYFKw4DAhoFAKBwMBAGCisGAQQBgjcCAQwxAjAA
// SIG // MBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisG
// SIG // AQQBgjcCAQsxDjAMBgorBgEEAYI3AgEVMCMGCSqGSIb3
// SIG // DQEJBDEWBBQXmtsxJWhfv7ln+YB/i37hDAHatDANBgkq
// SIG // hkiG9w0BAQEFAASCAQAK7WYp6JeF6stD/8MCWcCCU1sk
// SIG // DRktVYt3YaE5PV41iAmNojUY3Pm/zxIfMSgOi3hmldZO
// SIG // svFKK6o3ie7YroDJzqv49XeSsij0qHAfdA8kZSm0Ietz
// SIG // C70aeQvUfsX/jlGaEsk6xyS8rAtBcyTFzFy/NEslf1PO
// SIG // 2HtoSLGua/8ZHY/rwCJ9dSFW1Q1bddQw8uwOCtYi/B0O
// SIG // gb2ZoA9y/eMEpHWbpzgc3tSALa3WrUBy2NkicM9xDARY
// SIG // S52dsYGM6bIZ9/HU5Lb5QhDcyW+s7NZTyJQtr03p42U0
// SIG // 5WWVnq+Zsca/cFaFysaFxwjWKQ3URYadic7V6VJmeuoC
// SIG // Q6rZPsinoYICCzCCAgcGCSqGSIb3DQEJBjGCAfgwggH0
// SIG // DQEJBDEWBBQ9urLJdEAYIacDstqv21bt6YmprjANBgkq
// SIG // hkiG9w0BAQEFAASCAQBxtt+dMUDvOR/aMOLpj4JSakZZ
// SIG // e15iIsdtM0pxbx5BpFFLGJzZzpNrhJyny6yt0I+j2m8u
// SIG // 7rLREPgZgpDGpwjdAs6+qB6RLpydilT1sqLOzkkLiTtf
// SIG // k7MS9WAMvuOejqx/LF+3Cuf/g5KfLrPemm9dhKbwRn+D
// SIG // BD1ROGqsI1iZw39oiGLRlBTSrRRA7WG188plapnOnmKB
// SIG // +e+uQkje9Jq1R+ivvJEKKhuKWMKRXVfDJ++svyf7lgPO
// SIG // b2toAdO3jNbnigYiJCidMwubh3ZsspDwI9LSYDxdRuN9
// SIG // o0giFTmE3tGyIs6y++jK2sSViQhFSIesPPlUhWlEFf45
// SIG // cshUBBbsoYICCzCCAgcGCSqGSIb3DQEJBjGCAfgwggH0
// SIG // AgEBMHIwXjELMAkGA1UEBhMCVVMxHTAbBgNVBAoTFFN5
// SIG // bWFudGVjIENvcnBvcmF0aW9uMTAwLgYDVQQDEydTeW1h
// SIG // bnRlYyBUaW1lIFN0YW1waW5nIFNlcnZpY2VzIENBIC0g
// SIG // RzICEA7P9DjI/r81bgTYapgbGlAwCQYFKw4DAhoFAKBd
// SIG // MBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZI
// SIG // hvcNAQkFMQ8XDTE2MDkxMzE5MTYzMFowIwYJKoZIhvcN
// SIG // AQkEMRYEFKJrjxHhMcRHIHE0xSovNF/6HrbgMA0GCSqG
// SIG // SIb3DQEBAQUABIIBAAJUluyL0fGvb3NTfCyOnxE3OMya
// SIG // lkBBfy6IG0Z6Cu+YLj5xUan6OWJnGbhfRhKN8sfhI2Ls
// SIG // X7M36nwX4Ze3qj9qVUsC0o5eDnKSK6Wevkkof1qYeR93
// SIG // dEg/lawYd9tMeWCNamtt+mGv8azAi+deZDK4l765UsKj
// SIG // KUrHN4NTgTX/p9eIHhZPlP+8vAKCqIkNQrKLCTkj5pLK
// SIG // swhkiGZYOtD5JrECIdjFZQM3+y8z49bMIxzDWhi21bb7
// SIG // B+sWrwaDsNgkZU5pydrycqsWGtqO2Lr0BboMDdXOHMMR
// SIG // Qw0YDHS6OBU3oW8Q++FPkWOHbSw0IS0QMheLFrpmfQu/
// SIG // FD7Lt/g=
// SIG // hvcNAQkFMQ8XDTE2MDkxMzIwMzY1MFowIwYJKoZIhvcN
// SIG // AQkEMRYEFJWlsNZ130fL25ygSgivrGgAznHeMA0GCSqG
// SIG // SIb3DQEBAQUABIIBAB0Ze3sWzorS3bbWSuG8INLYMKit
// SIG // +yL35GlLg1x9Th0BF/v1okcGIKxc9kDiashyl7SFP2X+
// SIG // LRm3NOOUM1+AETU7DNnDk9T6uFMgAE/z8m6neNKuBLUH
// SIG // 5C6jCCqkXTSYmVLywXBWeLvb0mFvepWZGPz3W+ecDF9T
// SIG // 3WaDXE8e4V0x7ov2ZQCsibwawDaBckgkQbXNifpuHYX8
// SIG // crFFG2+Z4M9gVouCOkaMiLDGLKlenr+wxt4jmtw1tVXz
// SIG // f6/cz14Oeh/gBzJA+Fs/2TEjqJnd/dRi4xoRO9IXGcJ4
// SIG // TCdWlCDLHPOjoeiifFy20ci1CnbndNGJiEihWigdVX1e
// SIG // sSGj400=
// SIG // End signature block

113
String.js
View File

@ -41,6 +41,33 @@ function _S(str)
}
var _unC_stat = null;
function _unC(str)
{
if (!_unC_stat) {
_unC_stat = {
"re_bslash": new RegExp("\\\\\\\\", "g"),
"re_bs": new RegExp("\\\\b", "g"),
"re_ff": new RegExp("\\\\f", "g"),
"re_lf": new RegExp("\\\\n", "g"),
"re_cr": new RegExp("\\\\r", "g"),
"re_tab": new RegExp("\\\\t", "g"),
"re_apost": new RegExp("\\\\\\\'", "g"),
"re_quot": new RegExp("\\\\\\\"", "g")
};
}
if (str == null) return null;
switch (typeof(str)) {
case "string": break;
case "undefined": return null;
default: try { str = str.toString(); } catch (err) { return null; }
}
return str.replace(_unC_stat.re_bslash, "\\").replace(_unC_stat.re_bs, "\b").replace(_unC_stat.re_ff, "\f").replace(_unC_stat.re_lf, "\n").replace(_unC_stat.re_cr, "\r").replace(_unC_stat.re_tab, "\t").replace(_unC_stat.re_apost, "\'").replace(_unC_stat.re_quot, "\"");
}
var _PO_stat = null;
function _PO(str)
{
@ -67,6 +94,46 @@ function _PO(str)
}
var LF2CRLF_stat = null;
function LF2CRLF(str)
{
if (!LF2CRLF_stat) {
LF2CRLF_stat = {
"re_lf": new RegExp("\n", "g")
};
}
if (str == null) return null;
switch (typeof(str)) {
case "string": break;
case "undefined": return null;
default: try { str = str.toString(); } catch (err) { return null; }
}
return str.replace(LF2CRLF_stat.re_lf, "\r\n");
}
var CRLF2LF_stat = null;
function CRLF2LF(str)
{
if (!CRLF2LF_stat) {
CRLF2LF_stat = {
"re_crlf": new RegExp("\r\n", "g")
};
}
if (str == null) return null;
switch (typeof(str)) {
case "string": break;
case "undefined": return null;
default: try { str = str.toString(); } catch (err) { return null; }
}
return str.replace(CRLF2LF_stat.re_crlf, "\n");
}
var Trim_stat = null;
function Trim(str)
{
@ -109,8 +176,8 @@ function Time2Str(date)
// SIG // MIIXmAYJKoZIhvcNAQcCoIIXiTCCF4UCAQExCzAJBgUr
// SIG // DgMCGgUAMGcGCisGAQQBgjcCAQSgWTBXMDIGCisGAQQB
// SIG // gjcCAR4wJAIBAQQQEODJBs441BGiowAQS9NQkAIBAAIB
// SIG // AAIBAAIBAAIBADAhMAkGBSsOAwIaBQAEFDxPoB8u1jme
// SIG // KWirJ5YJ3N+8s9wMoIISyDCCA+4wggNXoAMCAQICEH6T
// SIG // AAIBAAIBAAIBADAhMAkGBSsOAwIaBQAEFAeDnfqOmt9p
// SIG // AhLQCR5jMimldg9JoIISyDCCA+4wggNXoAMCAQICEH6T
// SIG // 6/t8xk5Z6kuad9QG/DswDQYJKoZIhvcNAQEFBQAwgYsx
// SIG // CzAJBgNVBAYTAlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENh
// SIG // cGUxFDASBgNVBAcTC0R1cmJhbnZpbGxlMQ8wDQYDVQQK
@ -264,30 +331,30 @@ function Time2Str(date)
// SIG // OWQwCQYFKw4DAhoFAKBwMBAGCisGAQQBgjcCAQwxAjAA
// SIG // MBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisG
// SIG // AQQBgjcCAQsxDjAMBgorBgEEAYI3AgEVMCMGCSqGSIb3
// SIG // DQEJBDEWBBSipOV5yboG0OsgwNNLnFzwwncvXTANBgkq
// SIG // hkiG9w0BAQEFAASCAQCTeZ1p4YgRrrg1Grr2eGvnk+Jt
// SIG // +LVBTDo7+J8gb38Vw9ChGPyZMdJSVNyTyIo2yuUC2KE7
// SIG // 5epedbkLZzZtEkxZ8dKT4FoRn9tjKDbT3lAY68KTx6b6
// SIG // VfQ1T9QuNPnirAnEPFGZNeinlkIaP9MRHG6Wsz2WEw0h
// SIG // dYQYAPnptTyTZZJut28Nv/AZlB8YmJYuAHFNzpscebHh
// SIG // aXll4sbzGCoY+WYlLDpiI45qEQ9ygqUu0TpBrfE1woGv
// SIG // GUEhCDJEshaUy5VL7CDnyncyTevi4EuvkBR40H5GBUNa
// SIG // CAuamCX8gvpHJ44HAXYm/YPL51G3YCtD3NMlfIQk4Uuo
// SIG // 9DkcJ7oJoYICCzCCAgcGCSqGSIb3DQEJBjGCAfgwggH0
// SIG // DQEJBDEWBBQF9xTwheYUE07W9ojYP6cQ65BL4DANBgkq
// SIG // hkiG9w0BAQEFAASCAQA4P7l1VKZV2FOSE8SiAqkpP9AN
// SIG // Fmw+upzxB/IVRm2QN1/6jXNvXTv7Ntv5j4bwwJIDpphD
// SIG // EAHJgRk7Mz6TWsreEBuAtl1G0D0YLiBPaAjOFqSQdvF0
// SIG // ANZe/ZftRBOxOu53Psqs9ISCftdL+4RqtBI6Mq420vGu
// SIG // oG8+365ROjfDbdjb1gLvNJugt6sRhY/od5m6PQ5Akvvq
// SIG // 9baIeZ8S+4jst6codVGbKCW70yf5kb6dk1qDHi+qIriZ
// SIG // /demahpXF8VfZmaHkZQxZ7P8fgorLreeCN8WDz5kvcJK
// SIG // vvNnA3RYlyfQfUoDxCT97YbBCGpC3JkvwwotVkNdMRO/
// SIG // O7oXqx/FoYICCzCCAgcGCSqGSIb3DQEJBjGCAfgwggH0
// SIG // AgEBMHIwXjELMAkGA1UEBhMCVVMxHTAbBgNVBAoTFFN5
// SIG // bWFudGVjIENvcnBvcmF0aW9uMTAwLgYDVQQDEydTeW1h
// SIG // bnRlYyBUaW1lIFN0YW1waW5nIFNlcnZpY2VzIENBIC0g
// SIG // RzICEA7P9DjI/r81bgTYapgbGlAwCQYFKw4DAhoFAKBd
// SIG // MBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZI
// SIG // hvcNAQkFMQ8XDTE2MDkxMzE5MTY0MlowIwYJKoZIhvcN
// SIG // AQkEMRYEFEaKcXeI+Zi7cHwo0XYq+WHJIOIoMA0GCSqG
// SIG // SIb3DQEBAQUABIIBAAlvGR/5ZTGIFuPTB85m5WvJhZqy
// SIG // jMQtiFY98x5DVTv4le9YwEl3BNdsqe3evL1z+Kg9ROIv
// SIG // iHkTVcjx5EfdYkpUbIRiyjLiE5SbHpchXOQmWkGypOSE
// SIG // MVTTl9+W6odMY3o6vMjXfJzImejPq/IqSZNGIo7gP/1Q
// SIG // SaV0GOr05fuxfgklgSzVwHBEKKjUtCoFvbjvTfsPFSo8
// SIG // 3gLp6pqcmuxcYslbfMu3ix32PHtvw0VECcWVjPOmorrI
// SIG // X4mx7QvHXokHXs/T+kG8jXmiAq4KzdU21hdjeBtFZaW6
// SIG // Jt1Es2FKQAFqwsqeSxHfuDNC7s2jmPLpU2dMHQwvD3H/
// SIG // fc8JMgU=
// SIG // hvcNAQkFMQ8XDTE2MDkxMzIwMzY1NVowIwYJKoZIhvcN
// SIG // AQkEMRYEFK+cD2UrToWwTI9eM7xDU93+2LCwMA0GCSqG
// SIG // SIb3DQEBAQUABIIBAHkLlrBRJx/ABVWCY121jz0LgG4s
// SIG // 5ylbGkEnfnE626UUfv+1fy806ePpRmC+TZf95ufOF18j
// SIG // BRkHzChtbWZgxRA7z50m6jlc49aQ29LAPVQ1s7QwDfO/
// SIG // mXU9jZ/dYj74Nd0TBTj6d6O2O9l6bwUIFbMCMp+HwV2t
// SIG // IBAFRwLwysxCXSMMebbSpBk9ferY0nz3FA3s+OOktVaA
// SIG // vs1OTdEkqtW/8/hiwvDimbYqANyzvKT/LHraz1uQ/ITp
// SIG // WwmaIaL/RBsMzS6Ez5hK7gOD7SJiyePkPKXX2hCqZZUc
// SIG // r7tuVfwyot3qdbb7BLQpMtiwScsbghAFvPJlS3aAZg0r
// SIG // HYkVuCA=
// SIG // End signature block