marine_macro_testing_utils/
lib.rs1use std::io::Read;
18use std::path::Path;
19
20pub fn stream_from_file<P>(path: P) -> proc_macro2::TokenStream
21where
22 P: AsRef<Path>,
23{
24 let items = items_from_file(path);
25 quote::quote! { #(#items)* }
26}
27
28pub fn items_from_file<P>(path: P) -> Vec<syn::Item>
29where
30 P: AsRef<Path>,
31{
32 let mut file = std::fs::File::open(path).expect("Unable to open file");
33
34 let mut src = String::new();
35 file.read_to_string(&mut src).expect("Unable to read file");
36
37 let token_file = syn::parse_file(&src).expect("Unable to parse file");
38 token_file.items
39}
40
41pub fn to_syn_item(token_stream: proc_macro2::TokenStream) -> Vec<syn::Item> {
42 let file: syn::File = syn::parse2(token_stream).expect("token stream should be parsed");
43 file.items
44}