Skip to content

Commit

Permalink
remove Buffer.toString dependence on ByteBuffer.array()
Browse files Browse the repository at this point in the history
  • Loading branch information
m0wfo committed Jan 5, 2013
1 parent 081bf8f commit a5e1505
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 13 deletions.
36 changes: 28 additions & 8 deletions resources/buffer.js
Original file line number Diff line number Diff line change
Expand Up @@ -135,14 +135,35 @@ var Buffer = function(obj, encoding) {
};

buf.toString = function(encoding, start, end) {
if (!encoding) encoding = 'utf8';
if (!start) start = 0;
if (!end) end = buf.length - start;
encoding = String(encoding || 'utf8').toLowerCase();

if (typeof start == 'undefined' || start < 0) {
start = 0;
}
else if (start > buf.length) {
start = buf.length;
}

if (typeof end == 'undefined' || end > buf.length) {
end = buf.length;
}
else if (end < 0) {
end = 0;
}

var ianaEncoding = ENCODINGS[encoding];
var backingArray = internalBuffer.array().map(function(e) { return unsign(e) });

var str = new java.lang.String(backingArray, start, end, ianaEncoding);
var oldLimit = internalBuffer.limit();
internalBuffer.limit(end);
internalBuffer.position(start);

var backingArray = java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, internalBuffer.remaining());
internalBuffer.get(backingArray);

var str = new java.lang.String(backingArray, ianaEncoding);

internalBuffer.limit(oldLimit);

return str;
};

Expand Down Expand Up @@ -177,9 +198,8 @@ var Buffer = function(obj, encoding) {
source.__internalBuffer.limit(end);
source.__internalBuffer.position(start);
target.__internalBuffer.position(target_start);

print(internalBuffer)
target.__internalBuffer.put(internalBuffer);

target.__internalBuffer.put(source.__internalBuffer);
};

buf.slice = function(start, end) {
Expand Down
9 changes: 4 additions & 5 deletions test/buffer.js
Original file line number Diff line number Diff line change
Expand Up @@ -78,21 +78,21 @@ wru.test([

wru.assert(true, buf._charsWritten == 0);

wru.assert(true, buf.write("Hellooo", "utf8") == 5);
wru.assert(true, buf.write("Hello", "utf8") == 5);
wru.assert(true, buf._charsWritten == 5);
}
},
{
name: "Buffer.copy",
test: function() {
/* // From docs.nodejitsu.com
// From docs.nodejitsu.com
var frosty = new Buffer(24);
var snowman = new Buffer("☃", "utf-8");

frosty.write("Happy birthday! ", "utf-8");
snowman.copy(frosty, 16);

console.log(frosty.toString());/*
console.log(frosty.toString());
}
},
{
Expand All @@ -115,8 +115,7 @@ wru.test([
// With no argument it should default to utf8
wru.assert(true, buf.toString() == content);
wru.assert(true, buf.toString('utf8') == content);

wru.assert(true, buf.toString('utf8', 1, 3) == "ell");
wru.assert(true, buf.toString('utf8', 1, 3) == "el");
}
},
{
Expand Down

0 comments on commit a5e1505

Please sign in to comment.