Skip to content

Commit 217f482

Browse files
committed
src: refactor ucs2, utf8 & utf16le in encoding
1 parent bb4dff7 commit 217f482

File tree

2 files changed

+12
-26
lines changed

2 files changed

+12
-26
lines changed

src/api/encoding.cc

Lines changed: 7 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -15,32 +15,14 @@ enum encoding ParseEncoding(const char* encoding,
1515
switch (encoding[0]) {
1616
case 'u':
1717
case 'U':
18-
// utf8, utf16le
19-
if (encoding[1] == 't' && encoding[2] == 'f') {
20-
// Skip `-`
21-
const size_t skip = encoding[3] == '-' ? 4 : 3;
22-
if (encoding[skip] == '8' && encoding[skip + 1] == '\0')
23-
return UTF8;
24-
if (strncmp(encoding + skip, "16le", 5) == 0)
25-
return UCS2;
26-
// ucs2
27-
} else if (encoding[1] == 'c' && encoding[2] == 's') {
28-
const size_t skip = encoding[3] == '-' ? 4 : 3;
29-
if (encoding[skip] == '2' && encoding[skip + 1] == '\0')
30-
return UCS2;
31-
}
32-
if (StringEqualNoCase(encoding, "utf8"))
33-
return UTF8;
34-
if (StringEqualNoCase(encoding, "utf-8"))
35-
return UTF8;
36-
if (StringEqualNoCase(encoding, "ucs2"))
37-
return UCS2;
38-
if (StringEqualNoCase(encoding, "ucs-2"))
39-
return UCS2;
40-
if (StringEqualNoCase(encoding, "utf16le"))
41-
return UCS2;
42-
if (StringEqualNoCase(encoding, "utf-16le"))
18+
if (StringEqualNoCase(encoding, "ucs2") ||
19+
StringEqualNoCase(encoding, "ucs-2") ||
20+
StringEqualNoCase(encoding, "utf16le") ||
21+
StringEqualNoCase(encoding, "utf-16le"))
4322
return UCS2;
23+
if (StringEqualNoCase(encoding, "utf8") ||
24+
StringEqualNoCase(encoding, "utf-8"))
25+
return UTF8;
4426
break;
4527

4628
case 'l':

test/addons/parse-encoding/test.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,14 @@ assert.strictEqual(parseEncoding('buffer'), 'BUFFER');
1414
assert.strictEqual(parseEncoding('hex'), 'HEX');
1515
assert.strictEqual(parseEncoding('latin1'), 'LATIN1');
1616
assert.strictEqual(parseEncoding('ucs2'), 'UCS2');
17+
assert.strictEqual(parseEncoding('ucs-2'), 'UCS2');
1718
assert.strictEqual(parseEncoding('utf8'), 'UTF8');
19+
assert.strictEqual(parseEncoding('utf-8'), 'UTF8');
20+
assert.strictEqual(parseEncoding('utf16le'), 'UCS2');
1821
assert.strictEqual(parseEncoding('utf-16LE'), 'UCS2');
22+
1923
assert.strictEqual(parseEncoding('utf-buffer'), 'UNKNOWN');
2024
assert.strictEqual(parseEncoding('utf-16leNOT'), 'UNKNOWN');
21-
2225
assert.strictEqual(parseEncoding('linary'), 'UNKNOWN');
2326
assert.strictEqual(parseEncoding('luffer'), 'UNKNOWN');
27+

0 commit comments

Comments
 (0)