Skip to content

Commit ca08bc3

Browse files
committed
Ensure always provide a buffer as input
1 parent c56d1f7 commit ca08bc3

6 files changed

Lines changed: 280 additions & 264 deletions

File tree

index.js

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,20 @@
11
'use strict'
22

33
var jschardet = require('jschardet')
4+
var isBuffer = require('is-buffer')
45
var iconv = require('iconv-lite')
56
var charset = require('charset')
67

78
var charsetRegex = /charset=["]*([^>"\s]+)/i
89

9-
module.exports = function ensureUTF8 (binaryBuffer, contentType) {
10-
var encoding = getEncoding(binaryBuffer, contentType)
10+
module.exports = function ensureUTF8 (buffer, contentType) {
11+
if (!isBuffer(buffer)) throw new TypeError('content should be a buffer.')
12+
13+
var encoding = getEncoding(buffer, contentType)
1114

1215
return encoding === 'utf8'
13-
? binaryBuffer.toString('utf8')
14-
: iconv.decode(binaryBuffer, encoding).replace(charsetRegex, 'utf-8')
16+
? buffer.toString('utf8')
17+
: iconv.decode(buffer, encoding).replace(charsetRegex, 'utf-8')
1518
}
1619

1720
function getEncoding (content, contentType) {

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@
2323
"dependencies": {
2424
"charset": "~1.0.1",
2525
"iconv-lite": "~0.4.19",
26-
"jschardet": "~1.6.0"
26+
"is-buffer": "~1.1.6",
27+
"jschardet": "~1.6.0",
28+
"to-buffer": "~1.1.0"
2729
},
2830
"devDependencies": {
2931
"coveralls": "latest",

test.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
'use strict'
2+
3+
var iconv = require('iconv-lite')
4+
var path = require('path')
5+
var fs = require('fs')
6+
var toUTF8 = require('./')
7+
8+
const buffer = fs.readFileSync(path.join(__dirname, 'test/fixtures/rp.pl.html'))
9+
10+
var str = toUTF8(buffer, 'windows-1250')
11+
console.log(str.includes('majątków'))

0 commit comments

Comments
 (0)