From 7a244dd2af1375af9197188aa84f13bc215b4065 Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Fri, 29 Jun 2012 23:14:59 +0200 Subject: o Remembering that all objects should start with a single 'collection'. --- index.js | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) (limited to 'index.js') diff --git a/index.js b/index.js index 5705fec..583d5ae 100644 --- a/index.js +++ b/index.js @@ -4,15 +4,18 @@ var _ = require('underscore'); * Takes any object and make it look like a collection+json object with utility methods. */ function fromObject(root) { - root = root || {}; - var collection = root.collection || {}; - collection.items = collection.items || {}; - collection.links = collection.links || {}; - collection.queries = collection.queries || {}; - collection.templates = collection.templates || {}; + root = _.isObject(root) ? root : {}; + root.collection = _.isObject(root.collection) ? root.collection : {}; + var c = root.collection; + c.version = _.isString(c.version) ? c.version : "1.0"; + c.items = _.isArray(c.items) ? c.items : []; + c.links = _.isArray(c.links) ? c.links : []; + c.queries = _.isArray(c.queries) ? c.queries : []; + c.templates = _.isArray(c.templates) ? c.templates : []; - collection.mapItemData = function(f) { - return _.map(collection.items, function(item) { + // TODO: make un-enumerable + root.mapItemData = function(f) { + return _.map(this.collection.items, function(item) { // console.log("item", item); var map = _.reduce(item.data, function(map, field) { // console.log("field", field); @@ -24,7 +27,7 @@ function fromObject(root) { }); }; - return collection; + return root; } module.exports.fromObject = fromObject; -- cgit v1.2.3