{"_id":"d3-helpers","_rev":"101985","name":"d3-helpers","description":"Little utility D3 functions","dist-tags":{"latest":"0.3.0"},"maintainers":[{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"}],"time":{"modified":"2021-06-03T10:35:44.000Z","created":"2014-04-02T16:34:11.865Z","0.3.0":"2014-11-25T20:57:31.879Z","0.2.1":"2014-04-05T02:31:54.741Z","0.2.0":"2014-04-04T21:57:03.620Z","0.1.1":"2014-04-03T15:00:50.573Z","0.1.0":"2014-04-03T04:03:34.577Z","0.0.7":"2014-04-03T03:53:18.518Z","0.0.6":"2014-04-03T02:41:34.726Z","0.0.5":"2014-04-03T02:31:42.915Z","0.0.3":"2014-04-02T18:42:44.581Z","0.0.2":"2014-04-02T16:50:10.935Z","0.0.1":"2014-04-02T16:34:11.865Z"},"users":{"26medias":true},"author":{"name":"Gleb Bahmutov","email":"gleb.bahmutov@gmail.com"},"repository":{"type":"git","url":"git@github.com:bahmutov/d3-helpers.git"},"versions":{"0.3.0":{"name":"d3-helpers","description":"Little utility D3 functions","version":"0.3.0","author":{"name":"Gleb Bahmutov","email":"gleb.bahmutov@gmail.com"},"bugs":{"url":"https://github.com/bahmutov/d3-helpers/issues"},"dependencies":{},"devDependencies":{"coveralls":"2.11.2","d3":"3.4.13","expect.js":"0.3.1","grunt":"0.4.5","grunt-banner":"0.2.3","grunt-clean-console":"0.1.1","grunt-contrib-concat":"0.5.0","grunt-contrib-copy":"0.7.0","grunt-contrib-jshint":"0.10.0","grunt-contrib-uglify":"0.6.0","grunt-contrib-watch":"0.6.1","grunt-deps-ok":"0.5.1","grunt-karma":"0.9.0","grunt-mocha-test":"0.12.4","grunt-nice-package":"0.9.2","grunt-npm2bower-sync":"0.4.0","jshint-stylish":"1.0.0","karma":"0.12.28","karma-coverage":"0.2.6","karma-mocha":"0.1.9","karma-phantomjs-launcher":"0.1.4","lodash":"2.4.1","matchdep":"0.3.0","mocha":"2.0.1","pre-git":"0.1.1","sinon":"1.12.1","time-grunt":"1.0.0"},"engines":{"node":"> 0.8"},"homepage":"https://github.com/bahmutov/d3-helpers","keywords":["D3","helpers","utility","functional","callbacks","node","browser"],"license":"MIT","main":"index.js","pre-commit":["npm test"],"repository":{"type":"git","url":"git@github.com:bahmutov/d3-helpers.git"},"scripts":{"test":"grunt test","watch":"grunt watch","coveralls":"cat coverage/PhantomJS*/lcov.info | ./node_modules/coveralls/bin/coveralls.js"},"_id":"d3-helpers@0.3.0","_shasum":"4b31dce4a2121a77336384574d893fbed5fb293d","_from":".","_npmVersion":"1.4.9","_npmUser":{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"},"maintainers":[{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"}],"dist":{"shasum":"4b31dce4a2121a77336384574d893fbed5fb293d","size":8754,"noattachment":false,"key":"/d3-helpers/-/d3-helpers-0.3.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/d3-helpers/download/d3-helpers-0.3.0.tgz"},"directories":{},"publish_time":1416949051879,"_cnpm_publish_time":1416949051879,"_hasShrinkwrap":false},"0.2.1":{"name":"d3-helpers","description":"Little utility D3 functions","version":"0.2.1","author":{"name":"Gleb Bahmutov","email":"gleb.bahmutov@gmail.com"},"bugs":{"url":"https://github.com/bahmutov/d3-helpers/issues"},"dependencies":{},"devDependencies":{"better-assert":"^1.0.0","d3":"^3.4.4","expect.js":"^0.3.1","grunt":"^0.4.4","grunt-banner":"^0.2.2","grunt-clean-console":"^0.1.1","grunt-contrib-concat":"^0.4.0","grunt-contrib-copy":"^0.5.0","grunt-contrib-jshint":"^0.9.2","grunt-contrib-uglify":"^0.4.0","grunt-contrib-watch":"^0.6.1","grunt-deps-ok":"^0.1.8","grunt-mocha-test":"^0.10.0","grunt-nice-package":"^0.3.0","grunt-npm2bower-sync":"^0.3.0","jshint-stylish":"^0.1.5","matchdep":"^0.3.0","mocha":"^1.18.2","pre-git":"0.0.15","sinon":"^1.9.0","time-grunt":"^0.3.1"},"engines":{"node":"> 0.8"},"homepage":"https://github.com/bahmutov/d3-helpers","keywords":["console","html","beautify","node","browser"],"license":"MIT","main":"index.js","pre-commit":["npm test"],"repository":{"type":"git","url":"git@github.com:bahmutov/d3-helpers.git"},"scripts":{"test":"grunt && npm run unit","unit":"node node_modules/mocha/bin/mocha -R spec","watch":"node node_modules/mocha/bin/mocha -R spec --watch"},"_id":"d3-helpers@0.2.1","dist":{"shasum":"676a25cd6e9989086847a57341a7f7d0110bee0a","size":7376,"noattachment":false,"key":"/d3-helpers/-/d3-helpers-0.2.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/d3-helpers/download/d3-helpers-0.2.1.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"},"maintainers":[{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"}],"directories":{},"publish_time":1396665114741,"_cnpm_publish_time":1396665114741,"_hasShrinkwrap":false},"0.2.0":{"name":"d3-helpers","description":"Little utility D3 functions","version":"0.2.0","author":{"name":"Gleb Bahmutov","email":"gleb.bahmutov@gmail.com"},"bugs":{"url":"https://github.com/bahmutov/d3-helpers/issues"},"dependencies":{},"devDependencies":{"better-assert":"^1.0.0","d3":"^3.4.4","expect.js":"^0.3.1","grunt":"^0.4.4","grunt-banner":"^0.2.2","grunt-clean-console":"^0.1.1","grunt-contrib-concat":"^0.4.0","grunt-contrib-copy":"^0.5.0","grunt-contrib-jshint":"^0.9.2","grunt-contrib-uglify":"^0.4.0","grunt-contrib-watch":"^0.6.1","grunt-deps-ok":"^0.1.8","grunt-mocha-test":"^0.10.0","grunt-nice-package":"^0.3.0","grunt-npm2bower-sync":"^0.3.0","jshint-stylish":"^0.1.5","matchdep":"^0.3.0","mocha":"^1.18.2","pre-git":"0.0.15","sinon":"^1.9.0","time-grunt":"^0.3.1"},"engines":{"node":"> 0.8"},"homepage":"https://github.com/bahmutov/d3-helpers","keywords":["console","html","beautify","node","browser"],"license":"MIT","main":"index.js","pre-commit":["npm test"],"repository":{"type":"git","url":"git@github.com:bahmutov/d3-helpers.git"},"scripts":{"test":"grunt && npm run unit","unit":"node node_modules/mocha/bin/mocha -R spec","watch":"node node_modules/mocha/bin/mocha -R spec --watch"},"_id":"d3-helpers@0.2.0","dist":{"shasum":"9f20159b457ebf9d0aa584dee94188a23f482cf0","size":7169,"noattachment":false,"key":"/d3-helpers/-/d3-helpers-0.2.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/d3-helpers/download/d3-helpers-0.2.0.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"},"maintainers":[{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"}],"directories":{},"publish_time":1396648623620,"_cnpm_publish_time":1396648623620,"_hasShrinkwrap":false},"0.1.1":{"name":"d3-helpers","description":"Little utility D3 functions","version":"0.1.1","author":{"name":"Gleb Bahmutov","email":"gleb.bahmutov@gmail.com"},"bugs":{"url":"https://github.com/bahmutov/d3-helpers/issues"},"dependencies":{},"devDependencies":{"better-assert":"^1.0.0","d3":"^3.4.4","expect.js":"^0.3.1","grunt":"^0.4.4","grunt-banner":"^0.2.2","grunt-clean-console":"^0.1.1","grunt-contrib-concat":"^0.4.0","grunt-contrib-copy":"^0.5.0","grunt-contrib-jshint":"^0.9.2","grunt-contrib-uglify":"^0.4.0","grunt-contrib-watch":"^0.6.1","grunt-deps-ok":"^0.1.8","grunt-mocha-test":"^0.10.0","grunt-nice-package":"^0.3.0","grunt-npm2bower-sync":"^0.3.0","jshint-stylish":"^0.1.5","matchdep":"^0.3.0","mocha":"^1.18.2","pre-git":"0.0.15","sinon":"^1.9.0","time-grunt":"^0.3.1"},"engines":{"node":"> 0.8"},"homepage":"https://github.com/bahmutov/d3-helpers","keywords":["console","html","beautify","node","browser"],"license":"MIT","main":"index.js","pre-commit":["npm test"],"repository":{"type":"git","url":"git@github.com:bahmutov/d3-helpers.git"},"scripts":{"test":"grunt && npm run unit","unit":"node node_modules/mocha/bin/mocha -R spec","watch":"node node_modules/mocha/bin/mocha -R spec --watch"},"_id":"d3-helpers@0.1.1","dist":{"shasum":"3f06e040ec8f4ddc2990ff7157bc5bf2d6cee5b9","size":6287,"noattachment":false,"key":"/d3-helpers/-/d3-helpers-0.1.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/d3-helpers/download/d3-helpers-0.1.1.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"},"maintainers":[{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"}],"directories":{},"publish_time":1396537250573,"_cnpm_publish_time":1396537250573,"_hasShrinkwrap":false},"0.1.0":{"name":"d3-helpers","description":"Little utility D3 functions","version":"0.1.0","author":{"name":"Gleb Bahmutov","email":"gleb.bahmutov@gmail.com"},"bugs":{"url":"https://github.com/bahmutov/d3-helpers/issues"},"dependencies":{},"devDependencies":{"better-assert":"^1.0.0","d3":"^3.4.4","expect.js":"^0.3.1","grunt":"^0.4.4","grunt-banner":"^0.2.2","grunt-clean-console":"^0.1.1","grunt-contrib-concat":"^0.4.0","grunt-contrib-copy":"^0.5.0","grunt-contrib-jshint":"^0.9.2","grunt-contrib-uglify":"^0.4.0","grunt-contrib-watch":"^0.6.1","grunt-deps-ok":"^0.1.8","grunt-mocha-test":"^0.10.0","grunt-nice-package":"^0.3.0","grunt-npm2bower-sync":"^0.3.0","jshint-stylish":"^0.1.5","matchdep":"^0.3.0","mocha":"^1.18.2","pre-git":"0.0.15","sinon":"^1.9.0","time-grunt":"^0.3.1"},"engines":{"node":"> 0.8"},"homepage":"https://github.com/bahmutov/d3-helpers","keywords":["console","html","beautify","node","browser"],"license":"MIT","main":"index.js","pre-commit":["npm test"],"repository":{"type":"git","url":"git@github.com:bahmutov/d3-helpers.git"},"scripts":{"test":"grunt && npm run unit","unit":"node node_modules/mocha/bin/mocha -R spec","watch":"node node_modules/mocha/bin/mocha -R spec --watch"},"_id":"d3-helpers@0.1.0","dist":{"shasum":"9d7a6a2ce3e9bf053b47ef164f58e4c029505030","size":5832,"noattachment":false,"key":"/d3-helpers/-/d3-helpers-0.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/d3-helpers/download/d3-helpers-0.1.0.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"},"maintainers":[{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"}],"directories":{},"publish_time":1396497814577,"_cnpm_publish_time":1396497814577,"_hasShrinkwrap":false},"0.0.7":{"name":"d3-helpers","description":"Little utility D3 functions","version":"0.0.7","author":{"name":"Gleb Bahmutov","email":"gleb.bahmutov@gmail.com"},"bugs":{"url":"https://github.com/bahmutov/d3-helpers/issues"},"dependencies":{},"devDependencies":{"better-assert":"^1.0.0","d3":"^3.4.4","expect.js":"^0.3.1","grunt":"^0.4.4","grunt-banner":"^0.2.2","grunt-clean-console":"^0.1.1","grunt-contrib-concat":"^0.4.0","grunt-contrib-copy":"^0.5.0","grunt-contrib-jshint":"^0.9.2","grunt-contrib-uglify":"^0.4.0","grunt-contrib-watch":"^0.6.1","grunt-deps-ok":"^0.1.8","grunt-mocha-test":"^0.10.0","grunt-nice-package":"^0.3.0","grunt-npm2bower-sync":"^0.3.0","jshint-stylish":"^0.1.5","matchdep":"^0.3.0","mocha":"^1.18.2","pre-git":"0.0.15","sinon":"^1.9.0","time-grunt":"^0.3.1"},"engines":{"node":"> 0.8"},"homepage":"https://github.com/bahmutov/d3-helpers","keywords":["console","html","beautify","node","browser"],"license":"MIT","main":"index.js","pre-commit":["npm test"],"repository":{"type":"git","url":"git@github.com:bahmutov/d3-helpers.git"},"scripts":{"test":"grunt && npm run unit","unit":"node node_modules/mocha/bin/mocha -R spec","watch":"node node_modules/mocha/bin/mocha -R spec --watch"},"_id":"d3-helpers@0.0.7","dist":{"shasum":"f2c34204cf2dbbc1601b65247cf80e4008dc43b7","size":5677,"noattachment":false,"key":"/d3-helpers/-/d3-helpers-0.0.7.tgz","tarball":"http://registry.cnpm.dingdandao.com/d3-helpers/download/d3-helpers-0.0.7.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"},"maintainers":[{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"}],"directories":{},"publish_time":1396497198518,"_cnpm_publish_time":1396497198518,"_hasShrinkwrap":false},"0.0.6":{"name":"d3-helpers","description":"Little utility D3 functions","version":"0.0.6","author":{"name":"Gleb Bahmutov","email":"gleb.bahmutov@gmail.com"},"bugs":{"url":"https://github.com/bahmutov/d3-helpers/issues"},"dependencies":{},"devDependencies":{"better-assert":"^1.0.0","d3":"^3.4.4","expect.js":"^0.3.1","grunt":"^0.4.4","grunt-banner":"^0.2.2","grunt-clean-console":"^0.1.1","grunt-contrib-concat":"^0.4.0","grunt-contrib-copy":"^0.5.0","grunt-contrib-jshint":"^0.9.2","grunt-contrib-uglify":"^0.4.0","grunt-contrib-watch":"^0.6.1","grunt-deps-ok":"^0.1.8","grunt-mocha-test":"^0.10.0","grunt-nice-package":"^0.3.0","grunt-npm2bower-sync":"^0.3.0","jshint-stylish":"^0.1.5","matchdep":"^0.3.0","mocha":"^1.18.2","pre-git":"0.0.15","sinon":"^1.9.0","time-grunt":"^0.3.1"},"engines":{"node":"> 0.8"},"homepage":"https://github.com/bahmutov/d3-helpers","keywords":["console","html","beautify","node","browser"],"license":"MIT","main":"index.js","pre-commit":["npm test"],"repository":{"type":"git","url":"git@github.com:bahmutov/d3-helpers.git"},"scripts":{"test":"grunt && npm run unit","unit":"node node_modules/mocha/bin/mocha -R spec","watch":"node node_modules/mocha/bin/mocha -R spec --watch"},"_id":"d3-helpers@0.0.6","dist":{"shasum":"d43a65ee626f74e9eccf359f7fe014f8d401c313","size":4954,"noattachment":false,"key":"/d3-helpers/-/d3-helpers-0.0.6.tgz","tarball":"http://registry.cnpm.dingdandao.com/d3-helpers/download/d3-helpers-0.0.6.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"},"maintainers":[{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"}],"directories":{},"publish_time":1396492894726,"_cnpm_publish_time":1396492894726,"_hasShrinkwrap":false},"0.0.5":{"name":"d3-helpers","description":"Little utility D3 functions","version":"0.0.5","author":{"name":"Gleb Bahmutov","email":"gleb.bahmutov@gmail.com"},"bugs":{"url":"https://github.com/bahmutov/d3-helpers/issues"},"dependencies":{},"devDependencies":{"better-assert":"^1.0.0","d3":"^3.4.4","expect.js":"^0.3.1","grunt":"^0.4.4","grunt-banner":"^0.2.2","grunt-clean-console":"^0.1.1","grunt-contrib-concat":"^0.4.0","grunt-contrib-copy":"^0.5.0","grunt-contrib-jshint":"^0.9.2","grunt-contrib-uglify":"^0.4.0","grunt-contrib-watch":"^0.6.1","grunt-deps-ok":"^0.1.8","grunt-mocha-test":"^0.10.0","grunt-nice-package":"^0.3.0","grunt-npm2bower-sync":"^0.3.0","jshint-stylish":"^0.1.5","matchdep":"^0.3.0","mocha":"^1.18.2","pre-git":"0.0.15","sinon":"^1.9.0","time-grunt":"^0.3.1"},"engines":{"node":"> 0.8"},"homepage":"https://github.com/bahmutov/d3-helpers","keywords":["console","html","beautify","node","browser"],"license":"MIT","main":"index.js","pre-commit":["npm test"],"repository":{"type":"git","url":"git@github.com:bahmutov/d3-helpers.git"},"scripts":{"test":"grunt && npm run unit","unit":"node node_modules/mocha/bin/mocha -R spec","watch":"node node_modules/mocha/bin/mocha -R spec --watch"},"_id":"d3-helpers@0.0.5","dist":{"shasum":"bf5e6bf5909d21d64ccef862d3942f6bcd9274f3","size":4787,"noattachment":false,"key":"/d3-helpers/-/d3-helpers-0.0.5.tgz","tarball":"http://registry.cnpm.dingdandao.com/d3-helpers/download/d3-helpers-0.0.5.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"},"maintainers":[{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"}],"directories":{},"publish_time":1396492302915,"_cnpm_publish_time":1396492302915,"_hasShrinkwrap":false},"0.0.3":{"name":"d3-helpers","description":"Little utility D3 functions","version":"0.0.3","author":{"name":"Gleb Bahmutov","email":"gleb.bahmutov@gmail.com"},"bugs":{"url":"https://github.com/bahmutov/d3-helpers/issues"},"dependencies":{},"devDependencies":{"better-assert":"^1.0.0","d3":"^3.4.4","expect.js":"^0.3.1","grunt":"^0.4.4","grunt-banner":"^0.2.2","grunt-clean-console":"^0.1.1","grunt-contrib-concat":"^0.4.0","grunt-contrib-copy":"^0.5.0","grunt-contrib-jshint":"^0.9.2","grunt-contrib-uglify":"^0.4.0","grunt-deps-ok":"^0.1.8","grunt-mocha-test":"^0.10.0","grunt-nice-package":"^0.3.0","grunt-npm2bower-sync":"^0.3.0","jshint-stylish":"^0.1.5","matchdep":"^0.3.0","mocha":"^1.18.2","pre-git":"0.0.15","sinon":"^1.9.0","time-grunt":"^0.3.1","grunt-contrib-watch":"^0.6.1"},"engines":{"node":"> 0.8"},"homepage":"https://github.com/bahmutov/d3-helpers","keywords":["console","html","beautify","node","browser"],"license":"MIT","main":"index.js","pre-commit":["npm test"],"repository":{"type":"git","url":"git@github.com:bahmutov/d3-helpers.git"},"scripts":{"test":"grunt && npm run unit","unit":"node node_modules/mocha/bin/mocha -R spec","watch":"node node_modules/mocha/bin/mocha -R spec --watch"},"_id":"d3-helpers@0.0.3","dist":{"shasum":"a21fbb099af7fb24b61422bdde2aea98e6b6d1ff","size":16537,"noattachment":false,"key":"/d3-helpers/-/d3-helpers-0.0.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/d3-helpers/download/d3-helpers-0.0.3.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"},"maintainers":[{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"}],"directories":{},"publish_time":1396464164581,"_cnpm_publish_time":1396464164581,"_hasShrinkwrap":false},"0.0.2":{"name":"d3-helpers","description":"Little utility D3 functions","version":"0.0.2","author":{"name":"Gleb Bahmutov","email":"gleb.bahmutov@gmail.com"},"bugs":{"url":"https://github.com/bahmutov/d3-helpers/issues"},"dependencies":{},"devDependencies":{"better-assert":"^1.0.0","d3":"^3.4.4","expect.js":"^0.3.1","grunt":"^0.4.4","grunt-banner":"^0.2.2","grunt-clean-console":"^0.1.1","grunt-contrib-concat":"^0.4.0","grunt-contrib-copy":"^0.5.0","grunt-contrib-jshint":"^0.9.2","grunt-contrib-uglify":"^0.4.0","grunt-deps-ok":"^0.1.8","grunt-nice-package":"^0.3.0","grunt-npm2bower-sync":"^0.3.0","jshint-stylish":"^0.1.5","matchdep":"^0.3.0","mocha":"^1.18.2","pre-git":"0.0.15","sinon":"^1.9.0","time-grunt":"^0.3.1"},"engines":{"node":"> 0.8"},"homepage":"https://github.com/bahmutov/d3-helpers","keywords":["console","html","beautify","node","browser"],"license":"MIT","main":"index.js","pre-commit":["npm test"],"repository":{"type":"git","url":"git@github.com:bahmutov/d3-helpers.git"},"scripts":{"test":"grunt && npm run unit","unit":"node node_modules/mocha/bin/mocha -R spec","watch":"node node_modules/mocha/bin/mocha -R spec --watch"},"_id":"d3-helpers@0.0.2","dist":{"shasum":"8ae821eee437aec0c70543d9d02ed2f7b717f94c","size":16398,"noattachment":false,"key":"/d3-helpers/-/d3-helpers-0.0.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/d3-helpers/download/d3-helpers-0.0.2.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"},"maintainers":[{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"}],"directories":{},"publish_time":1396457410935,"_cnpm_publish_time":1396457410935,"_hasShrinkwrap":false},"0.0.1":{"name":"d3-helpers","description":"Little utility D3 functions","version":"0.0.1","author":{"name":"Gleb Bahmutov","email":"gleb.bahmutov@gmail.com"},"bugs":{"url":"https://github.com/bahmutov/d3-helpers/issues"},"dependencies":{},"devDependencies":{"better-assert":"^1.0.0","expect.js":"^0.3.1","grunt":"^0.4.4","grunt-banner":"^0.2.2","grunt-clean-console":"^0.1.1","grunt-contrib-concat":"^0.4.0","grunt-contrib-copy":"^0.5.0","grunt-contrib-jshint":"^0.9.2","grunt-contrib-uglify":"^0.4.0","grunt-deps-ok":"^0.1.8","grunt-nice-package":"^0.3.0","grunt-npm2bower-sync":"^0.3.0","jshint-stylish":"^0.1.5","matchdep":"^0.3.0","mocha":"^1.18.2","pre-git":"0.0.15","sinon":"^1.9.0","time-grunt":"^0.3.1"},"engines":{"node":"> 0.8"},"homepage":"https://github.com/bahmutov/d3-helpers","keywords":["console","html","beautify","node","browser"],"license":"MIT","main":"index.js","pre-commit":["npm test"],"repository":{"type":"git","url":"git@github.com:bahmutov/d3-helpers.git"},"scripts":{"test":"grunt && npm run unit","unit":"node node_modules/mocha/bin/mocha -R spec","watch":"node node_modules/mocha/bin/mocha -R spec --watch"},"_id":"d3-helpers@0.0.1","dist":{"shasum":"bf639ac68f729e5ae455a4f30f58172639704223","size":16088,"noattachment":false,"key":"/d3-helpers/-/d3-helpers-0.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/d3-helpers/download/d3-helpers-0.0.1.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"},"maintainers":[{"name":"bahmutov","email":"gleb.bahmutov@gmail.com"}],"directories":{},"publish_time":1396456451865,"_cnpm_publish_time":1396456451865,"_hasShrinkwrap":false}},"readme":"# d3-helpers\n\n> Little utility D3 functions\n\n[![NPM][d3-helpers-icon] ][d3-helpers-url]\n\n[![Build status][d3-helpers-ci-image] ][d3-helpers-ci-url]\n[![Coverage Status][d3-helpers-coverage-image]][d3-helpers-coverage-url]\n[![dependencies][d3-helpers-dependencies-image] ][d3-helpers-dependencies-url]\n[![devdependencies][d3-helpers-devdependencies-image] ][d3-helpers-devdependencies-url]\n\n## Example\n\nD3 code before\n\n```js\n// x and y are scale functions\nvar line = d3.svg.line()\n  .x(function (d) { return x(new Date(d.date)); })\n  .y(function (d) { return y(+d.y); });\n```\n\nThis is very common D3 callback code. Here is the same code with callbacks refactored\nwith *d3-helpers*\n\n```js\nvar line = d3.svg.line()\n  .x(d3h('date', d3h.newDate, x))\n  .y(d3h('y', Number, y));\n```\n\nNotice several benefits:\n\n1. The `.x` callback is easier to read from left to right:\ngrab property *date*, then call *d3h.newDate* function on it, then call *x* function.\nNo more inside out composition flow as in `x(new Date(d.date))`\n2. Allowing only property names and functions to apply makes the author's intention clear.\n`+d.y` is always ambiguous: did the author forget to add something or was this the\nintention? Writing `d3h('y', Number, ...)` makes it explicit.\n3. By eliminating writing each callback function, we eliminate potential sources of errors.\nIn addition, since every function passed as argument is external, they becoming testable.\n\n## Install\n\nNode:\n\n```\nnpm install d3-helpers --save\nvar d3h = require('d3-helpers');\n```\n\nBrowser:\n\n```\nbower install d3-helpers\n<script src=\"bower_components/d3-helpers/index.js\"></script>\n// attaches as window.d3h object\n```\n\n## Api\n\n```\n// index\nd3h (alias d3h.d)\nd3h.i\nd3h.noop\nd3h.undef\nd3h.pass (alias d3.datum)\nd3h.property\nd3h.yes / no\nd3h.index\nd3h.value\nd3h.newDate\nd3h.hermit\n```\n\n**d3-helpers** is a [well-tested](test/helpers.spec.js) function\naugmented by other tiny functions. First the *d3h* function itself\n\n### d3h = d3h.d\n\nReturns a function that can chain property access and function composition.\n\n`d3h('propertyName', fnToApply, 'method name to call', 'anotherPropertyName', orAnotherFn, ...);`\n\n```js\nvar foo = {\n  getName: function() { return this.name; },\n  name: 'foo'\n};\nfunction concatSelf(x) { return x + x; }\nfunction add2(x) { return x + 2; }\nvar f = d3h('getName', concatSelf, 'length', add2);\nf(foo) // returns 8\n\n// f is the same as\nfunction (obj) {\n  return add2(concatSelf(obj.getName()).length);\n}\n```\n\nUse on `d` argument:\n\n```js\n  .x(d3h('length', xScale));\n  // d3h.d is an alias\n  .(d3h.d('length', xScale));\n```\n\nWhen calling a method on the object, `this` is bound to the\nobject, and it is passed itself as first argument.\n\n### d3h.i\n\nSame chaining as `d3h.d` but operates on the second argument, usually the index\n\n```js\n.y(d3h.i(yScale))\n// same as\n.y(function (d, i) {\n  return yScale(i);\n});\n```\n\nIf you want to return the index element, you need to execute the function to create the callback\n\n```js\n.y(d3h.i())\n// same as\n.y(function (d, i) {\n  return i;\n});\n```\n\n### d3h.noop\n\nSame as `function () {}`\n\n### d3h.undef\n\nSame as `function () { return; }` if you need a function that\nalways returns *undefined*.\n\n### d3h.pass = d3.datum\n\nSame as `function (d) { return d; }`\n\nYou can pass a function as argument, then it works as a wrapped\nfunction for any value passed next. For example to scale by function\n*triple* we can replace\n\n```\nfunction triple(x) { return 3 * x; }\n.attr('left', function (d) { return triple(d); })\n// with\n.attr('left', d3h.pass(triple));\n```\n\n### d3h.property\n\n```js\nfunction property(name) {\n  return function (obj) {\n    return obj[name];\n  };\n}\n// if passed function(s) as additional arguments\nfunction property(name, f, g, ...) {\n  return function (obj) {\n    return g(f(obj[name]));\n  };\n}\n```\n\nLogically, read this from left to right. First grab named property,\nthen apply function *f*, then apply to the result *g*, etc.\n\nUseful to extract a property and convert type, for example for D3 selections\n\n```js\n.text(d3h.property('name'))\n.width(d3h.property('age', Number))\n.text(d3h.property('date', String))\n```\n\nor scale property from datum\n\n```js\nvar x = d3.time.scale(), y = d3.scale.linear();\nvar line = d3.svg.line()\n  .x(function (d) { return x(d.date); })\n  .y(function (d) { return y(d.y); });\n// same using d3-helpers\nvar line = d3.svg.line()\n  .x(d3h.property('date', x))\n  .y(d3h.property('y', y))\n```\n\n### d3h.yes / no\n\n*d3h.yes* function always returns `true`,\n*d3h.no* function always returns `false`.\n\n### d3h.index\n\nSame as `function (d, i) { return i; }`\n\n### d3h.value\n\nSame as\n\n```js\nfunction (val) {\n  return function () {\n    return val;\n  };\n}\n```\n\nValue could be anything: number, string, undefined, even another function.\n\n### d3h.newDate\n\nSame as `function (d) { return new Date(d); }` to get around\nthe `new` keyword requirement in JavaScript for Dates. Useful\nfor constructing Date instances inside *d3h.property*\n\n```js\nvar x = d3.time.scale();\nvar line = d3.svg.line()\n  .x(function (d) { return x(new Date(d.date)); })\n// same using d3-helpers\nvar line = d3.svg.line()\n  .x(d3h.property('date', d3h.newDate, x))\n```\n\n### d3h.hermit\n\nWraps a function that should not receive any arguments. Returned function just\ncalls the original without any arguments.\n\n```js\nfunction failIfArguments() {\n  if (arguments.length) {\n    throw new Error('I cannot handle arguments');\n  }\n  return 42;\n}\nd3h.hermit(failIfArguments)(100); // 42\n```\n\n## Related\n\nI have another tiny library with single exported function called\n[functional-pipeline](https://github.com/bahmutov/functional-pipeline).\nIt is very similar to *d3h* function for building a left to right\npipelines, but has better debug mode.\n\n### Small print\n\nAuthor: Gleb Bahmutov &copy; 2014\n\n* [@bahmutov](https://twitter.com/bahmutov)\n* [glebbahmutov.com](http://glebbahmutov.com)\n* [blog](http://bahmutov.calepin.co/)\n\nLicense: MIT - do anything with the code, but don't blame me if it does not work.\n\nSpread the word: tweet, star on github, etc.\n\nSupport: if you find any problems with this module, email / tweet /\n[open issue](https://github.com/bahmutov/d3-helpers/issues) on Github\n\n## MIT License\n\nCopyright (c) 2014 Gleb Bahmutov\n\nPermission is hereby granted, free of charge, to any person\nobtaining a copy of this software and associated documentation\nfiles (the \"Software\"), to deal in the Software without\nrestriction, including without limitation the rights to use,\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the\nSoftware is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\nOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\nOTHER DEALINGS IN THE SOFTWARE.\n\n[d3-helpers-icon]: https://nodei.co/npm/d3-helpers.png?downloads=true\n[d3-helpers-url]: https://npmjs.org/package/d3-helpers\n[d3-helpers-ci-image]: https://travis-ci.org/bahmutov/d3-helpers.png?branch=master\n[d3-helpers-ci-url]: https://travis-ci.org/bahmutov/d3-helpers\n[d3-helpers-coverage-image]: https://coveralls.io/repos/bahmutov/d3-helpers/badge.png\n[d3-helpers-coverage-url]: https://coveralls.io/r/bahmutov/d3-helpers\n[d3-helpers-dependencies-image]: https://david-dm.org/bahmutov/d3-helpers.png\n[d3-helpers-dependencies-url]: https://david-dm.org/bahmutov/d3-helpers\n[d3-helpers-devdependencies-image]: https://david-dm.org/bahmutov/d3-helpers/dev-status.png\n[d3-helpers-devdependencies-url]: https://david-dm.org/bahmutov/d3-helpers#info=devDependencies\n","_attachments":{},"homepage":"https://github.com/bahmutov/d3-helpers","bugs":{"url":"https://github.com/bahmutov/d3-helpers/issues"},"license":"MIT"}