diff --git a/index.js b/index.js index 06b36e7e..9588c81d 100644 --- a/index.js +++ b/index.js @@ -10,6 +10,7 @@ var base64 = require('base64-js') var ieee754 = require('ieee754') +var customInspectSymbol = typeof Symbol === 'function' ? require('inspect-custom-symbol') : null exports.Buffer = Buffer exports.SlowBuffer = SlowBuffer @@ -604,6 +605,9 @@ Buffer.prototype.inspect = function inspect () { if (this.length > max) str += ' ... ' return '' } +if (customInspectSymbol) { + Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect +} Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { if (isInstance(target, Uint8Array)) { diff --git a/package.json b/package.json index b717705e..15b1edad 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,8 @@ ], "dependencies": { "base64-js": "^1.0.2", - "ieee754": "^1.1.4" + "ieee754": "^1.1.4", + "inspect-custom-symbol": "^1.1.0" }, "devDependencies": { "airtap": "0.0.5", diff --git a/test/node/test-buffer-inspect.js b/test/node/test-buffer-inspect.js new file mode 100644 index 00000000..477d6bad --- /dev/null +++ b/test/node/test-buffer-inspect.js @@ -0,0 +1,60 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +'use strict'; +var Buffer = require('../../').Buffer; + +require('./common'); +const assert = require('assert'); +const util = require('util'); +const buffer = require('../../'); + +buffer.INSPECT_MAX_BYTES = 2; + +let b = Buffer.allocUnsafe(4); +b.fill('1234'); + +let s = buffer.SlowBuffer(4); +s.fill('1234'); + +let expected = ''; + +assert.strictEqual(util.inspect(b), expected); +assert.strictEqual(util.inspect(s), expected); + +b = Buffer.allocUnsafe(2); +b.fill('12'); + +s = buffer.SlowBuffer(2); +s.fill('12'); + +expected = ''; + +assert.strictEqual(util.inspect(b), expected); +assert.strictEqual(util.inspect(s), expected); + +buffer.INSPECT_MAX_BYTES = Infinity; + +assert.strictEqual(util.inspect(b), expected); +assert.strictEqual(util.inspect(s), expected); + +b.inspect = undefined; +assert.strictEqual(util.inspect(b), expected);