Skip to content

Commit a200945

Browse files
committed
Fixed U.streamer().
1 parent 3853d55 commit a200945

2 files changed

Lines changed: 33 additions & 38 deletions

File tree

test/test-utils.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -585,17 +585,17 @@ function other() {
585585
assert.ok(value.trim() === index.toString(), 'Streamer problem');
586586
});
587587

588-
streamer('0');
589-
streamer('\n1\n2\n');
590-
streamer('3\n');
591-
streamer('4\n');
588+
streamer(new Buffer('0'));
589+
streamer(new Buffer('\n1\n2\n'));
590+
streamer(new Buffer('3\n'));
591+
streamer(new Buffer('4\n'));
592592

593593
streamer = utils.streamer('<a>', '</a>', function(value, index) {
594594
assert.ok(value.trim() === '<a>' + (index + 1) + '</a>', 'Streamer problem 2');
595595
});
596596

597-
streamer('aaaa <a>1</a> adsklasdlajsdlas jd <a>2</a>');
598-
streamer('aaaa <a>3</a> adsklasdlajsdlas jd <a>4</a>');
597+
streamer(new Buffer('aaaa <a>1</a> adsklasdlajsdlas jd <a>2</a>'));
598+
streamer(new Buffer('aaaa <a>3</a> adsklasdlajsdlas jd <a>4</a>'));
599599
}
600600

601601
function onValidation(name, value, path) {

utils.js

Lines changed: 27 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -948,13 +948,13 @@ exports.send = function(name, stream, url, callback, cookies, headers, method, t
948948

949949
var response = function(res) {
950950

951-
res.body = '';
951+
res.body = new Buffer(0);
952952
res._bufferlength = 0;
953953

954954
res.on('data', function(chunk) {
955-
res.body += chunk.toString(ENCODING);
956-
this._bufferlength += chunk.length;
957-
e.emit('data', chunk, responseLength ? (this._bufferlength / responseLength) * 100 : 0);
955+
res.body = Buffer.concat([res.body, chunk]);
956+
res._bufferlength += chunk.length;
957+
e.emit('data', chunk, responseLength ? (res._bufferlength / responseLength) * 100 : 0);
958958
});
959959

960960
res.on('end', function() {
@@ -963,7 +963,7 @@ exports.send = function(name, stream, url, callback, cookies, headers, method, t
963963
e.removeAllListeners();
964964
e = null;
965965
if (callback)
966-
callback(null, self.body, self.statusCode, self.headers, uri.host);
966+
callback(null, self.body.toString('utf8'), self.statusCode, self.headers, uri.host);
967967
self.body = null;
968968
});
969969
};
@@ -1288,24 +1288,30 @@ exports.streamer = function(beg, end, callback) {
12881288
end = undefined;
12891289
}
12901290

1291-
var cache = '';
12921291
var indexer = 0;
1292+
var buffer = new Buffer(0);
1293+
1294+
beg = new Buffer(beg, 'utf8');
1295+
if (end)
1296+
end = new Buffer(end, 'utf8');
12931297

12941298
if (!end) {
12951299
var length = beg.length;
12961300
return function(chunk) {
1301+
12971302
if (!chunk)
12981303
return;
1299-
if (typeof(chunk) !== 'string')
1300-
chunk = chunk.toString('utf8');
1301-
cache += chunk;
1302-
var index = cache.indexOf(beg);
1304+
1305+
buffer = Buffer.concat([buffer, chunk]);
1306+
1307+
var index = buffer.indexOf(beg);
13031308
if (index === -1)
13041309
return;
1310+
13051311
while (index !== -1) {
1306-
callback(cache.substring(0, index + length), indexer++);
1307-
cache = cache.substring(index + length);
1308-
index = cache.indexOf(beg);
1312+
callback(buffer.toString('utf8', 0, index + length), indexer++);
1313+
buffer = buffer.slice(index + length);
1314+
index = buffer.indexOf(beg);
13091315
if (index === -1)
13101316
return;
13111317
}
@@ -1323,33 +1329,30 @@ exports.streamer = function(beg, end, callback) {
13231329
if (!chunk)
13241330
return;
13251331

1326-
if (typeof(chunk) !== 'string')
1327-
chunk = chunk.toString('utf8');
1328-
1329-
cache += chunk;
1332+
buffer = Buffer.concat([buffer, chunk]);
13301333

13311334
if (!is) {
1332-
bi = cache.indexOf(beg);
1335+
bi = buffer.indexOf(beg);
13331336
if (bi === -1)
13341337
return;
13351338
is = true;
13361339
}
13371340

13381341
if (is) {
1339-
ei = cache.indexOf(end, bi + blength);
1342+
ei = buffer.indexOf(end, bi + blength);
13401343
if (ei === -1)
13411344
return;
13421345
}
13431346

13441347
while (bi !== -1) {
1345-
callback(cache.substring(bi, ei + elength), indexer++);
1346-
cache = cache.substring(ei + elength);
1348+
callback(buffer.toString('utf8', bi, ei + elength), indexer++);
1349+
buffer = buffer.slice(ei + elength);
13471350
is = false;
1348-
bi = cache.indexOf(beg);
1351+
bi = buffer.indexOf(beg);
13491352
if (bi === -1)
13501353
return;
13511354
is = true;
1352-
ei = cache.indexOf(end, bi + blength);
1355+
ei = buffer.indexOf(end, bi + blength);
13531356
if (ei === -1)
13541357
return;
13551358
}
@@ -1870,12 +1873,6 @@ exports.combine = function() {
18701873
else
18711874
p += (p[p.length - 1] !== '/' ? '/' : '') + v;
18721875
}
1873-
1874-
/*
1875-
if (isWindows)
1876-
p = p.substring(1);
1877-
*/
1878-
18791876
return exports.$normalize(p);
18801877
};
18811878

@@ -1885,9 +1882,7 @@ exports.combine = function() {
18851882
* @return {String}
18861883
*/
18871884
exports.removeDiacritics = function(str) {
1888-
return str.replace(regexpDiacritics, function(c) {
1889-
return DIACRITICSMAP[c] || c;
1890-
});
1885+
return str.replace(regexpDiacritics, c => DIACRITICSMAP[c] || c);
18911886
};
18921887

18931888
/**

0 commit comments

Comments
 (0)