/varj

Ultra lightweight rust templating utility. Simply parse {{ key }} into value.

Primary LanguageRustApache License 2.0Apache-2.0

varj

Crates.io msrv 1.71.1 tests Documentation license

A string interpolation utility to replace Mustache like placeholders with stored variables.

  • Works as an extremely lightweight template library
  • Does not require template compilation
  • Simply replaces {{ key }} with value
  • Whitespace surrounding the key is ignored: {{key}} and {{ key }} are equal.

Interact with this utility via VarjMap.

Examples

Basic usage:

let mut map = varj::VarjMap::new();
map.insert("key", "value");

let expected = "value";
let actual = map.render("{{ key }}")?;

assert_eq!(expected, actual);

With a json string:

let mut variables = varj::VarjMap::new();
variables.insert("name", "Christopher");
variables.insert("age", "30");

let json = r#"{
"name" = "{{ name }}",
"age" = {{ age }}
}"#;

let expected = r#"{
"name" = "Christopher",
"age" = 30
}"#;

let actual = variables.render(json)?;

assert_eq!(expected, actual);

VarjMap implements From<HashMap> and can be converted back to one when needed. This is useful if you want to build a VarjMap from an iterator, or iterate over one. See example.

MSRV Policy

The minimum supported Rust version is currently 1.71.1.

varj supports the latest 8 stable releases of Rust - approximately 1 year. Increasing MSRV is not considered a semver-breaking change.

Contributing

Thank you very much for considering to contribute to this project!

We welcome any form of contribution:

  • New issues (feature requests, bug reports, questions, ideas, ...)
  • Pull requests (documentation improvements, code improvements, new features, ...)

Note: Before you take the time to open a pull request, please open an issue first.

See CONTRIBUTING.md for details.

License

varj is distributed under the terms of both the MIT license and the Apache License (Version 2.0).

See LICENSE-APACHE and LICENSE-MIT for details.