From b2225f1e7ee1c86ac1af1a931baa5b8b7f86e3d1 Mon Sep 17 00:00:00 2001 From: Andris Reinman Date: Sat, 25 Oct 2014 14:42:39 +0300 Subject: [PATCH] =?UTF-8?q?Fixes=20#26=20=E2=80=93=20ensure=20that=20a=20w?= =?UTF-8?q?ord=20that=20ends=20with=20non-ascii=20char=20does=20not=20incl?= =?UTF-8?q?ude=20trailing=20space.=20Bumped=20version=20to=200.2.18?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/mimelib.js | 2 +- package.json | 2 +- test/mimelib.js | 11 ++++++++--- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/lib/mimelib.js b/lib/mimelib.js index 81591d5..7710fd3 100644 --- a/lib/mimelib.js +++ b/lib/mimelib.js @@ -381,7 +381,7 @@ module.exports.mimeFunctions = { var decodedValue = convert((value || ""), "utf-8", fromCharset).toString("utf-8"), encodedValue; - encodedValue = decodedValue.replace(/([^\s\u0080-\uFFFF]*[\u0080-\uFFFF]+[^\s\u0080-\uFFFF]*(?:\s+[^\s\u0080-\uFFFF]*[\u0080-\uFFFF]+[^\s\u0080-\uFFFF]*\s*)?)+/g, (function(str) { + encodedValue = decodedValue.replace(/([^\s\u0080-\uFFFF]*[\u0080-\uFFFF]+[^\s\u0080-\uFFFF]*(?:\s+[^\s\u0080-\uFFFF]*[\u0080-\uFFFF]+[^\s\u0080-\uFFFF]*\s*)?)+(?=\s|$)/g, (function(str) { return str.length ? this.encodeMimeWord(str, encoding || "Q", maxLength, toCharset) : ""; }).bind(this)); diff --git a/package.json b/package.json index bd315f6..4a51d1a 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "mimelib", "description": "MIME functions to encode/decode e-mails etc.", - "version": "0.2.17", + "version": "0.2.18", "author": "Andris Reinman", "homepage": "http://github.com/andris9/mimelib", "maintainers": [ diff --git a/test/mimelib.js b/test/mimelib.js index 6d1c2b2..4075718 100644 --- a/test/mimelib.js +++ b/test/mimelib.js @@ -139,17 +139,22 @@ exports["Mime Words"] = { "Ascii range": function(test){ var input1 = "метель\" вьюга", input2 = "метель'вьюга", + input3 = 'Verão você vai adorar!', output1 = "=?UTF-8?Q?=D0=BC=D0=B5=D1=82=D0=B5=D0=BB=D1=8C=22_?= =?UTF-8?Q?=D0=B2=D1=8C=D1=8E=D0=B3=D0=B0?=", - output2 = "=?UTF-8?Q?=D0=BC=D0=B5=D1=82=D0=B5=D0=BB=D1=8C'?= =?UTF-8?Q?=D0=B2=D1=8C=D1=8E=D0=B3=D0=B0?="; + output2 = "=?UTF-8?Q?=D0=BC=D0=B5=D1=82=D0=B5=D0=BB=D1=8C'?= =?UTF-8?Q?=D0=B2=D1=8C=D1=8E=D0=B3=D0=B0?=", + output3 = '=?UTF-8?Q?Ver=C3=A3o_voc=C3=AA?= vai adorar!'; test.equal(mimelib.encodeMimeWords(input1, "Q", 52), output1); test.equal(mimelib.parseMimeWords(output1), input1); - + test.equal(mimelib.encodeMimeWords(input2, "Q", 52), output2); test.equal(mimelib.parseMimeWords(output2), input2); + test.equal(mimelib.encodeMimeWords(input3, "Q", 52), output3); + test.equal(mimelib.parseMimeWords(output3), input3); + test.done(); - } + } } exports["Fold long line"] = function(test){