{"_id":"dolce","_rev":"115262","name":"dolce","description":"Collections with syntactic sugar","dist-tags":{"latest":"0.0.14"},"maintainers":[{"name":"architectd","email":"craig.j.condon@gmail.com"},{"name":"crcn","email":"craig.j.condon@gmail.com"}],"time":{"modified":"2021-06-03T10:48:07.000Z","created":"2012-01-20T07:57:08.965Z","0.0.14":"2013-05-31T23:24:47.773Z","0.0.13":"2012-06-12T20:01:37.806Z","0.0.12":"2012-04-03T00:12:06.483Z","0.0.11":"2012-03-03T21:15:49.516Z","0.0.10":"2012-03-01T05:15:08.337Z","0.0.9":"2012-02-24T22:45:06.936Z","0.0.8":"2012-02-19T07:09:55.563Z","0.0.7":"2012-02-17T20:56:02.489Z","0.0.6":"2012-01-29T21:55:09.398Z","0.0.5":"2012-01-29T20:28:40.463Z","0.0.4":"2012-01-29T06:55:00.130Z","0.0.3":"2012-01-29T05:37:36.276Z","0.0.2":"2012-01-23T18:26:54.677Z","0.0.1":"2012-01-20T07:57:08.965Z"},"users":{},"author":{"name":"Craig Condon"},"repository":{"url":""},"versions":{"0.0.14":{"name":"dolce","description":"Collections with syntactic sugar","version":"0.0.14","repository":{"url":""},"engines":{"node":"*"},"dependencies":{"crema":"*","sift":"*","underscore":"1.2.x"},"devDependencies":{"benchmark":"*","colors":"*","vows":"*"},"main":"./lib/index.js","author":{"name":"Craig Condon"},"scripts":{"test":"vows --spec"},"readmeFilename":"README.md","_id":"dolce@0.0.14","dist":{"shasum":"51c4a91edee2e02d8d241c1751d2ee1774c04dc9","size":80753,"noattachment":false,"key":"/dolce/-/dolce-0.0.14.tgz","tarball":"http://registry.cnpm.dingdandao.com/dolce/download/dolce-0.0.14.tgz"},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"architectd","email":"craig.j.condon@gmail.com"},"maintainers":[{"name":"architectd","email":"craig.j.condon@gmail.com"},{"name":"crcn","email":"craig.j.condon@gmail.com"}],"directories":{},"publish_time":1370042687773,"_cnpm_publish_time":1370042687773,"_hasShrinkwrap":false},"0.0.13":{"name":"dolce","description":"Collections with syntactic sugar","version":"0.0.13","repository":{"url":""},"engines":{"node":"*"},"dependencies":{"crema":"*","sift":"*","underscore":"1.2.x"},"devDependencies":{"benchmark":"*","colors":"*","vows":"*"},"main":"./lib/index.js","author":{"name":"Craig Condon"},"scripts":{"test":"vows --spec"},"_npmUser":{"name":"architectd","email":"craig.j.condon@gmail.com"},"_id":"dolce@0.0.13","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.19","_defaultsLoaded":true,"dist":{"shasum":"a42019de4415bf68fd8e3e00c331b2b44f724d51","size":10240,"noattachment":false,"key":"/dolce/-/dolce-0.0.13.tgz","tarball":"http://registry.cnpm.dingdandao.com/dolce/download/dolce-0.0.13.tgz"},"maintainers":[{"name":"architectd","email":"craig.j.condon@gmail.com"},{"name":"crcn","email":"craig.j.condon@gmail.com"}],"directories":{},"publish_time":1339531297806,"_cnpm_publish_time":1339531297806,"_hasShrinkwrap":false},"0.0.12":{"name":"dolce","description":"Collections with syntactic sugar","version":"0.0.12","repository":{"url":""},"engines":{"node":"*"},"dependencies":{"crema":"*","sift":"*","underscore":"1.2.x"},"devDependencies":{"benchmark":"*","colors":"*","vows":"*"},"main":"./lib/index.js","author":{"name":"Craig Condon"},"scripts":{"test":"vows --spec"},"_npmUser":{"name":"architectd","email":"craig.j.condon@gmail.com"},"_id":"dolce@0.0.12","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"3716ed61d1d47717df61a7175ead571b80fef2a2","size":20480,"noattachment":false,"key":"/dolce/-/dolce-0.0.12.tgz","tarball":"http://registry.cnpm.dingdandao.com/dolce/download/dolce-0.0.12.tgz"},"maintainers":[{"name":"architectd","email":"craig.j.condon@gmail.com"},{"name":"crcn","email":"craig.j.condon@gmail.com"}],"directories":{},"publish_time":1333411926483,"_cnpm_publish_time":1333411926483,"_hasShrinkwrap":false},"0.0.11":{"name":"dolce","description":"Collections with syntactic sugar","version":"0.0.11","repository":{"url":""},"engines":{"node":"*"},"dependencies":{"crema":"*","sift":"*","underscore":"1.2.x","ebnf-diagram":"0.1.x"},"devDependencies":{"benchmark":"*","colors":"*","vows":"*"},"main":"./lib/index.js","author":{"name":"Craig Condon"},"scripts":{"test":"vows --spec"},"_npmUser":{"name":"architectd","email":"craig.j.condon@gmail.com"},"_id":"dolce@0.0.11","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"857017e69cc77a3a5bd04852d4b0708bf3c51598","size":20480,"noattachment":false,"key":"/dolce/-/dolce-0.0.11.tgz","tarball":"http://registry.cnpm.dingdandao.com/dolce/download/dolce-0.0.11.tgz"},"maintainers":[{"name":"architectd","email":"craig.j.condon@gmail.com"},{"name":"crcn","email":"craig.j.condon@gmail.com"}],"directories":{},"publish_time":1330809349516,"_cnpm_publish_time":1330809349516,"_hasShrinkwrap":false},"0.0.10":{"name":"dolce","description":"Collections with syntactic sugar","version":"0.0.10","repository":{"url":""},"engines":{"node":"*"},"dependencies":{"crema":"*","sift":"*"},"devDependencies":{"benchmark":"*","colors":"*","vows":"*"},"main":"./lib/index.js","author":{"name":"Craig Condon"},"scripts":{"test":"vows --spec"},"_npmUser":{"name":"architectd","email":"craig.j.condon@gmail.com"},"_id":"dolce@0.0.10","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"e77bfe31c5a347323a14294cdf4ad29e5c8707f6","size":20480,"noattachment":false,"key":"/dolce/-/dolce-0.0.10.tgz","tarball":"http://registry.cnpm.dingdandao.com/dolce/download/dolce-0.0.10.tgz"},"maintainers":[{"name":"architectd","email":"craig.j.condon@gmail.com"},{"name":"crcn","email":"craig.j.condon@gmail.com"}],"directories":{},"publish_time":1330578908337,"_cnpm_publish_time":1330578908337,"_hasShrinkwrap":false},"0.0.9":{"name":"dolce","description":"Collections with syntactic sugar","version":"0.0.9","repository":{"url":""},"engines":{"node":"*"},"dependencies":{"crema":"*","sift":"*"},"devDependencies":{"benchmark":"*","colors":"*","vows":"*"},"main":"./lib/index.js","author":{"name":"Craig Condon"},"scripts":{"test":"vows --spec"},"_npmUser":{"name":"architectd","email":"craig.j.condon@gmail.com"},"_id":"dolce@0.0.9","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"27eb0a44f28df3b66346a0feae8fe097bcabeacb","size":20480,"noattachment":false,"key":"/dolce/-/dolce-0.0.9.tgz","tarball":"http://registry.cnpm.dingdandao.com/dolce/download/dolce-0.0.9.tgz"},"maintainers":[{"name":"architectd","email":"craig.j.condon@gmail.com"},{"name":"crcn","email":"craig.j.condon@gmail.com"}],"directories":{},"publish_time":1330123506936,"_cnpm_publish_time":1330123506936,"_hasShrinkwrap":false},"0.0.8":{"name":"dolce","description":"Collections with syntactic sugar","version":"0.0.8","repository":{"url":""},"engines":{"node":"*"},"dependencies":{"crema":"*","sift":"*"},"devDependencies":{"benchmark":"*","colors":"*","vows":"*"},"main":"./lib/index.js","author":{"name":"Craig Condon"},"scripts":{"test":"vows --spec"},"_npmUser":{"name":"architectd","email":"craig.j.condon@gmail.com"},"_id":"dolce@0.0.8","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"675fa873aa49dd5913ba64b202dec093419a56a1","size":20480,"noattachment":false,"key":"/dolce/-/dolce-0.0.8.tgz","tarball":"http://registry.cnpm.dingdandao.com/dolce/download/dolce-0.0.8.tgz"},"maintainers":[{"name":"architectd","email":"craig.j.condon@gmail.com"},{"name":"crcn","email":"craig.j.condon@gmail.com"}],"directories":{},"publish_time":1329635395563,"_cnpm_publish_time":1329635395563,"_hasShrinkwrap":false},"0.0.7":{"name":"dolce","description":"Collections with syntactic sugar","version":"0.0.7","repository":{"url":""},"engines":{"node":"*"},"dependencies":{"crema":"*","sift":"*"},"devDependencies":{"benchmark":"*","colors":"*","vows":"*"},"main":"./lib/index.js","author":{"name":"Craig Condon"},"scripts":{"test":"vows --spec"},"_npmUser":{"name":"architectd","email":"craig.j.condon@gmail.com"},"_id":"dolce@0.0.7","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"b8c54d84a7e210625fce861d4b9f1095a1fb38ac","size":20480,"noattachment":false,"key":"/dolce/-/dolce-0.0.7.tgz","tarball":"http://registry.cnpm.dingdandao.com/dolce/download/dolce-0.0.7.tgz"},"maintainers":[{"name":"architectd","email":"craig.j.condon@gmail.com"},{"name":"crcn","email":"craig.j.condon@gmail.com"}],"directories":{},"publish_time":1329512162489,"_cnpm_publish_time":1329512162489,"_hasShrinkwrap":false},"0.0.6":{"name":"dolce","description":"Collections with syntactic sugar","version":"0.0.6","repository":{"url":""},"engines":{"node":"*"},"dependencies":{"crema":"*","sift":"*"},"devDependencies":{"benchmark":"*","colors":"*","vows":"*"},"main":"./lib/index.js","author":{"name":"Craig Condon"},"scripts":{"test":"vows --spec"},"_npmUser":{"name":"architectd","email":"craig.j.condon@gmail.com"},"_id":"dolce@0.0.6","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"f18e32aefcb1618708de2e5abb187c9d087125a9","size":20480,"noattachment":false,"key":"/dolce/-/dolce-0.0.6.tgz","tarball":"http://registry.cnpm.dingdandao.com/dolce/download/dolce-0.0.6.tgz"},"maintainers":[{"name":"architectd","email":"craig.j.condon@gmail.com"},{"name":"crcn","email":"craig.j.condon@gmail.com"}],"directories":{},"publish_time":1327874109398,"_cnpm_publish_time":1327874109398,"_hasShrinkwrap":false},"0.0.5":{"name":"dolce","description":"Collections with syntactic sugar","version":"0.0.5","repository":{"url":""},"engines":{"node":"*"},"dependencies":{"crema":"*","sift":"*"},"devDependencies":{"benchmark":"*","colors":"*","vows":"*"},"main":"./lib/index.js","author":{"name":"Craig Condon"},"scripts":{"test":"vows --spec"},"_npmUser":{"name":"architectd","email":"craig.j.condon@gmail.com"},"_id":"dolce@0.0.5","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"46d63a80ab63eff3c5806e17a9d8e9b730095699","size":20480,"noattachment":false,"key":"/dolce/-/dolce-0.0.5.tgz","tarball":"http://registry.cnpm.dingdandao.com/dolce/download/dolce-0.0.5.tgz"},"maintainers":[{"name":"architectd","email":"craig.j.condon@gmail.com"},{"name":"crcn","email":"craig.j.condon@gmail.com"}],"directories":{},"publish_time":1327868920463,"_cnpm_publish_time":1327868920463,"_hasShrinkwrap":false},"0.0.4":{"name":"dolce","description":"Collections with syntactic sugar","version":"0.0.4","repository":{"url":""},"engines":{"node":"*"},"dependencies":{"crema":"*","sift":"*"},"devDependencies":{"benchmark":"*","colors":"*","vows":"*"},"main":"./lib/index.js","author":{"name":"Craig Condon"},"scripts":{"test":"vows --spec"},"_npmUser":{"name":"architectd","email":"craig.j.condon@gmail.com"},"_id":"dolce@0.0.4","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"d05262cd6a877502b2112e2aa0471ddae48f8754","size":20480,"noattachment":false,"key":"/dolce/-/dolce-0.0.4.tgz","tarball":"http://registry.cnpm.dingdandao.com/dolce/download/dolce-0.0.4.tgz"},"maintainers":[{"name":"architectd","email":"craig.j.condon@gmail.com"},{"name":"crcn","email":"craig.j.condon@gmail.com"}],"directories":{},"publish_time":1327820100130,"_cnpm_publish_time":1327820100130,"_hasShrinkwrap":false},"0.0.3":{"name":"dolce","description":"Collections with syntactic sugar","version":"0.0.3","repository":{"url":""},"engines":{"node":"*"},"dependencies":{"crema":"*","sift":"*"},"devDependencies":{"benchmark":"*","colors":"*","vows":"*"},"main":"./lib/index.js","author":{"name":"Craig Condon"},"scripts":{"test":"vows --spec"},"_npmUser":{"name":"architectd","email":"craig.j.condon@gmail.com"},"_id":"dolce@0.0.3","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"ce91d4749ba959a0527a56881079777dbb905d12","size":10240,"noattachment":false,"key":"/dolce/-/dolce-0.0.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/dolce/download/dolce-0.0.3.tgz"},"maintainers":[{"name":"architectd","email":"craig.j.condon@gmail.com"},{"name":"crcn","email":"craig.j.condon@gmail.com"}],"directories":{},"publish_time":1327815456276,"_cnpm_publish_time":1327815456276,"_hasShrinkwrap":false},"0.0.2":{"name":"dolce","description":"Collections with syntactic sugar","version":"0.0.2","repository":{"url":""},"engines":{"node":"*"},"dependencies":{"crema":"*","sift":"*"},"devDependencies":{"benchmark":"*","colors":"*","vows":"*"},"main":"./lib/index.js","author":{"name":"Craig Condon"},"scripts":{"test":"vows --spec"},"_npmUser":{"name":"architectd","email":"craig.j.condon@gmail.com"},"_id":"dolce@0.0.2","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"3c797d2c2b33e7230d92797666bb4746284a024b","size":20480,"noattachment":false,"key":"/dolce/-/dolce-0.0.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/dolce/download/dolce-0.0.2.tgz"},"maintainers":[{"name":"architectd","email":"craig.j.condon@gmail.com"},{"name":"crcn","email":"craig.j.condon@gmail.com"}],"directories":{},"publish_time":1327343214677,"_cnpm_publish_time":1327343214677,"_hasShrinkwrap":false},"0.0.1":{"name":"dolce","description":"Router with syntactic sugar","version":"0.0.1","repository":{"url":""},"engines":{"node":"*"},"dependencies":{"crema":"*","sift":"*"},"devDependencies":{"benchmark":"*","colors":"*","vows":"*"},"main":"./lib/index.js","author":{"name":"Craig Condon"},"scripts":{"test":"vows --spec"},"_npmUser":{"name":"architectd","email":"craig.j.condon@gmail.com"},"_id":"dolce@0.0.1","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"a88f90c12b33f357b64782d6159a2b417de5f085","size":10240,"noattachment":false,"key":"/dolce/-/dolce-0.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/dolce/download/dolce-0.0.1.tgz"},"maintainers":[{"name":"architectd","email":"craig.j.condon@gmail.com"},{"name":"crcn","email":"craig.j.condon@gmail.com"}],"directories":{},"publish_time":1327046228965,"_cnpm_publish_time":1327046228965,"_hasShrinkwrap":false}},"readme":"\nDolce is a collection library used primarily for routing.  [![Build Status](https://secure.travis-ci.org/crcn/dolce.js.png)](https://secure.travis-ci.org/crcn/dolce)\n\n## Use Cases:\n\n\n\n\n## Basic Example:\n\n```javascript\nvar dolce = require('dolce'),\ncol1 = dolce.collection(),\ncol2 = dolce.collection(),\ncol3 = dolce.collection(),\ncol4 = dolce.collection(),\ncol5 = dolce.collection();\n\n//explicit chain\ncol1.add('hello', 'HELLO');\ncol1.add('hello -> world', 'WORLD');\n\nconsole.log(col1.get('world')); //[{ value: 'HELLO' }, { value: 'WORLD' }]\n\n//parameters\ncol5.add('validate/:name');\ncol5.add('validate/:firstName -> add/user/:firstName/:lastName');\nconsole.log(col5.get('add/user/craig/condon')); //[{ value: 'HELLO' }, { value: 'WORLD' }]\n\n//implicit chain\ncol2.add('hello/*', 'HELLO')\ncol2.add('hello', 'WORLD');\n\nconsole.log(col2.get('hello')); //[{ value: 'HELLO' }, { value: 'WORLD' } ]\n\n//greedy chain\ncol3.add('hello/**', 'HELLO')\ncol3.add('hello/awesome/**', 'AWESOME');\ncol3.add('hello/awesome/world', 'WORLD');\n\nconsole.log(col3.get('hello/awesome/world')); //[{ value: 'HELLO' }, { value: 'AWESOME' }, { value: 'WORLD' } ]\n\n//filtering chains\ncol4.add('-method=UPDATE users/:userid','update user');\ncol4.add('-method=DELETE users/:userid', 'delete user');\ncol4.add('-method=GET users/:userid', 'get user');\n\nconsole.log(col4.get('users/14732843', { tags: { method: 'GET' } })); //[{ tags: { method: 'GET' }, value: 'get user' }];\n```\n\n## API\n\n### .add(type, value);\n\nAdds data to the collection\n\n\n### .addObject(value);\n\nAdds an object to the collection\n\n```javascript\n\ncollection.addObject({\n\t'key': 1,\n\t'key2': 2\n})\n```\n\n### .get(channel[, ops])\n\nReturns a collection based on the params given\n\n- `channel` - the path to the value, e.g., 'add/user', 'validate/some/stuff'\n- `ops` - the options for fetching data\n\t- `tags` - the tags to filter against\n\nA returned value may look something like this:\n\n```javascript\n\n{\n  \"paths\": [\n    {\n      \"value\": \"users\",\n      \"param\": false\n    },\n    {\n      \"value\": \"14732843\",\n      \"param\": false\n    }\n  ],\n  \"tags\": {\n    \"method\": \"GET\"\n  },\n  \"chains\": [\n    [\n      {\n        \"paths\": [\n          {\n            \"value\": \"users\",\n            \"param\": false\n          },\n          {\n            \"value\": \"userid\",\n            \"param\": true\n          }\n        ],\n        \"params\": {\n          \"userid\": \"14732843\"\n        },\n        \"tags\": {\n          \"method\": \"GET\"\n        },\n        \"value\": \"get user\"\n      }\n    ]\n  ]\n}\n\n```\n\n### .contains(channel[, ops])\n\nTRUE if the given channel exists in the collection. API is the same as `.get`\n\n\n## Caveats\n\n```javascript\n\ncollection.add('-anotherTag validate/**');\ncollection.add('-method=POST validate/**');\ncollection.get('-method=POST validate/login');\n\n//goes through -method=POST validate/** before getting to login, NOT -anotherTag validate/** \ncollection.get('validate/login'); \n\n\ncollection.add('-method=POST validate/**');\ncollection.get('-method validate/login');\n\n//does NOT go through validate/** because the method is not POST\ncollection.get('validate/login'); \n\n\n\n//this doesn't work\ncollection.add(':param/*');\n\n//with this.\ncollection.add('path');\n\n//but with this this:\ncollection.add('someParam');\n\n```\n\n\n\n\n","_attachments":{},"readmeFilename":"README.md"}