projectfluent / fluent-rs

Rust implementation of Project Fluent
https://projectfluent.org
Apache License 2.0
1.04k stars 95 forks source link

Expose spans in parser / source positions in the AST #270

Open juliancoffee opened 1 year ago

juliancoffee commented 1 year ago

I'm thinking about writing my own tool for fluent files and if I want to use something like git blame to find out updates of messages, I'll need to know the span of entry. fluent-js seems to expose that and I guess fluent-rs operates on spans too, as it has it in errors, but I couldn't find it in public API, is it possible to expose it?

zbraniecki commented 1 year ago

Yup, we did not include it in Rust parser, but the intent was always to eventually add it for the purpose you're describing.

Please, feel free to prototype - the main condition is that it should not degrade runtime performance. That may mean we need to keep it as a separate AST/parser or via some generics/macros generalize the current AST/parser to allow for white space preservation.

alerque commented 1 month ago

The later issue #346 seems to be a duplicate of this. There is actually a bit more discussion there that might be worth reviewing before anybody jumps in to start implementing this.

mondeja commented 1 month ago

What about a cst (Concrete Syntax Tree) feature for fluent-syntax that would add this information to the current AST parser?