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_stduse 
- Minimal configuration for 
 - [“std”]
- Enables standard library
 - Uses ahash::HashMap for faster lookups
 
 - [“serde”]
- Adds serialization capabilities
 - Enables template storage/transmission
 
 - [“bincode”]
- Efficient binary serialization
 
 - [“toml”]
- Enables 
ResolverError::{DecodeTomlError, EncodeTomlError} 
 - Enables 
 
§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 = selector_msg.try_into()?;
  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::{error::ResolverResult, TemplateResolver};
fn main() -> ResolverResult<()> {
  let resolver: TemplateResolver = [
    ("h", "Hello { $name }"),
    ("how_are_you", "How Are You"),
    ("greeting", "{h}!{{ how_are_you }}? {{     {$name} }}"),
  ]
  .try_into()?;
  // dbg!(&resolver);
  let ctx = [("name", "Alice")];
  let result = resolver.get_with_context("greeting", &ctx)?;
  assert_eq!(result, "Hello Alice!how_are_you? {$name}");
  Ok(())
}Re-exports§
pub use error::ResolverError as Error;pub use error::ResolverResult as Result;pub use resolver::TemplateResolver;
Modules§
Enums§
- Template
 - Core template representation
 
Type Aliases§
- Context
Map std - Context
MapBuf std