From f90c3097415b1fde87a314deb0c4669d35b84388 Mon Sep 17 00:00:00 2001 From: Simon Rozman Date: Tue, 13 Sep 2016 22:38:24 +0200 Subject: [PATCH] IDT escape sequences honored now --- IDT.js | 60 ++++++++++++++++------------- String.js | 113 +++++++++++++++++++++++++++++++++++++++++++----------- 2 files changed, 123 insertions(+), 50 deletions(-) diff --git a/IDT.js b/IDT.js index a3a5476..6162f5f 100644 --- a/IDT.js +++ b/IDT.js @@ -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 diff --git a/String.js b/String.js index a01f07b..f3098f1 100644 --- a/String.js +++ b/String.js @@ -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