Expand description
§tmpl_resolver
A lightweight template resolution engine with conditional logic support.
§Key Concepts
- Templates: Contain either direct text parts or conditional selectors
- Selectors: Enable branch logic based on parameter values
- Variable Resolution: Recursive resolution with context-aware lookup
§Features
[]
- Minimal configuration for
no_std
use
- Minimal configuration for
- [“all”]: Enable all features
- [“std”]
- Enables standard library
- Uses ahash::HashMap for faster lookups
- [“serde”]
- Adds serialization capabilities
- Enables template storage/transmission
- [“bincode”]
- Efficient binary serialization
§Examples
§Basic
use tmpl_resolver::{TemplateResolver, error::ResolverResult};
fn main() -> ResolverResult<()> {
let resolver: TemplateResolver = [
("h", "Hello"),
("greeting", "{h} { $name }! Today is {$day}")
]
.try_into()?;
let result = resolver.get_with_context("greeting", &[("name", "Alice"), ("day", "Monday")])?;
assert_eq!(result, "Hello Alice! Today is Monday");
Ok(())
}
§Conditional Logic
use tmpl_resolver::{TemplateResolver, error::ResolverResult};
fn main() -> ResolverResult<()> {
let selector_msg = [(
"message",
r#"$status ->
[success] Operation succeeded!
[error] Error occurred!
*[default] Unknown status: {$status}
"#
)];
let resolver = TemplateResolver::from_raw_slice(&selector_msg)?;
let success_msg = resolver.get_with_context("message", &[("status", "success")])?;
assert_eq!(success_msg, "Operation succeeded!");
Ok(())
}
§Escape
"{{ a }}"
=>"a"
"{{{a}}}"
=>"a"
"{{{{ a }}}}"
=>"a"
"{{ {a} }}"
=>"{a}"
"{{a}"
=> ❌ nom Error, code: take_until"{{{ {{a}} }}}"
=>"{{a}}"
"{{{ {{ a }} }}}"
=>"{{ a }}"
"{{{ {{a} }}}"
=>"{{a}"
use tmpl_resolver::{ResolverResult, TemplateResolver};
fn main() -> ResolverResult<()> {
let resolver: TemplateResolver = [
("h", "Hello { $name }"),
("greeting", "{h}!{{ how_are_you }}? {{{ {{$name}} }}}"),
]
.try_into()?;
let ctx = [("name", "Alice"), ("how_are_you", "How are you")];
let result = resolver.get_with_context("greeting", &ctx)?;
assert_eq!(result, "Hello Alice!how_are_you? {{$name}}");
Ok(())
}
Re-exports§
pub use error::ResolverResult;
pub use resolver::TemplateResolver;
Modules§
Type Aliases§
- Context
Map std