bb-utils
v0.0.3
Published
Misc JS/node utility functions
Readme
Ben's miscellaneous utilities
A collection of utility functions for Node.js (or Javascript generally).
Usage
Install:
npm install --save bb-utils
Run tests:
npm test
Modify:
Source is in coffeescript, located in src dir.
Coffee is compiled to JS via:
./node_modules/coffee-script/bin/coffee -c -b -o lib src/*.coffee
(also as npm prepublish script)
Functions
General
requireFresh: Wipe a module from the module cache and reload it.callbackOrThrow: Pass an error along, either to a callback, or w/ an exception.callbackOrLog: Tamer version of callbackOrThrow, this passes an error to a callback, or toconsole.error.getStack: Get a stack trace as a string.
Objects
convertNumbersAndBooleans: Given an object, convert numeric strings to numbers, and convert boolean strings to booleans. With variable recursion depth and key patterns to ignore.textToObject: For parsing flat-text config files, converts each line to a key:value in the returned object, with variable separator.traverse: Get a value from an object, by traversing the object with a traversal string, separated by periods. Also handles arrays. (e.g.traverse(obj, 'x.y.z').)traverseSet: Similar totraverse, this sets a value using a traversal path. Creates any missing pieces in the chain (as sub-objects). Handles arrays if they already exist, but won't create a new array.
Strings
pad: Pad an integer to a number of characters. (e.g.pad(1, 3)=>'001')guid: Generate a GUID in 8-4-4-4-12 format.numericGuid: Likeguid, but all numbers, not starting with 0.pathify: Convert a string to a filename- or URL-friendly string.printf: Very simple string interpolator.printfPlural: Interpolation with single/plural handling.sumAsciiStringToNum: Turn a string into a number, by adding together the ascii value of each char. Useful for hash ring algorithms.
Numbers
probability: Get a boolean given a probability (between 0 and 1).isNumeric: Numeric test (numbers or numeric strings). Checks value not type (unlike_.isNumber).
Async
asyncSeriesTap: Addon to async, run a named series flow (key:fnstyle) with abeforeEach()andafterEach()callback, each getting(name, fn). Useful for debugging async flows or in tests.waitForSomething: Wait for acheckFncallback to return true, with variable interval, timeout, and message.debounceAfter: Combination of underscore/lodash's_.debounceand_.after, fire something after it has occured N times in M milliseconds.
URLs
resolveUrl: Join an array into a relative url, similar topath.resolve().compareUrls: Check if two URLs are the same, optionally accounting for protocol, port, host, etc.
Arrays
startArrayWithandendArrayWith: Given two arrays, pull the elements in a 2nd array to the start or end of the first one.
Dates
maxDateandminDate: Given N dates (UTC strings or date objects), get the most recent or oldest.
Files
parsePath: Given a file path, return a hash with dir, filename, extension.md5File: Get md5 hash of a file, by path.
