utile
Advanced tools
Comparing version 0.1.3 to 0.1.5
222
lib/index.js
@@ -23,85 +23,99 @@ /* | ||
// | ||
// ### function async | ||
// Simple wrapper to `require('async')`. | ||
// | ||
utile.__defineGetter__('async', function () { | ||
delete utile.async; | ||
return utile.async = require('async'); | ||
}); | ||
Object.defineProperties(utile, { | ||
// | ||
// ### function inflect | ||
// Simple wrapper to `require('i')`. | ||
// | ||
utile.__defineGetter__('inflect', function () { | ||
delete utile.inflect; | ||
return utile.inflect = require('i')(); | ||
}); | ||
// | ||
// ### function async | ||
// Simple wrapper to `require('async')`. | ||
// | ||
'async': { | ||
get: function() { | ||
return utile.async = require('async'); | ||
} | ||
}, | ||
// | ||
// ### function mkdirp | ||
// Simple wrapper to `require('mkdirp')` | ||
// | ||
utile.__defineGetter__('mkdirp', function () { | ||
delete utile.mkdirp; | ||
return utile.mkdirp = require('mkdirp'); | ||
}); | ||
// | ||
// ### function inflect | ||
// Simple wrapper to `require('i')`. | ||
// | ||
'inflect': { | ||
get: function() { | ||
return utile.inflect = require('i')(); | ||
} | ||
}, | ||
// | ||
// ### function deepEqual | ||
// Simple wrapper to `require('deep-equal')` | ||
// Remark: deepEqual is 4x faster then using assert.deepEqual | ||
// see: https://gist.github.com/2790507 | ||
// | ||
utile.__defineGetter__('deepEqual', function () { | ||
delete utile.deepEqual; | ||
return utile.deepEqual = require('deep-equal'); | ||
}); | ||
// | ||
// ### function mkdirp | ||
// Simple wrapper to `require('mkdirp')` | ||
// | ||
'mkdirp': { | ||
get: function() { | ||
return utile.mkdirp = require('mkdirp'); | ||
} | ||
}, | ||
// | ||
// ### function rimraf | ||
// Simple wrapper to `require('rimraf')` | ||
// | ||
utile.__defineGetter__('rimraf', function () { | ||
delete utile.rimraf; | ||
return utile.rimraf = require('rimraf'); | ||
}); | ||
// | ||
// ### function deepEqual | ||
// Simple wrapper to `require('deep-equal')` | ||
// Remark: deepEqual is 4x faster then using assert.deepEqual | ||
// see: https://gist.github.com/2790507 | ||
// | ||
'deepEqual': { | ||
get: function() { | ||
return utile.deepEqual = require('deep-equal'); | ||
} | ||
}, | ||
// | ||
// ### function cpr | ||
// Simple wrapper to `require('ncp').ncp` | ||
// | ||
utile.__defineGetter__('cpr', function () { | ||
delete utile.cpr; | ||
return utile.cpr = require('ncp').ncp; | ||
}); | ||
// | ||
// ### function rimraf | ||
// Simple wrapper to `require('rimraf')` | ||
// | ||
'rimraf': { | ||
get: function() { | ||
return utile.rimraf = require('rimraf'); | ||
} | ||
}, | ||
// | ||
// ### @file {Object} | ||
// Lazy-loaded `file` module | ||
// | ||
utile.__defineGetter__('file', function () { | ||
delete utile.file; | ||
return utile.file = require('./file'); | ||
}); | ||
// | ||
// ### function cpr | ||
// Simple wrapper to `require('ncp').ncp` | ||
// | ||
'cpr': { | ||
get: function() { | ||
return utile.cpr = require('ncp').ncp; | ||
} | ||
}, | ||
// | ||
// ### @args {Object} | ||
// Lazy-loaded `args` module | ||
// | ||
utile.__defineGetter__('args', function () { | ||
delete utile.args; | ||
return utile.args = require('./args'); | ||
}); | ||
// | ||
// ### @file {Object} | ||
// Lazy-loaded `file` module | ||
// | ||
'file': { | ||
get: function() { | ||
return utile.file = require('./file'); | ||
} | ||
}, | ||
// | ||
// ### @base64 {Object} | ||
// Lazy-loaded `base64` object | ||
// | ||
utile.__defineGetter__('base64', function () { | ||
delete utile.base64; | ||
return utile.base64 = require('./base64'); | ||
// | ||
// ### @args {Object} | ||
// Lazy-loaded `args` module | ||
// | ||
'args': { | ||
get: function() { | ||
return utile.args = require('./args'); | ||
} | ||
}, | ||
// | ||
// ### @base64 {Object} | ||
// Lazy-loaded `base64` object | ||
// | ||
'base64': { | ||
get: function() { | ||
return utile.base64 = require('./base64'); | ||
} | ||
} | ||
}); | ||
// | ||
@@ -233,5 +247,5 @@ // ### function rargs(_args) | ||
utile.rargs(arguments, 1).forEach(function (o) { | ||
Object.keys(o).forEach(function (attr) { | ||
var getter = o.__lookupGetter__(attr), | ||
setter = o.__lookupSetter__(attr); | ||
Object.getOwnPropertyNames(o).forEach(function(attr) { | ||
var getter = Object.getOwnPropertyDescriptor(o, attr).get, | ||
setter = Object.getOwnPropertyDescriptor(o, attr).set; | ||
@@ -242,4 +256,6 @@ if (!getter && !setter) { | ||
else { | ||
if (setter) { target.__defineSetter__(attr, setter) } | ||
if (getter) { target.__defineGetter__(attr, getter) } | ||
Object.defineProperty(target, attr, { | ||
get: getter, | ||
set: setter | ||
}); | ||
} | ||
@@ -352,7 +368,9 @@ }); | ||
} | ||
result.__defineGetter__(file, function () { | ||
delete result[file]; | ||
return result[file] = require(path.resolve(directory, file)); | ||
Object.defineProperty(result, file, { | ||
get: function() { | ||
return result[file] = require(path.resolve(directory, file)); | ||
} | ||
}); | ||
}); | ||
return result; | ||
@@ -384,9 +402,14 @@ }; | ||
utile.camelToUnderscore = function (obj) { | ||
if (typeof obj !== 'object' || obj === null) { | ||
return obj; | ||
} | ||
if (Array.isArray(obj)) { | ||
return obj.forEach(utile.camelToUnderscore); | ||
obj.forEach(utile.camelToUnderscore); | ||
return obj; | ||
} | ||
Object.keys(obj || {}).forEach(function (key) { | ||
if (/[a-z][A-Z]/.test(key)) { | ||
var k = key.replace(/([a-z])([A-Z])/g, '$1_$2').toLowerCase(); | ||
Object.keys(obj).forEach(function (key) { | ||
var k = utile.inflect.underscore(key); | ||
if (k !== key) { | ||
obj[k] = obj[key]; | ||
@@ -396,7 +419,3 @@ delete obj[key]; | ||
} | ||
if (obj[key] && !Array.isArray(obj[key]) | ||
&& typeof obj[key] === 'object') { | ||
utile.camelToUnderscore(obj[key]); | ||
} | ||
utile.camelToUnderscore(obj[key]); | ||
}); | ||
@@ -414,11 +433,14 @@ | ||
utile.underscoreToCamel = function (obj) { | ||
if (typeof obj !== 'object' || obj === null) { | ||
return obj; | ||
} | ||
if (Array.isArray(obj)) { | ||
return obj.forEach(utile.underscoreToCamel); | ||
obj.forEach(utile.underscoreToCamel); | ||
return obj; | ||
} | ||
Object.keys(obj || {}).forEach(function (key) { | ||
if (/[a-z]_[a-z]/.test(key)) { | ||
var k = key.replace(/([a-z])_([a-z])/g, function (_, $1, $2) { | ||
return $1 + $2.toUpperCase(); | ||
}); | ||
Object.keys(obj).forEach(function (key) { | ||
var k = utile.inflect.camelize(key, false); | ||
if (k !== key) { | ||
obj[k] = obj[key]; | ||
@@ -428,10 +450,6 @@ delete obj[key]; | ||
} | ||
if (obj[key] && !Array.isArray(obj[key]) | ||
&& typeof obj[key] === 'object') { | ||
utile.underscoreToCamel(obj[key]); | ||
} | ||
utile.underscoreToCamel(obj[key]); | ||
}); | ||
return obj; | ||
} | ||
}; |
{ | ||
"name": "utile", | ||
"description": "A drop-in replacement for `util` with some additional advantageous functions", | ||
"version": "0.1.3", | ||
"version": "0.1.5", | ||
"author": "Nodejitsu Inc. <info@nodejitsu.com>", | ||
@@ -6,0 +6,0 @@ "maintainers": [ |
@@ -9,3 +9,4 @@ /* | ||
var assert = require('assert'); | ||
var assert = require('assert'), | ||
utile = require('../../lib'); | ||
@@ -16,3 +17,3 @@ var macros = exports; | ||
assert.isObject(obj); | ||
assert.deepEqual(obj, { | ||
utile.deepEqual(obj, { | ||
hello: 'World', | ||
@@ -29,3 +30,3 @@ 'I am': ['the utile module'], | ||
assert.isObject(obj); | ||
assert.deepEqual(obj, { | ||
utile.deepEqual(obj, { | ||
directory: { | ||
@@ -32,0 +33,0 @@ me: 'directory/index.js' |
@@ -28,4 +28,4 @@ /* | ||
assert.isObject(obj); | ||
assert.isTrue(!!obj.__lookupGetter__('directory')); | ||
assert.isTrue(!!obj.__lookupGetter__('helloWorld')); | ||
assert.isTrue(!!Object.getOwnPropertyDescriptor(obj, 'directory').get); | ||
assert.isTrue(!!Object.getOwnPropertyDescriptor(obj, 'helloWorld').get); | ||
}, | ||
@@ -32,0 +32,0 @@ 'should contain all wanted modules': macros.assertDirectoryRequired |
@@ -28,12 +28,20 @@ /* | ||
obj2.__defineGetter__('bazz', function () { | ||
return 'bazz'; | ||
}); | ||
Object.defineProperties(obj2, { | ||
obj2.__defineSetter__('bazz', function () { | ||
return 'bazz'; | ||
}); | ||
'bazz': { | ||
get: function() { | ||
return 'bazz'; | ||
}, | ||
obj2.__defineSetter__('wat', function () { | ||
return 'wat'; | ||
set: function() { | ||
return 'bazz'; | ||
} | ||
}, | ||
'wat': { | ||
set: function() { | ||
return 'wat'; | ||
} | ||
} | ||
}); | ||
@@ -61,5 +69,5 @@ | ||
assert.isString(mixed.buzz); | ||
assert.isTrue(!!mixed.__lookupGetter__('bazz')); | ||
assert.isTrue(!!mixed.__lookupSetter__('bazz')); | ||
assert.isTrue(!!mixed.__lookupSetter__('wat')); | ||
assert.isTrue(!!Object.getOwnPropertyDescriptor(mixed, 'bazz').get); | ||
assert.isTrue(!!Object.getOwnPropertyDescriptor(mixed, 'bazz').set); | ||
assert.isTrue(!!Object.getOwnPropertyDescriptor(mixed, 'wat').set); | ||
assert.isString(mixed.bazz); | ||
@@ -66,0 +74,0 @@ }, |
843
28961