jsongraph
Version:
powerful minimalist graph/dataflow programming based on jsonschema references (nodejs/coffeescript)
32 lines (24 loc) • 699 B
text/coffeescript
jg = require 'jsongraph'
json =
graph:
a:
value: "{book.category[0].text}"
b:
value: "{foo}"
value_int: {"$ref":"#/data/book/code"}
value_str: {"$ref":"#/data/book/category[0].text"}
data =
book:{ code: 1, category: [{text: "fairytales stories"}] }
foo: () -> ++@.book.code
jg.opts.verbose = 2
graph = jg.init json
# whole graph
graph.evaluate data
graph.dump()
# node specific
data.book.category[0].text = "foo"
graph.set 'a', graph.evaluate( data, {graph:graph.get('a')} )
graph.dump()
# whole graph but define parse order instead of first parsing expressions before jsonreferences
graph.evaluate data, {parsers:["ref","expr"]}
graph.dump()