bomboni_template
Utilities for working with Handlebars templates.
This crate provides a collection of custom Handlebars helpers for template rendering. It includes helpers for mathematical operations, string transformations, value manipulation, conditional logic, and dynamic template rendering.
Examples
Math Operations
use Handlebars;
use Value;
use register_helpers;
let mut hbs = new;
register_helpers;
// Basic arithmetic
assert_eq!;
// Advanced operations
assert_eq!;
assert_eq!;
assert_eq!;
String Case Conversion
use Handlebars;
use Value;
use register_helpers;
let mut hbs = new;
register_helpers;
// Case conversion
assert_eq!;
assert_eq!;
assert_eq!;
assert_eq!;
// String formatting
assert_eq!;
Value Manipulation
use Handlebars;
use ;
use register_helpers;
let mut hbs = new;
register_helpers;
// Object operations
assert_eq!;
// Array operations
assert_eq!;
// Check truthiness
assert_eq!;
// Group by key
hbs.render_template.unwrap;
Switch/Case Pattern Matching
use Handlebars;
use json;
use register_helpers;
let mut hbs = new;
register_helpers;
let template = r#"
{{#switch x}}
{{#case 42}}life{{/case}}
{{#case 2 4 8}}power of two{{/case}}
{{#default}}other{{/default}}
{{/switch}}
"#;
assert_eq!;
assert_eq!;
assert_eq!;
Dynamic Template Rendering and Local Variables
use Handlebars;
use json;
use register_helpers;
let mut hbs = new;
register_helpers;
// Dynamic template rendering
assert_eq!;
// Set local variables
let template = r#"
{{*set name = "John" age = 14000}}
{{@name}} is {{@age}} years old.
"#;
let rendered = hbs.render_template.unwrap;
assert_eq!;
Helpers Reference
Math Helpers
add: Additionsubtract: Subtractionmultiply: Multiplicationdivide: Divisionmodulo: Modulonegate: Negate valueabsolute: Absolute valueround: Round to nearest integerceil: Ceilingfloor: Floorsqrt: Square rootsign: Sign of numberpow: Power (x^p)clamp: Clamp value between min and max
String Helpers
Case Conversion:
upperCase: UPPER CASElowerCase: lower casetitleCase: Title CasecamelCase: camelCasepascalCase: PascalCasesnakeCase: snake_casescreamingSnakeCase: SCREAMING_SNAKE_CASEkebabCase: kebab-casetrainCase: Train-Case- And many more (toggleCase, alternatingCase, cobolCase, flatCase, etc.)
Formatting:
toString: Convert value to stringtoJson: Convert to JSON (with optionalprettyparameter)concat: Concatenate multiple valuestoIntegerString: Convert to integer string
Value Helpers
object: Create object from named parametersobjectHasKey: Check if object has keyarray: Create array from parametersgroupBy: Group array by keycontains: Check if haystack contains needlenone: Check if all values are falsyall: Check if all values are truthysome: Check if some value is truthyfilter: Filter array by predicate templateorElse: Return item if truthy, else fallbackandThen: Return fallback if item truthy, else itemeitherOr: Conditional value selection
Switch Helper
switch: Begin switch statement (takes value parameter)case: Match one or more values (supports multiple value parameters)default: Fallback when no case matches
Render and Decorators
render: Dynamically render template stringset: Set local variables (decorator syntax)