Expand description
A crate for creating templates from Rust source files.
§Features
§Valid Rust
- All templates can be compilable Rust source files
- Linting & language servers work
§Extensible
- Implement
rule::Rule
to add new rules
§Example
use replacer::{rule::StringRule, TemplateBuilder};
fn main() -> anyhow::Result<()> {
let template = TemplateBuilder::new()
.rule(StringRule::new("replace", "world")?)
.build();
assert_eq!(template.apply("Hello $$replace$$!")?, "Hello world!");
Ok(())
}
§Rules
§rule::StringRule
let some_str = "Hello $$replace_with_world$$!";
// Also works in comments, hello $$replace_with_world$$
§rule::TypeRule
// Unfortunately the type needs to be wrapped with angle brackets here
let some_type = <replacer::rust_type!(replace_with_type; String;)>::new();
let some_generic_type: Vec<replacer::rust_type!(replace_with_type_in_vec; i32;)> = vec![];
§rule::StructRule
replacer::rust_struct!(replace_with_struct; Point{ x: i32, y: i32 };);
§rule::ExprRule
println!("1 + 1 = {}", replacer::rust_expr!(replace_with_expression; 1 + 2;));
Modules§
Macros§
- rust_
expr - Template macro for replacing a Rust expression with a placeholder expression that can be compiled.
- rust_
struct - Template macro for replacing a Rust struct with a placeholder struct that can be compiled.
- rust_
type - Template macro for replacing a Rust type with a placeholder type that can be compiled.
Structs§
- Template
- Internal representation of the template file.
- Template
Builder - Builder for the
Template
struct.