Figura 🃏
A lightweight, flexible template formatting engine for Rust with support for custom delimiters and extensible directive parsing.
Features
- Variable Substitution:
{name}→ context values - Repetition:
{pattern:count}→ repeat patterns - Conditionals:
{condition?true_part:false_part}→ conditional rendering - Custom Delimiters: Use any characters as template boundaries
- Extensible Parsers: Create custom directive handlers
- Escape Sequences:
{{and}}for literal delimiters - Alignment Support:
{value<},{value>},{value^}for formatting hints
Quick Start
use ;
use HashMap;
// Basic variable substitution
let template = parse?;
let mut ctx = new;
ctx.insert;
assert_eq!;
// Repetition
let template = parse?;
let mut ctx = new;
ctx.insert;
assert_eq!;
// Conditionals
let template = parse?;
let mut ctx = new;
ctx.insert;
assert_eq!;
// Custom delimiters
let template = parse?;
Value Types
The engine supports multiple value types:
ctx.insert;
ctx.insert;
ctx.insert;
ctx.insert;
Custom Parsers
Extend functionality by implementing the Parser trait:
;
let template = ?;
Error Handling
The engine provides detailed error information:
MissingDelimiter: Unmatched template delimitersNoValueFound: Referenced variable not in contextExecutionError: Runtime directive execution failuresDirectiveParsing: Parser unable to handle directive
License
MIT