1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- /**
- * Module dependencies
- */
- var rebuildRecursive = require('./helpers/rebuild-recursive');
- /**
- * rebuild()
- *
- * Rebuild a potentially-recursively-deep value, running
- * the specified `handleLeafTransform` lifecycle callback
- * (aka transformer function) for every primitive (i.e. string,
- * number, boolean, null) and function.
- *
- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- * @param {Anything} val
- *
- * @param {Function} handleLeafTransform [run AFTER stringification of Errors, Dates, etc.]
- * @param {Anything} leafVal
- * @param {String} leafType [either 'string', 'number', 'boolean', 'null', or 'lamda']
- * @return {Anything} [transformed version of `leafVal`]
- *
- * @param {Function} handleCompositeTransform [run BEFORE recursion and stripping of undefined items/props]
- * @param {Dictionary|Array} compositeVal
- * @param {String} leafType [either 'array' or 'dictionary']
- * @return {Dictionary|Array} [transformed version of `compositeVal`-- MUST BE A DICTONARY OR ARRAY THAT IS SAFE TO RECURSIVELY DIVE INTO!!!]
- *
- * @returns {JSONCompatible}
- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- * Example usage:
- *
- * ```
- * rttc.rebuild({
- * foo: [
- * 3,
- * ['hey', 'yo', 235, {}]
- * ]
- * },
- * function transformPrimitive(val, type){ return val;},
- * function transformDictOrArray(compositeThing, type) {
- * if (type === 'array') { return compositeThing.slice(1); }
- * else { return compositeThing; }
- * })
- *
- * // Yields:
- * // { foo: [ [ 'yo', 235, {} ] ] }
- * ```
- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- */
- module.exports = function rebuild(val, handleLeafTransform, handleCompositeTransform){
- return rebuildRecursive(val, handleLeafTransform, handleCompositeTransform);
- };
|