diff options
author | Trygve Laugstøl <trygvis@inamo.no> | 2012-06-28 12:27:39 +0200 |
---|---|---|
committer | Trygve Laugstøl <trygvis@inamo.no> | 2012-06-28 12:27:39 +0200 |
commit | b883e87b1e5222388e6562296009a49126d3af3c (patch) | |
tree | 90cb37dcc307f442aab63e52d1ecd0a13adedd14 /index.js | |
download | collection_json.js-b883e87b1e5222388e6562296009a49126d3af3c.tar.gz collection_json.js-b883e87b1e5222388e6562296009a49126d3af3c.tar.bz2 collection_json.js-b883e87b1e5222388e6562296009a49126d3af3c.tar.xz collection_json.js-b883e87b1e5222388e6562296009a49126d3af3c.zip |
o Initial import of application/vnd.collection+json parser code.
Diffstat (limited to 'index.js')
-rw-r--r-- | index.js | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/index.js b/index.js new file mode 100644 index 0000000..5705fec --- /dev/null +++ b/index.js @@ -0,0 +1,40 @@ +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 || {}; + + collection.mapItemData = function(f) { + return _.map(collection.items, function(item) { +// console.log("item", item); + var map = _.reduce(item.data, function(map, field) { +// console.log("field", field); + map[field.name] = field.value; + return map; + }, {}); +// console.log("map", map); + return f(map); + }); + }; + + return collection; +} +module.exports.fromObject = fromObject; + +function fromString(s) { + var object = {}; + try { + object = JSON.parse(s); + } + catch(ex) { + } + return fromObject(object); +} +module.exports.fromString = fromString; |