diff --git a/README.md b/README.md index 03093081..ec8564c9 100644 --- a/README.md +++ b/README.md @@ -142,10 +142,7 @@ pub fn main() { let src = Path::new("src/main.rs.in"); let dst = Path::new(&out_dir).join("main.rs"); - let mut registry = syntex::Registry::new(); - - serde_codegen::register(&mut registry); - registry.expand("", &src, &dst).unwrap(); + serde_codegen::expand(&src, &dst).unwrap(); } ``` @@ -203,10 +200,7 @@ mod inner { let src = Path::new("src/main.rs.in"); let dst = Path::new(&out_dir).join("main.rs"); - let mut registry = syntex::Registry::new(); - - serde_codegen::register(&mut registry); - registry.expand("", &src, &dst).unwrap(); + serde_codegen::expand(&src, &dst).unwrap(); } } diff --git a/examples/.cargo/config b/examples/.cargo/config new file mode 100644 index 00000000..19551331 --- /dev/null +++ b/examples/.cargo/config @@ -0,0 +1,5 @@ +paths = [ + "../serde", + "../serde_codegen", + "../serde_macros", +] diff --git a/examples/serde-syntex-example/build.rs b/examples/serde-syntex-example/build.rs index b1aadd78..b034d05f 100644 --- a/examples/serde-syntex-example/build.rs +++ b/examples/serde-syntex-example/build.rs @@ -12,10 +12,7 @@ mod inner { let src = Path::new("src/main.rs.in"); let dst = Path::new(&out_dir).join("main.rs"); - let mut registry = syntex::Registry::new(); - - serde_codegen::register(&mut registry); - registry.expand("", &src, &dst).unwrap(); + serde_codegen::expand(&src, &dst).unwrap(); } } diff --git a/serde_codegen/src/lib.rs b/serde_codegen/src/lib.rs index 52ca7912..a5c51a40 100644 --- a/serde_codegen/src/lib.rs +++ b/serde_codegen/src/lib.rs @@ -22,6 +22,11 @@ extern crate syntax; #[cfg(not(feature = "with-syntex"))] extern crate rustc_plugin; +#[cfg(feature = "with-syntex")] +use std::io; +#[cfg(feature = "with-syntex")] +use std::path::Path; + #[cfg(not(feature = "with-syntex"))] use syntax::feature_gate::AttributeType; @@ -31,6 +36,16 @@ include!(concat!(env!("OUT_DIR"), "/lib.rs")); #[cfg(not(feature = "with-syntex"))] include!("lib.rs.in"); +#[cfg(feature = "with-syntex")] +pub fn expand(src: S, dst: D) -> io::Result<()> + where S: AsRef, + D: AsRef, +{ + let mut registry = syntex::Registry::new(); + register(&mut registry); + registry.expand("", src.as_ref(), dst.as_ref()) +} + #[cfg(feature = "with-syntex")] pub fn register(reg: &mut syntex::Registry) { use syntax::{ast, fold};