{"_id":"underscore-awesomer","_rev":"59-f2d00d2620057c9284888a7c8cd59c8a","name":"underscore-awesomer","description":"Awesome Extensions to Underscore.js (or Lo-Dash).","dist-tags":{"latest":"1.2.4"},"versions":{"1.2.1":{"author":{"name":"Kevin Malakoff","url":"https://github.com/kmalakoff"},"name":"underscore-awesomer","description":"Awesome Extensions to Underscore.js","keywords":["underscore-awesomer","underscore-awesomerjs","underscore","underscorejs"],"url":"http://kmalakoff.github.com/underscore-awesomer/","homepage":"http://kmalakoff.github.com/underscore-awesomer/","repository":{"type":"git","url":"git://github.com/kmalakoff/underscore-awesomer.git"},"optionalDependencies":{"underscore":">=1.3.3"},"main":"underscore-awesomer.js","version":"1.2.1","_npmUser":{"name":"kmalakoff","email":"xmann.intl@gmail.com"},"_id":"underscore-awesomer@1.2.1","dependencies":{"underscore":">=1.3.3"},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"cd6a422d9c5b2e3de724b76dc3a91c664d2bacd3","tarball":"https://registry.npmjs.org/underscore-awesomer/-/underscore-awesomer-1.2.1.tgz","integrity":"sha512-0ymOd1j6qKeBJg0nytyWPicaMj/fJoDB1kQP0lvTxGLWfEw7V9z7QXLmYjWfpiGl9Fha6MAwQ8fHH02si6A9Gg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEr3L8pczNuOGWUMJ3AUdbJg13CngT7xPLMrqPLnNH4dAiEA99KDahEFH5GOmV+MklAG0XnHRQGZpUUDioUVfiP5FWc="}]},"readme":"","maintainers":[{"name":"kmalakoff","email":"xmann.intl@gmail.com"}],"directories":{}},"1.2.2":{"author":{"name":"Kevin Malakoff","url":"https://github.com/kmalakoff"},"name":"underscore-awesomer","description":"Awesome Extensions to Underscore.js","keywords":["underscore-awesomer","underscore-awesomerjs","underscore","underscorejs"],"url":"http://kmalakoff.github.com/underscore-awesomer/","homepage":"http://kmalakoff.github.com/underscore-awesomer/","repository":{"type":"git","url":"git://github.com/kmalakoff/underscore-awesomer.git"},"optionalDependencies":{"underscore":">=1.3.3"},"main":"underscore-awesomer.js","version":"1.2.2","_npmUser":{"name":"kmalakoff","email":"xmann.intl@gmail.com"},"_id":"underscore-awesomer@1.2.2","dependencies":{"underscore":">=1.3.3"},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"1d684f952620d37f4292e087b2841bd39e6bcecb","tarball":"https://registry.npmjs.org/underscore-awesomer/-/underscore-awesomer-1.2.2.tgz","integrity":"sha512-0RIPaH/AiVFB5bHg5sb631bVpqm/TAexMTj84u81CgYIAsRzzByjhH6Ao6nFAdg54pQVb6OG4quuMmOmm1s2Jg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEtWi4qycGBv9sRqJPipTALExv2Tb+kbNFOnlI2ZWJ3qAiEAuIn+dLijIp/GPjsKZsDEA4b7Q7cHvDY23gjNKU4ZhsA="}]},"readme":"","maintainers":[{"name":"kmalakoff","email":"xmann.intl@gmail.com"}],"directories":{}},"1.2.3":{"author":{"name":"Kevin Malakoff","url":"https://github.com/kmalakoff"},"name":"underscore-awesomer","description":"Awesome Extensions to Underscore.js (or Lo-Dash).","keywords":["underscore-awesomer","underscore-awesomerjs","underscore","underscorejs"],"url":"http://kmalakoff.github.com/underscore-awesomer/","homepage":"http://kmalakoff.github.com/underscore-awesomer/","repository":{"type":"git","url":"http://github.com/kmalakoff/underscore-awesomer.git"},"optionalDependencies":{"underscore":">=1.3.3"},"main":"underscore-awesomer.js","version":"1.2.3","readme":"[![Build Status](https://secure.travis-ci.org/kmalakoff/underscore-awesomer.png)](http://travis-ci.org/kmalakoff/underscore-awesomer)\n\n````\nUnderscore-Awesomer* provides some (ahem) awesome extensions to the Underscore utility-belt library for JavaScript.\n````\n\nSee below for all the awesome stuff you can do and check out my blog for the latest examples: http://braincode.tumblr.com/\n\nEnjoy!\n\nYou can get the library here:\n\n* [Development version][1]\n* [Production version][2]\n\n### Dependencies\n\n* [Underscore.js][3]\n\nOR\n\n* [Lo-Dash][4]\n\n\nFor Docs, License, Tests, and pre-packed downloads of Underscore, see: http://documentcloud.github.com/underscore/\n\n*Underscore is already awesome, so something that improves it must make\nUnderscore 'awesomer'!\n\n\n# API Highlights:\n\n## Keypaths (_.hasKeypath, _.keypath, _.keypathValueOwner)\nRather than just using simple keys to reference properties, you can use keypaths (dot-delimited strings or arrays of strings) to traverse you object.\n\n### Examples:\n\n````\n_.keypath({hello: {world: ‘!’} }, ‘hello.world’); // returns ‘!’\n_.keypathValueOwner({hello: {world: ‘!’} }, ‘hello.world’); // returns hello\n````\n\n## Type Conversions (_.resolveConstructor, _.toType)\n_.toType introduces a convention of _.to{SomeType} and complies with underscore’s _.is{SomeType} convention if the constructor name or instanceof don’t find a match. Useful it you wrap a class inside another.\n\n### Examples:\n\n````\nvar constructor = _.resolveConstructor(‘SomeNamespace.SomeClass’), instance = new constructor();\nvar actual_date = _.toType(wrapped_date, ‘Date’);\n````\n\n## Removal (_.remove)\nProvides many variants on how to remove something from an array or object collection.\n\n### Examples:\n\n````\nvar removed = _.remove([2,4,2], 2); _.isEqual(removed, 2);\nvar removed = _.remove({bob: 1, fred: 3, george: 5}, [‘bob’, ‘george’]); _.isEqual(removed, [1,5]);\n````\n\n## JSON serialization (_.toJSON, _.fromJSON)\n\n**Note**: this functionality has been renamed to JSONS.serialize and JSONS and been moved to: https://github.com/kmalakoff/json-serialize\n\nor you can play with it live on [jsfiddle][5]\n\n## Object Lifecycle (_.own, _.disown)\n\n**Note**: this functionality has been renamed to LC.own and LC.disown and been move to: https://github.com/kmalakoff/lifecycle\n\n## Compare for the rest of us (_.compare)\nWraps built in compare with self-evident return types (_.COMPARE_EQUAL, _.COMPARE_ASCENDING, _.COMPARE_DESCENDING) and allows objects to provide custom compare methods.\n\n### Examples:\n\n````\nif (_.compare(‘x’, ‘y’) === _.COMPARE_ASCENDING) return ‘y’\nif (_.compare(‘こんにちは’, ‘さようなら’, ‘localeCompare’) === _.COMPARE_ASCENDING) return ‘さようなら’;\nif (_.compare(custom_compare_instance, ‘a string’) === _.COMPARE_ASCENDING) return custom_compare_instance;\n````\n\n## Super helpers (_.getSuperFunction/_.superCall/_.superApply)\nUseful if you don’t know what the super class will be ahead of time (To put this in context, take a look at Mixin.js: https://github.com/kmalakoff/mixin):\n\n````\nlocal_backbone_collection_mixin { _add: function(model) { if (!model.id) model.id = model.cid;); _.superApply(this, ‘_add’, arguments); } };\n````\n\n## And more: _.cloneToDepth, _pluck with remove, _.findIndex, _.functionExists/_.callIfExists, and _.getValue with default if missing, and _.className.\n\n# Release Notes\n\n###1.2.1\n\n- converted back to CoffeeScript\n\n- build using easy-bake\n\n- added packaging tests\n\n###1.2.3\n\n- added lodash server-side support\n\nBuilding, Running and Testing the library\n-----------------------\n\n###Installing:\n\n1. install node.js: http://nodejs.org\n2. install node packages: 'npm install'\n\n###Commands:\n\nLook at: https://github.com/kmalakoff/easy-bake\n\n\n[1]: https://raw.github.com/kmalakoff/underscore-awesomer/1.2.3/underscore-awesomer.js\n[2]: https://raw.github.com/kmalakoff/underscore-awesomer/1.2.3/underscore-awesomer.min.js\n[3]: http://documentcloud.github.com/underscore/\n[4]: http://lodash.com/\n[5]: http://jsfiddle.net/kmalakoff/VkNaa/\n","_id":"underscore-awesomer@1.2.3","dependencies":{"underscore":">=1.3.3"},"dist":{"shasum":"2c139f9c90f57f8ac2e149eb55d10f6db2b8b420","tarball":"https://registry.npmjs.org/underscore-awesomer/-/underscore-awesomer-1.2.3.tgz","integrity":"sha512-N8L8+snby7sDWsnq8LQG1L3a3L5jsPteVCV2QM7LI1RZJr/mSl0Hfwq9JybHe9csD039JczeurKzWfGUdhxrqw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDL4a+VqqCyYWL9FP+QNUCowXNfSrKbNEXVrDsX22qk8AiA9yX193nj9CEx5gH+bwNmnhZwmqI5sh+4CeuF4DbHenw=="}]},"_npmVersion":"1.1.49","_npmUser":{"name":"kmalakoff","email":"xmann.intl@gmail.com"},"maintainers":[{"name":"kmalakoff","email":"xmann.intl@gmail.com"}]},"1.2.4":{"author":{"name":"Kevin Malakoff","url":"https://github.com/kmalakoff"},"name":"underscore-awesomer","description":"Awesome Extensions to Underscore.js (or Lo-Dash).","keywords":["underscore-awesomer","underscore-awesomerjs","underscore","underscorejs"],"url":"http://kmalakoff.github.com/underscore-awesomer/","homepage":"http://kmalakoff.github.com/underscore-awesomer/","repository":{"type":"git","url":"http://github.com/kmalakoff/underscore-awesomer.git"},"optionalDependencies":{"underscore":">=1.3.3"},"main":"underscore-awesomer.js","version":"1.2.4","readme":"[![Build Status](https://secure.travis-ci.org/kmalakoff/underscore-awesomer.png)](http://travis-ci.org/kmalakoff/underscore-awesomer)\n\n````\nUnderscore-Awesomer* provides some (ahem) awesome extensions to the Underscore utility-belt library for JavaScript.\n````\n\nSee below for all the awesome stuff you can do and check out my blog for the latest examples: http://braincode.tumblr.com/\n\nEnjoy!\n\n#Download Latest (1.2.4):\n\nPlease see the [release notes](https://github.com/kmalakoff/underscore-awesomer/blob/master/RELEASE_NOTES.md) for upgrade pointers.\n\n* [Development version](https://raw.github.com/kmalakoff/underscore-awesomer/1.2.4/underscore-awesomer.js)\n* [Production version](https://raw.github.com/kmalakoff/underscore-awesomer/1.2.4/underscore-awesomer.min.js)\n\n\n###Module Loading\n\nUnderscore-Awesomer.js is compatible with RequireJS, CommonJS, Brunch and AMD module loading. Module names:\n\n* 'underscore-awesomer' - underscore-awesomer.js.\n\n### Dependencies\n\n* [Underscore.js](http://documentcloud.github.com/underscore/)\n\nOR\n\n* [Lo-Dash](http://lodash.com/)\n\n\nFor Docs, License, Tests, and pre-packed downloads of Underscore, see: http://documentcloud.github.com/underscore/\n\n*Underscore is already awesome, so something that improves it must make\nUnderscore 'awesomer'!\n\n\n# API Highlights:\n\n## Keypaths (_.hasKeypath, _.keypath, _.keypathValueOwner)\nRather than just using simple keys to reference properties, you can use keypaths (dot-delimited strings or arrays of strings) to traverse you object.\n\n### Examples:\n\n````\n_.keypath({hello: {world: ‘!’} }, ‘hello.world’); // returns ‘!’\n_.keypathValueOwner({hello: {world: ‘!’} }, ‘hello.world’); // returns hello\n````\n\n## Type Conversions (_.resolveConstructor, _.toType)\n_.toType introduces a convention of _.to{SomeType} and complies with underscore’s _.is{SomeType} convention if the constructor name or instanceof don’t find a match. Useful it you wrap a class inside another.\n\n### Examples:\n\n````\nvar constructor = _.resolveConstructor(‘SomeNamespace.SomeClass’), instance = new constructor();\nvar actual_date = _.toType(wrapped_date, ‘Date’);\n````\n\n## Removal (_.remove)\nProvides many variants on how to remove something from an array or object collection.\n\n### Examples:\n\n````\nvar removed = _.remove([2,4,2], 2); _.isEqual(removed, 2);\nvar removed = _.remove({bob: 1, fred: 3, george: 5}, [‘bob’, ‘george’]); _.isEqual(removed, [1,5]);\n````\n\n## JSON serialization (_.toJSON, _.fromJSON)\n\n**Note**: this functionality has been renamed to JSONS.serialize and JSONS and been moved to: https://github.com/kmalakoff/json-serialize\n\nor you can play with it live on [jsfiddle](http://jsfiddle.net/kmalakoff/VkNaa/)\n\n## Object Lifecycle (_.own, _.disown)\n\n**Note**: this functionality has been renamed to LC.own and LC.disown and been move to: https://github.com/kmalakoff/lifecycle\n\n## Compare for the rest of us (_.compare)\nWraps built in compare with self-evident return types (_.COMPARE_EQUAL, _.COMPARE_ASCENDING, _.COMPARE_DESCENDING) and allows objects to provide custom compare methods.\n\n### Examples:\n\n````\nif (_.compare(‘x’, ‘y’) === _.COMPARE_ASCENDING) return ‘y’\nif (_.compare(‘こんにちは’, ‘さようなら’, ‘localeCompare’) === _.COMPARE_ASCENDING) return ‘さようなら’;\nif (_.compare(custom_compare_instance, ‘a string’) === _.COMPARE_ASCENDING) return custom_compare_instance;\n````\n\n## Super helpers (_.getSuperFunction/_.superCall/_.superApply)\nUseful if you don’t know what the super class will be ahead of time (To put this in context, take a look at Mixin.js: https://github.com/kmalakoff/mixin):\n\n````\nlocal_backbone_collection_mixin { _add: function(model) { if (!model.id) model.id = model.cid;); _.superApply(this, ‘_add’, arguments); } };\n````\n\n## And more: _.cloneToDepth, _pluck with remove, _.findIndex, _.functionExists/_.callIfExists, and _.getValue with default if missing, and _.className.\n\n\nBuilding, Running and Testing the library\n-----------------------\n\n###Installing:\n\n1. install node.js: http://nodejs.org\n2. install node packages: 'npm install'\n\n###Commands:\n\nLook at: https://github.com/kmalakoff/easy-bake\n","_id":"underscore-awesomer@1.2.4","dependencies":{"underscore":">=1.3.3"},"dist":{"shasum":"7635de8f95a3b1ac11c64770db7cd066bf584782","tarball":"https://registry.npmjs.org/underscore-awesomer/-/underscore-awesomer-1.2.4.tgz","integrity":"sha512-D1vH0cSGRZR2rKhFp3rl/w3jB/wKRSNQjyQNvK/n8vWUZjeI/OgsEE7BlBcTd/YxQK6lPCFQUjZP+Ke5WRZQ2g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDm2NPbTWco2wQD826t0ecf6FaRn2gox0yLxM3a+dqWgAiBl4BKSyBv0Enaa99r4zFNCDug5wqQE4VQRZPwRikLSBw=="}]},"_npmVersion":"1.1.49","_npmUser":{"name":"kmalakoff","email":"xmann.intl@gmail.com"},"maintainers":[{"name":"kmalakoff","email":"xmann.intl@gmail.com"}]}},"readme":"","maintainers":[{"name":"kmalakoff","email":"xmann.intl@gmail.com"}],"time":{"modified":"2022-06-28T04:04:23.996Z","created":"2012-06-15T11:08:16.017Z","1.2.1":"2012-06-15T11:08:18.945Z","1.2.2":"2012-06-17T05:12:51.288Z","1.2.3":"2012-09-16T23:41:52.692Z","1.2.4":"2012-09-17T15:58:49.878Z"},"author":{"name":"Kevin Malakoff","url":"https://github.com/kmalakoff"},"repository":{"type":"git","url":"http://github.com/kmalakoff/underscore-awesomer.git"}}