Dependency resolution with json path expressions
You have a deeply nested object with some missing values.
You also have some rules how to calculate a value from other values.
Depresso takes an object and the calculation rules,
and does a dependency resolution.
Let's see an example.
We have an object with a placeholder for missing values:
MISSING = -1inventory =general:discount: 0.1price: MISSINGproducts:name: 'Bag'netPrice: 20tax: 0.1price: MISSINGname: 'Beer'netPrice: 10tax: 0.2price: 12
There are two rules
Here is the code describing these rules:
rules =target: '/products//price'depends:netPrice: '../netPrice'tax: '../tax': ->@netPrice * 1 + @taxtarget: '/general/price'depends:prices: '/products//price': ->_reduce@pricesx+y0
A rule consists of
Circular rules should be avoided.
Finally, we specify which node(s) should be calculated:
require 'depresso'resolve inventoryrules'/general/price'consolelog inventorygeneralprice # prints 34