jsongraph
Version:
powerful minimalist graph/dataflow programming based on jsonschema references (nodejs/coffeescript)
65 lines (61 loc) • 1.51 kB
JavaScript
// Generated by CoffeeScript 1.9.3
(function() {
var expr;
expr = require('property-expr');
module.exports = (function(me) {
me.__parse = function(k, data) {
var integer, itemstr;
if (typeof k !== 'string') {
return k;
}
integer = false;
return itemstr = k.replace(/(\{)(.*?)(\})/g, function($0, $1, $2) {
var err, result;
if ($2 == null) {
return String('{}');
}
if (data == null) {
return '';
}
result = '';
if ((data[$2] != null) && typeof data[$2] === 'function') {
result = data[$2]();
} else {
if (data[$2] != null) {
result = data[$2];
} else {
try {
result = expr.getter($2)(data);
} catch (_error) {
err = _error;
result = '';
}
}
}
me.__parse(result);
return result;
});
};
me.parse = function(json, data) {
var k, nk, nv, v;
if (typeof json === "object") {
for (k in json) {
v = json[k];
nk = me.__parse(k, data);
nv = me.__parse(v, data);
if (typeof nv === 'object') {
nv = me.parse(nv, data);
}
if (nv != null) {
json[nk] = nv;
}
if (nk !== k) {
delete json[k];
}
}
}
return json;
};
return me;
})({});
}).call(this);