Open anowell opened 7 years ago
The crux here seems to be that I don't know how to implement relative include paths. My preference is to relative paths as well. Leading /
for crate root would probably also be a nice feature.
I have not been able to figure out which rust source file is currently being compiled when the procedural macro gets executed, so the only thing I have to go by is the current working directory, which is the crate root.
Hm, maybe https://www.reddit.com/r/rust/comments/a3fgp6/procmacro_determining_the_callers_module_path/ is a lead. I would first need to get hold of a Span
. Maybe I could go token_stream.iter().next().unwrap().span().call_site().source_file()
or something like that.
Note: source_file()
is experimental (https://github.com/rust-lang/rust/issues/54725)
@TheButlah Ah, cool. Definitely something for me to keep an eye on. Not too stoked about using nightly, but thank you for the heads up!
When I move modules around, I end up breaking Bart rendered components because of the path being relative to crate root. It might just be that I also happen to be using a lot of
include_str!
which has me used to using paths relative to the file that invokes the macro, but I find relative paths to be a bit nicer. On the flip side, someone with all their templates in a roottemplates
dir would probably feel the opposite, so take this with a grain of salt. I wonder if you could use a prefix/
to indicate crate root.(feel free to disregard/close.. just sharing feedback)