Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Initial commit

  • Loading branch information...
commit 93d28e0a09305a46d8dff5c646166ec8667f0041 0 parents
@tj authored
1  .gitignore
@@ -0,0 +1 @@
+node_modules
4 .npmignore
@@ -0,0 +1,4 @@
+support
+test
+examples
+*.sock
5 History.md
@@ -0,0 +1,5 @@
+
+0.0.1 / 2010-01-03
+==================
+
+ * Initial release
7 Makefile
@@ -0,0 +1,7 @@
+
+test:
+ @./node_modules/.bin/mocha \
+ --require should \
+ --reporter spec
+
+.PHONY: test
58 Readme.md
@@ -0,0 +1,58 @@
+
+# only
+
+ Return whitelisted properties of an object.
+
+## Installation
+
+ $ npm install only
+
+## API
+
+ An array or space-delimited string may be given:
+
+```js
+var obj = {
+ name: 'tobi',
+ last: 'holowaychuk',
+ email: 'tobi@learnboost.com',
+ _id: '12345'
+};
+
+var user = only(obj, 'name last email');
+```
+
+yields:
+
+```js
+{
+ name: 'tobi',
+ last: 'holowaychuk',
+ email: 'tobi@learnboost.com'
+}
+```
+
+## License
+
+(The MIT License)
+
+Copyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca>
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
8 index.js
@@ -0,0 +1,8 @@
+
+module.exports = function(obj, keys){
+ if ('string' == typeof keys) keys = keys.split(/ +/);
+ return keys.reduce(function(ret, key){
+ ret[key] = obj[key];
+ return ret;
+ }, {});
+};
13 package.json
@@ -0,0 +1,13 @@
+{
+ "name": "only",
+ "version": "0.0.1",
+ "description": "return whitelisted properties of an object",
+ "keywords": [],
+ "author": "TJ Holowaychuk <tj@vision-media.ca>",
+ "dependencies": {},
+ "devDependencies": {
+ "mocha": "*",
+ "should": "*"
+ },
+ "main": "index"
+}
29 test/only.js
@@ -0,0 +1,29 @@
+
+var only = require('..');
+
+var obj = {
+ name: 'tobi',
+ last: 'holowaychuk',
+ email: 'tobi@learnboost.com',
+ _id: '12345'
+};
+
+var expected = {
+ name: 'tobi',
+ last: 'holowaychuk',
+ email: 'tobi@learnboost.com'
+};
+
+describe('only(obj, keys)', function(){
+ describe('given an array', function(){
+ it('should return only the whitelisted properties', function(){
+ only(obj, ['name', 'email', 'last']).should.eql(expected);
+ })
+ })
+
+ describe('given an string', function(){
+ it('should return only the whitelisted properties', function(){
+ only(obj, 'name email last').should.eql(expected);
+ })
+ })
+})
Please sign in to comment.
Something went wrong with that request. Please try again.