bart icon indicating copy to clipboard operation
bart copied to clipboard

Relative paths

Open anowell opened this issue 8 years ago • 4 comments

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 root templates 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)

anowell avatar Feb 08 '17 05:02 anowell

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.

maghoff avatar Feb 08 '17 09:02 maghoff

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)

maghoff avatar Dec 07 '18 08:12 maghoff

Just discovered this, maybe its helpful. It doesn't work on the current version of Rust but I've submitted a pr to fix it.

Its also very cursed.

TheButlah avatar Apr 05 '22 02:04 TheButlah

@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!

maghoff avatar Apr 05 '22 20:04 maghoff