Comments (9)
This use-case no, but for general use-cases to be able to have tools not built with the compiler that can work with the AST is moreso what I meant.
from crystal.
That could be easily changed with a flag though.
Why did you close this? I think this it's worth pursuing a solution.
from crystal.
Actually, I'm not sure how these would fit into this as modules/enums/etc don't inherit from a generic Object
class. Maybe instead we could have a crystal tool namespace
command that outputs information about every NamedType
? Thoughts?
from crystal.
Yeah I suppose a separate tool might be better for this.
from crystal.
Put together what I'm looking for here, let me know if this idea is PR worthy: https://github.com/nobodywasishere/crystal/tree/nobody/namespaces-tool
Resisted the urge to add docs to the output haha. Honestly maybe the move is to just add a crystal tool dump_ast
command that has params like --wants-doc
/--no-cleanup
/--top-level
/etc, so other tooling can just accept that and use that, instead of needing bespoke cli tools for everything. Would go in-hand with #14705, as we'd need a way to serialize the AST to/from disk.
from crystal.
For this use case you don't need the full AST (compared to other tools which trace method calls, for example). It's just a very high-level view of the outline. So I don't think this is related to #14705.
Actually, you can pull out the information about (documented) namespaces from index.json
from the doc generator.
Improvements to the data format would help improcing this, and of course decoupling the raw data from HTML generation (#6947 and https://forum.crystal-lang.org/t/the-weight-of-compiler-tools/6888).
from crystal.
Good point with the docs index.json
though, I'll look into trying to use that.
from crystal.
Unfortunately the index.json
only includes stuff in the ./src
directory by default, whereas I'd want everything available in the entire namespace (./lib
, stdlib, and c lib bindings).
from crystal.
My thought was this issue, if it just became adding more output to the docs json generator, would be duplicates of #7904 and #6721, and should be handled in those issues (treating the docs json output as a serialization of a top-level analysis)
from crystal.
Related Issues (20)
- Nilable `Proc` types inside libs
- Cannot return `Proc`s from top-level funs
- `ReferenceStorage(T)` is always atomic even when `T` isn't HOT 1
- Add `crystal tool method_types` for listing method parameter types HOT 4
- Passing nil to Addrinfo.getaddrinfo gives unexpected error message HOT 1
- Package installation fails on Windows due to missing SQLite3 .lib files HOT 2
- `File#truncate` raises `File::AccessDeniedError` on Windows when file was opened in append mode HOT 3
- Cache compiler results for tools
- `close_on_exec` on Windows HOT 2
- Pointer equality for `Slice` HOT 4
- Forbid variable assignment in function call HOT 4
- Captured block parameter not recognised when used inside macro HOT 2
- Internal error when using `sizeof` as generic type argument in inferred ivar type
- ECR escape sequences do not work with `-`
- Customizing or hiding `Benchmark.ips`'s output format HOT 3
- Adding a Difference method to the Math module HOT 2
- Visit the Time.local in the macro. HOT 3
- Add Makefile support `--mcpu=native` as override FLAGS to permit build crystal compiler can enable this option optional for a better performance. HOT 4
- Compiler should Emit Warning/Notes when Deduced Type Differs from Annotated Type. HOT 2
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 crystal.