From 7b151276617b60e0a614c53f5319b9f0e27ca325 Mon Sep 17 00:00:00 2001 From: Tony Gorez Date: Sun, 28 Aug 2022 15:40:34 +0200 Subject: [PATCH] refactor(encoding): simplify ucs2, utf8 & utf16le --- src/api/encoding.cc | 32 +++++++----------------------- test/addons/parse-encoding/test.js | 6 +++++- 2 files changed, 12 insertions(+), 26 deletions(-) diff --git a/src/api/encoding.cc b/src/api/encoding.cc index 68278ff7371d80..0a9fa3a341ea26 100644 --- a/src/api/encoding.cc +++ b/src/api/encoding.cc @@ -15,32 +15,14 @@ enum encoding ParseEncoding(const char* encoding, switch (encoding[0]) { case 'u': case 'U': - // utf8, utf16le - if (encoding[1] == 't' && encoding[2] == 'f') { - // Skip `-` - const size_t skip = encoding[3] == '-' ? 4 : 3; - if (encoding[skip] == '8' && encoding[skip + 1] == '\0') - return UTF8; - if (strncmp(encoding + skip, "16le", 5) == 0) - return UCS2; - // ucs2 - } else if (encoding[1] == 'c' && encoding[2] == 's') { - const size_t skip = encoding[3] == '-' ? 4 : 3; - if (encoding[skip] == '2' && encoding[skip + 1] == '\0') - return UCS2; - } - if (StringEqualNoCase(encoding, "utf8")) - return UTF8; - if (StringEqualNoCase(encoding, "utf-8")) - return UTF8; - if (StringEqualNoCase(encoding, "ucs2")) - return UCS2; - if (StringEqualNoCase(encoding, "ucs-2")) - return UCS2; - if (StringEqualNoCase(encoding, "utf16le")) - return UCS2; - if (StringEqualNoCase(encoding, "utf-16le")) + if (StringEqualNoCase(encoding, "ucs2") || + StringEqualNoCase(encoding, "ucs-2") || + StringEqualNoCase(encoding, "utf16le") || + StringEqualNoCase(encoding, "utf-16le")) return UCS2; + if (StringEqualNoCase(encoding, "utf8") || + StringEqualNoCase(encoding, "utf-8")) + return UTF8; break; case 'l': diff --git a/test/addons/parse-encoding/test.js b/test/addons/parse-encoding/test.js index da52f2dc4248af..4fcca27016c2d8 100644 --- a/test/addons/parse-encoding/test.js +++ b/test/addons/parse-encoding/test.js @@ -14,10 +14,14 @@ assert.strictEqual(parseEncoding('buffer'), 'BUFFER'); assert.strictEqual(parseEncoding('hex'), 'HEX'); assert.strictEqual(parseEncoding('latin1'), 'LATIN1'); assert.strictEqual(parseEncoding('ucs2'), 'UCS2'); +assert.strictEqual(parseEncoding('ucs-2'), 'UCS2'); assert.strictEqual(parseEncoding('utf8'), 'UTF8'); +assert.strictEqual(parseEncoding('utf-8'), 'UTF8'); +assert.strictEqual(parseEncoding('utf16le'), 'UCS2'); assert.strictEqual(parseEncoding('utf-16LE'), 'UCS2'); + assert.strictEqual(parseEncoding('utf-buffer'), 'UNKNOWN'); assert.strictEqual(parseEncoding('utf-16leNOT'), 'UNKNOWN'); - assert.strictEqual(parseEncoding('linary'), 'UNKNOWN'); assert.strictEqual(parseEncoding('luffer'), 'UNKNOWN'); +