New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

purdy

Package Overview
Dependencies
Maintainers
1
Versions
46
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

purdy - npm Package Compare versions

Comparing version 0.3.2 to 0.4.0

47

lib/index.js

@@ -22,6 +22,9 @@ // Load modules

String: 'yellow',
Undefined: 'red.inverse'
Undefined: 'red.inverse',
path: 'blue'
},
defaults: {
plain: false
plain: false,
path: false,
pathPrefix: '// '
}

@@ -44,3 +47,3 @@ };

internals.settings = Hoek.applyToDefaults(internals.defaults, options || {});
return internals.travel(object);
return internals.travel(object, '');
};

@@ -55,3 +58,3 @@

internals.travel = function (object, addIndentLevel) {
internals.travel = function (object, path) {

@@ -62,3 +65,3 @@ var type = global.toString.call(object).split(' ')[1].slice(0, -1);

if (internals[type]) {
format = internals[type](object);
format = internals[type](object, path);
}

@@ -100,4 +103,9 @@ else {

internals.Object = function (object) {
internals.tidyPath = function (path) {
return internals.colorize(path.slice(1, path.size), 'path');
};
internals.Object = function (object, path) {
if (Object.keys(object).length === 0) {

@@ -113,6 +121,8 @@ return '{}';

var keys = Object.keys(object);
var keyLengths = Hoek.clone(keys);
internals.indentLevel = internals.indentLevel + 1;
var out = '{\n';
internals.indentLevel = internals.indentLevel + 1;
var longest = Hoek.clone(keys).sort(internals.lengthCompare)[keys.length - 1];
keyLengths.push(internals.settings.pathPrefix);
var longest = keyLengths.sort(internals.lengthCompare)[keyLengths.length - 1];

@@ -122,3 +132,8 @@ for (var i = 0, il = keys.length; i < il; ++i) {

var item = object[key];
out = out + internals.indent() + '' + (internals.printMember(key, longest) + ':') + ' ' + internals.travel(item);
if (internals.settings.path && path.length > 0) {
out = out + internals.indent() +
internals.colorize(internals.settings.pathPrefix, 'path') +
internals.tidyPath(path + '.' + key) + '\n';
}
out = out + internals.indent() + '' + (internals.printMember(key, longest) + ':') + ' ' + internals.travel(item, path + '.' + key);
if (i !== il - 1) {

@@ -135,3 +150,3 @@ out = out + ',';

internals.Array = function (array) {
internals.Array = function (array, path) {

@@ -152,3 +167,8 @@ if (array.length === 0) {

var item = array[i];
out = out + internals.indent() + '' + ('[' + internals.printMember(i, il) + ']') + ' ' + internals.travel(item);
if (internals.settings.path && path.length > 0) {
out = out + internals.indent() +
internals.colorize(internals.settings.pathPrefix, 'path') +
internals.tidyPath(path + '.' + i) + '\n';
}
out = out + internals.indent() + '' + ('[' + internals.printMember(i, il) + ']') + ' ' + internals.travel(item, path + '.' + i);
if (i !== il - 1) {

@@ -205,8 +225,9 @@ out = out + ',';

internals.printMember = function (member, max) {
internals.printMember = function (member, max, type) {
var type = type || 'Key';
var memberLength = (member + '').length;
var maxLength = (max + '').length;
var toShift = maxLength - memberLength;
return internals.colorize(internals.spaces(toShift) + member, 'Key');
return internals.colorize(internals.spaces(toShift) + member, type);
};
{
"name": "purdy",
"version": "0.3.2",
"version": "0.4.0",
"description": "print objects real purdy in color",

@@ -26,2 +26,3 @@ "main": "index.js",

"devDependencies": {
"hoek": "2.x.x",
"lab": "3.x.x"

@@ -28,0 +29,0 @@ },

@@ -21,2 +21,4 @@ # Purdy

* `plain` - when `true`, prints result without colors. Defaults to `false` with tty, `true` when not.
* `path` - when `true`, prints result with a path (To be used with [Hoek.reach()](https://github.com/spumko/hoek#reachobj-chain-options))
* `pathPrefix` - prefix for path. default: `// `

@@ -100,3 +102,40 @@

``` javascript
// var obj = {
// travel: {
// down: {
// a: [{
// path: 'to get here'
// }]
// }
// }
// Purdy(obj, { path: true });
{
travel: {
// travel.down
down: {
// travel.down.a
a: [
// travel.down.a.0
[0] {
// travel.down.a.0.path
path: 'to get here'
}
]
}
}
}
// var Hoek = require('hoek');
// Purdy(Hoek.reach(obj, 'travel.down.some.0.alternative'));
{
path: 'to get here'
}
```
## Acknowledgements

@@ -103,0 +142,0 @@ * Michael Dvorkin for [Awesome Print]

@@ -0,1 +1,2 @@

var Hoek = require('hoek');
var Lab = require('lab');

@@ -34,3 +35,3 @@ var Purdy = require('../');

var out = Purdy.stringify(circularObj);
expect(out).to.equal('{\n \u001b[1m\u001b[37ma\u001b[39m\u001b[22m: \u001b[1m\u001b[90m[Circular]\u001b[39m\u001b[22m\n}');
expect(out).to.equal('{\n \u001b[1m\u001b[37m a\u001b[39m\u001b[22m: \u001b[1m\u001b[90m[Circular]\u001b[39m\u001b[22m\n}');
out = Purdy.stringify(circ);

@@ -132,2 +133,3 @@ expect(out).to.equal('[\n [\u001b[1m\u001b[37m0\u001b[39m\u001b[22m] \u001b[1m\u001b[90m[Circular]\u001b[39m\u001b[22m\n]');

});
expect(out).to.equal('{\n \u001b[1m\u001b[37m array\u001b[39m\u001b[22m: [\n [\u001b[1m\u001b[37m0\u001b[39m\u001b[22m] \u001b[1m\u001b[34m1\u001b[39m\u001b[22m,\n [\u001b[1m\u001b[37m1\u001b[39m\u001b[22m] \u001b[1m\u001b[34m2\u001b[39m\u001b[22m,\n [\u001b[1m\u001b[37m2\u001b[39m\u001b[22m] [\n [\u001b[1m\u001b[37m0\u001b[39m\u001b[22m] \u001b[1m\u001b[34m1\u001b[39m\u001b[22m,\n [\u001b[1m\u001b[37m1\u001b[39m\u001b[22m] \u001b[1m\u001b[34m2\u001b[39m\u001b[22m\n ]\n ],\n \u001b[1m\u001b[37mobject\u001b[39m\u001b[22m: {\n \u001b[1m\u001b[37manother\u001b[39m\u001b[22m: \u001b[33m\'string\'\u001b[39m\n }\n}');

@@ -146,3 +148,23 @@ done();

it('will keep a path for an object in Hoek format', function (done) {
var obj = {
travel: {
down: {
a: [{
path: 'to get here'
}]
}
}
};
var orig = Hoek.clone(obj);
var out = Purdy.stringify(obj, { plain: false, path: true });
expect(out).to.equal('{\n \u001b[1m\u001b[37mtravel\u001b[39m\u001b[22m: {\n \u001b[34m// \u001b[39m\u001b[34mtravel.down\u001b[39m\n \u001b[1m\u001b[37mdown\u001b[39m\u001b[22m: {\n \u001b[34m// \u001b[39m\u001b[34mtravel.down.a\u001b[39m\n \u001b[1m\u001b[37m a\u001b[39m\u001b[22m: [\n \u001b[34m// \u001b[39m\u001b[34mtravel.down.a.0\u001b[39m\n [\u001b[1m\u001b[37m0\u001b[39m\u001b[22m] {\n \u001b[34m// \u001b[39m\u001b[34mtravel.down.a.0.path\u001b[39m\n \u001b[1m\u001b[37mpath\u001b[39m\u001b[22m: \u001b[33m\'to get here\'\u001b[39m\n }\n ]\n }\n }\n}');
expect(obj).to.deep.equal(orig);
done();
});
});

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc