Unescaping of PO messages takes place after messages are concatenated to prevent issues if an escape sequence would break between lines

This commit is contained in:
Simon Rozman 2016-10-05 17:14:25 +02:00
parent e6254a78df
commit eb1b47758d

57
PO.js
View File

@ -116,7 +116,7 @@ function POCatalog()
// The line is empty => end of record. // The line is empty => end of record.
if (s == "" && "msgid" in rec) if (s == "" && "msgid" in rec)
return rec; break;
// The record is marked as "fuzzy". // The record is marked as "fuzzy".
if (s.search(regexp.fuzzy) != -1) { if (s.search(regexp.fuzzy) != -1) {
@ -137,15 +137,18 @@ function POCatalog()
if (m) { if (m) {
// Record found. // Record found.
if (m[1] != "") if (m[1] != "")
id = unescapePO(new String(m[1])); id = new String(m[1]);
if (id in rec) if (id in rec)
rec[id] += unescapePO(new String(m[2])); rec[id] += new String(m[2]);
else else
rec[id] = unescapePO(new String(m[2])); rec[id] = new String(m[2]);
continue; continue;
} }
} }
// Unescape messages now that they are concatenated.
for (id in rec)
rec[id] = unescapePO(rec[id]);
return "msgid" in rec ? rec : null; return "msgid" in rec ? rec : null;
} }
@ -276,8 +279,8 @@ POCatalog.prototype.save = function(path)
// SIG // MIIXmAYJKoZIhvcNAQcCoIIXiTCCF4UCAQExCzAJBgUr // SIG // MIIXmAYJKoZIhvcNAQcCoIIXiTCCF4UCAQExCzAJBgUr
// SIG // DgMCGgUAMGcGCisGAQQBgjcCAQSgWTBXMDIGCisGAQQB // SIG // DgMCGgUAMGcGCisGAQQBgjcCAQSgWTBXMDIGCisGAQQB
// SIG // gjcCAR4wJAIBAQQQEODJBs441BGiowAQS9NQkAIBAAIB // SIG // gjcCAR4wJAIBAQQQEODJBs441BGiowAQS9NQkAIBAAIB
// SIG // AAIBAAIBAAIBADAhMAkGBSsOAwIaBQAEFOIhxP5qxoG4 // SIG // AAIBAAIBAAIBADAhMAkGBSsOAwIaBQAEFC7NxHFCd9bB
// SIG // L/0Jpyvl/dheNPSioIISyDCCA+4wggNXoAMCAQICEH6T // SIG // rmh9aao27/VkB387oIISyDCCA+4wggNXoAMCAQICEH6T
// SIG // 6/t8xk5Z6kuad9QG/DswDQYJKoZIhvcNAQEFBQAwgYsx // SIG // 6/t8xk5Z6kuad9QG/DswDQYJKoZIhvcNAQEFBQAwgYsx
// SIG // CzAJBgNVBAYTAlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENh // SIG // CzAJBgNVBAYTAlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENh
// SIG // cGUxFDASBgNVBAcTC0R1cmJhbnZpbGxlMQ8wDQYDVQQK // SIG // cGUxFDASBgNVBAcTC0R1cmJhbnZpbGxlMQ8wDQYDVQQK
@ -431,30 +434,30 @@ POCatalog.prototype.save = function(path)
// SIG // OWQwCQYFKw4DAhoFAKBwMBAGCisGAQQBgjcCAQwxAjAA // SIG // OWQwCQYFKw4DAhoFAKBwMBAGCisGAQQBgjcCAQwxAjAA
// SIG // MBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisG // SIG // MBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisG
// SIG // AQQBgjcCAQsxDjAMBgorBgEEAYI3AgEVMCMGCSqGSIb3 // SIG // AQQBgjcCAQsxDjAMBgorBgEEAYI3AgEVMCMGCSqGSIb3
// SIG // DQEJBDEWBBQv+v/IHFo0ikn0Oyg+0/kbYp+LYzANBgkq // SIG // DQEJBDEWBBTCEEkbHEYF8BuDJFvZB4tVmRMXQjANBgkq
// SIG // hkiG9w0BAQEFAASCAQCA8tXTcsCRhT/fAQ86SQbjmM4A // SIG // hkiG9w0BAQEFAASCAQCSfqG1JdavPFBQt60dhTf2MTzJ
// SIG // qstaH7me1R9BrzZPp3WKU4m1Bkp1fFMOfw7KAmshhJSW // SIG // MjKnVmur3bOTsKd3f+cNcwlprzbKSoCSA7HcYwSzQbR6
// SIG // Njt0sytBHBfW3awalYFiizBbqQlDzTXkQ8wAfxx+BdOr // SIG // PGx7ifbE6HeICivLYEpOgdcYXUJ3zc2baRN0BjP0TVMN
// SIG // xsO/CiTHMEkR5fRjR8U0kPG3om0rkytzXR0jr9/xaEwh // SIG // vY0j4mK42K7z7Fv1UhDb1fzJ/ayUQxeF4/sVhhfUKv3N
// SIG // YhD02bez1Cre9IQE5aS3ZUssygM0XxhxVTotWnJmnmHu // SIG // t9Q4fdFPPH3lam9h/16sUL42DqTQGto+94tp7/XDLp+I
// SIG // wMaD8uMi7Pfyv1hqmkPwf5uOoOMAPC7gKUX39KF6Wm5q // SIG // bwlf25Rf+wJBpldAksXEXodbK3jHhio4YU1gTDMDIlh+
// SIG // LmSRBNxCaUxMqUhith7scDHvEL0i6JKSq+wZwuEJn9Ev // SIG // OkHr4gAeNKCZ34qoId1WpuEK0noJRcj6GKnsPiX7yiwv
// SIG // M0abwe4ltBPnFXagR+dmVbKboJuGTQ4ThKciofkGevlv // SIG // nQhunLXoW633DYIoAltUiNf5KYtPsbrpAF1hAnT2aCgG
// SIG // qo9zwpoloYICCzCCAgcGCSqGSIb3DQEJBjGCAfgwggH0 // SIG // 0aiKR3UdoYICCzCCAgcGCSqGSIb3DQEJBjGCAfgwggH0
// SIG // AgEBMHIwXjELMAkGA1UEBhMCVVMxHTAbBgNVBAoTFFN5 // SIG // AgEBMHIwXjELMAkGA1UEBhMCVVMxHTAbBgNVBAoTFFN5
// SIG // bWFudGVjIENvcnBvcmF0aW9uMTAwLgYDVQQDEydTeW1h // SIG // bWFudGVjIENvcnBvcmF0aW9uMTAwLgYDVQQDEydTeW1h
// SIG // bnRlYyBUaW1lIFN0YW1waW5nIFNlcnZpY2VzIENBIC0g // SIG // bnRlYyBUaW1lIFN0YW1waW5nIFNlcnZpY2VzIENBIC0g
// SIG // RzICEA7P9DjI/r81bgTYapgbGlAwCQYFKw4DAhoFAKBd // SIG // RzICEA7P9DjI/r81bgTYapgbGlAwCQYFKw4DAhoFAKBd
// SIG // MBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZI // SIG // MBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZI
// SIG // hvcNAQkFMQ8XDTE2MDkxOTA5MjQzM1owIwYJKoZIhvcN // SIG // hvcNAQkFMQ8XDTE2MTAwNTE1MTI0OVowIwYJKoZIhvcN
// SIG // AQkEMRYEFN0EJzHhISVqw9lvWoaKXBsGPpKhMA0GCSqG // SIG // AQkEMRYEFMiK7VIQt1sVeidPMdCkfReV6BHrMA0GCSqG
// SIG // SIb3DQEBAQUABIIBAAwhYaJpWoecig5IdF4Lh5hTGJ0m // SIG // SIb3DQEBAQUABIIBABQg3juU7zy7ol9TcyCHascUl3rm
// SIG // hJwoXe+hgvbU7qJbBKQWbP+iVSLmwRU7Er7To0sf/vrA // SIG // eEHttRyb4jUHBCJgtsXt1Tuqls6NNAe3DV+Me3/0gu+W
// SIG // SoFOTKR52GHvy/718YA18c2xvGJldnqfMmzS1RkuwlrL // SIG // YAzAvjwgGDNT7gKUx5UUH3b5pjsOlpvE1ARQkFUF9nEx
// SIG // 1Ca2/QvBmDvVHgZ8eHtVJ9GMpGnmtr3l30Wfs7PJy5XN // SIG // NPaKJ4Olpq1i/QrE0GsvkGjWYXhFJGxSNAV9VcIZdQjl
// SIG // g4i8E1manA41ohAuzrHYbrpW1h9D69os64oWh2Ey0s6O // SIG // MPfB/bYjxbQ1A3tpsIqoO9jhE2NXz8jsyIwQOqq1qi6b
// SIG // a3fcV/FjdnM3q7v4UK516KsdzECnGEc6IHdpbDw4ZYap // SIG // HJRnfAi/Hm/LYb3UN/2EpHlocgiE+oegFzkItv0IN0xx
// SIG // /VkHQ4lFhDqKv9bfG5yyjE0al1p6fkAc5GTdIe+P5KF9 // SIG // T23jnbVsrK9kzV9rlucYUJumvEARNY7HDzifdcqYunwi
// SIG // /5X3ez70MA/HQX7XvSLmHAI5tBjjbGtPv94VdOn2Po2N // SIG // DwRGN449hdY5BZwsSwH/pllBn44ViCuv0rPLLzOi4Zkf
// SIG // S+OQOx4= // SIG // 8o4Ovgs=
// SIG // End signature block // SIG // End signature block