Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Jinja is a text templating language. A valid ninja template may not produce valid JSON/YAML/etc. Sometimes you need more power than a config language gives you, specifically when you want reuse. Helm uses something like jinja, but the template files are often complex and messy (and they are looking into supporting Lua to deal with these problems). CloudFormation built function semantics on top of JSON/YAML twice: once in the form of templates and again in the form of its intrinsic functions. Skycfg uses the starlark language to output YAML, and this is the best approach since it has the right semantics and uses a familiar language (starlark is stripped down Python).


Why not jq, then?


With a deep enough JSON structure with similar enough items, the jq expressions are hard to make or maintain. This is a real world example: jq '.sourceSelectionTrees[].rootNode.children[].children' | jq '.[]? | .action.attributeMapping.attributeSources' | jq -r '.[]? | select(.type == "XYZ") | .dataRef.id'


jq is a json parsing tool, no?


A very powerful one. You could in theory stream multiple files into jq and have it output effectively arbitrary JSON based on their contents since it supports conditionals.

I don't think it would be very pretty since it's not designed for that use case, but the jq language is certainly powerful enough to allow it.


It can be used to generate JSON using functions, input data, conditional expressions and anything you want.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: