Comments (4)
I tried to dump ast using go-spew (https://github.com/davecgh/go-spew), it's practicable: about 7w line source code is generated.
The problem is: we need fork go-spew and modify its source code to make the generated files meet go's syntax.
from go-jsonnet.
My feeling is that the easiest and most maintainable way would be to do it by hand (without go-spew), i.e. have a function that does a type switch over ast nodes and formats each of them into a go source code representation. There are just ~30 AST node types IIRC. This will give us full control over the output and let us specially handle location information, aliased nodes and other complex cases. I think that with some helper functions the boilerplate could be minimal.
from go-jsonnet.
utter(github.com/kortschak/utter) works. See experiment: #101
The only problem is: we need make ALL fields of AST node as public, then the dumped source code can be put in any package. Otherwise, we must put the source code in the "ast" package.
from go-jsonnet.
#82 will also benefit from this.
from go-jsonnet.
Related Issues (20)
- jsonnet-lint missing std.objectKeysValues HOT 1
- parseYaml panics when passed empty string
- gazelle naming convention changes
- Decimal number displayed differently
- Need help building the c-bindings
- jsonnetfmt cli tool could support a canonical mode
- [Question] Parser package, children function
- std.splitLimitR is missing from go-jsonnet
- Support for stdlib context (cancellation / timeouts)
- Concurrency safe `FileImporter` HOT 6
- Interest for import toml ? HOT 1
- Buggy field visibility handling in`objectHas` in Go impl
- escapeStringXml vs escapeStringXML
- `--jpath` does not support multiple search paths HOT 4
- std.parseYaml wraps result in an array when string values contain HOT 3
- Question: Any chance a more recent stdlib could be pulled in? HOT 1
- Is it possible to define a native function with a default argument?
- INTERNAL ERROR: (CRASH) interface conversion: interface {} is int, not float64 HOT 1
- Error when using custom functions with `int` parameters or return types HOT 1
- Requests: Tool to statically expand import/importstr expressions and consolidate Jsonnet files
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from go-jsonnet.