ribboncurls

Crates.ioribboncurls
lib.rsribboncurls
version0.4.1
sourcesrc
created_at2024-05-13 18:02:42.615917
updated_at2024-09-19 10:29:05.702444
descriptionSimple rendering of mustache templates
homepagehttps://github.com/tinted-theming/ribboncurls
repositoryhttps://github.com/tinted-theming/ribboncurls
max_upload_size
id1238728
size225,496
(tinted-theming-bot)

documentation

https://docs.rs/ribboncurls

README

Ribboncurls

Ribboncurls logo

Matrix Chat Crates.io Tests

Ribboncurls is a Rust library for rendering Mustache templates. Ribboncurls is passing all 136 of the Mustache v1.4.2 spec tests.

Note: Ribboncurls library public API is subject to change, so use with caution.

Usage

Basic Usage

let template = r#"Hello, {{name}}!"#;
let data = r#"{"name": "world"}"#;
let result = ribboncurls::render(template, data, None).unwrap();
assert_eq!(result, "Hello, world!");

With Partials

The following is to make use of Mustache partials:

let partials = r#"header: <header>Some header partial</header>
footer: <footer>Footer partial content goes here</footer>"#;
let template = r#"{{> header}}
Hello, {{name}}!
{{> footer}}"#;
let data = r#"{"name": "world"}"#;
let result = ribboncurls::render(template, data, Some(partials)).unwrap();
assert_eq!(result, r#"<header>Some header partial</header>Hello, world!
<footer>Footer partial content goes here</footer>"#);

Advanced usage

Have a look at the Mustache specification for more detailed Mustache information. Ribboncurls support all required features mentioned there.

Mustache spec tests

Ribboncurls runs the Mustache spec tests against the Ribboncurls lib and Ribboncurls passes all required 136 of 136 tests.

Tests ✅ comments::indented_inline
✅ comments::indented_multiline_standalone
✅ comments::indented_standalone
✅ comments::inline
✅ comments::multiline
✅ comments::multiline_standalone
✅ comments::standalone
✅ comments::standalone_line_endings
✅ comments::standalone_without_newline
✅ comments::standalone_without_previous_line
✅ comments::surrounding_whitespace
✅ comments::variable_name_collision
✅ delimiters::indented_standalone_tag
✅ delimiters::inverted_sections
✅ delimiters::outlying_whitespace_inline
✅ delimiters::pair_behavior
✅ delimiters::pair_with_padding
✅ delimiters::partial_inheritence
✅ delimiters::post_partial_behavior
✅ delimiters::sections
✅ delimiters::special_characters
✅ delimiters::standalone_line_endings
✅ delimiters::standalone_tag
✅ delimiters::standalone_without_newline
✅ delimiters::standalone_without_previous_line
✅ delimiters::surrounding_whitespace
✅ interpolation::ampersand
✅ interpolation::ampersand_context_miss_interpolation
✅ interpolation::ampersand_decimal_interpolation
✅ interpolation::ampersand_integer_interpolation
✅ interpolation::ampersand_null_interpolation
✅ interpolation::ampersand_standalone
✅ interpolation::ampersand_surrounding_whitespace
✅ interpolation::ampersand_with_padding
✅ interpolation::basic_context_miss_interpolation
✅ interpolation::basic_decimal_interpolation
✅ interpolation::basic_integer_interpolation
✅ interpolation::basic_interpolation
✅ interpolation::basic_null_interpolation
✅ interpolation::dotted_names_ampersand_interpolation
✅ interpolation::dotted_names_arbitrary_depth
✅ interpolation::dotted_names_are_never_single_keys
✅ interpolation::dotted_names_basic_interpolation
✅ interpolation::dotted_names_broken_chain_resolution
✅ interpolation::dotted_names_broken_chains
✅ interpolation::dotted_names_context_precedence
✅ interpolation::dotted_names_initial_resolution
✅ interpolation::dotted_names_no_masking
✅ interpolation::dotted_names_triple_mustache_interpolation
✅ interpolation::html_escaping
✅ interpolation::implicit_iterators_ampersand
✅ interpolation::implicit_iterators_basic_integer_interpolation
✅ interpolation::implicit_iterators_basic_interpolation
✅ interpolation::implicit_iterators_html_escaping
✅ interpolation::implicit_iterators_triple_mustache
✅ interpolation::interpolation_standalone
✅ interpolation::interpolation_surrounding_whitespace
✅ interpolation::interpolation_with_padding
✅ interpolation::no_interpolation
✅ interpolation::no_re_interpolation
✅ interpolation::triple_mustache
✅ interpolation::triple_mustache_context_miss_interpolation
✅ interpolation::triple_mustache_decimal_interpolation
✅ interpolation::triple_mustache_integer_interpolation
✅ interpolation::triple_mustache_null_interpolation
✅ interpolation::triple_mustache_standalone
✅ interpolation::triple_mustache_surrounding_whitespace
✅ interpolation::triple_mustache_with_padding
✅ inverted::context
✅ inverted::context_misses
✅ inverted::dotted_names_broken_chains
✅ inverted::dotted_names_falsey
✅ inverted::dotted_names_truthy
✅ inverted::doubled
✅ inverted::empty_list
✅ inverted::falsey
✅ inverted::indented_inline_sections
✅ inverted::internal_whitespace
✅ inverted::list
✅ inverted::nested_falsey
✅ inverted::nested_truthy
✅ inverted::null_is_falsey
✅ inverted::padding
✅ inverted::standalone_indented_lines
✅ inverted::standalone_line_endings
✅ inverted::standalone_lines
✅ inverted::standalone_without_newline
✅ inverted::standalone_without_previous_line
✅ inverted::surrounding_whitespace
✅ inverted::truthy
✅ partials::basic_behavior
✅ partials::context
✅ partials::failed_lookup
✅ partials::inline_indentation
✅ partials::nested
✅ partials::padding_whitespace
✅ partials::recursion
✅ partials::standalone_indentation
✅ partials::standalone_line_endings
✅ partials::standalone_without_newline
✅ partials::standalone_without_previous_line
✅ partials::surrounding_whitespace
✅ sections::context
✅ sections::context_misses
✅ sections::deeply_nested_contexts
✅ sections::dotted_names_broken_chains
✅ sections::dotted_names_falsey
✅ sections::dotted_names_truthy
✅ sections::doubled
✅ sections::empty_list
✅ sections::falsey
✅ sections::implicit_iterator_ampersand
✅ sections::implicit_iterator_array
✅ sections::implicit_iterator_decimal
✅ sections::implicit_iterator_html_escaping
✅ sections::implicit_iterator_integer
✅ sections::implicit_iterator_root_level
✅ sections::implicit_iterator_string
✅ sections::implicit_iterator_triple_mustache
✅ sections::indented_inline_sections
✅ sections::indented_standalone_lines
✅ sections::internal_whitespace
✅ sections::list
✅ sections::list_contexts
✅ sections::nested_falsey
✅ sections::nested_truthy
✅ sections::null_is_falsey
✅ sections::padding
✅ sections::parent_contexts
✅ sections::standalone_line_endings
✅ sections::standalone_lines
✅ sections::standalone_without_newline
✅ sections::standalone_without_previous_line
✅ sections::surrounding_whitespace
✅ sections::truthy
✅ sections::variable_test

License

Ribboncurls is licensed under the MPL-2.0 license.

Third-Party Licenses

This project includes third-party code licensed under the MPL-2.0 license. See the THIRD_PARTY_LICENSES file for details.

Commit count: 100

cargo fmt