oxiplate/lib.rs
1#![doc(issue_tracker_base_url = "https://github.com/0b10011/oxiplate/issues/")]
2#![doc(test(no_crate_inject))]
3#![doc(test(attr(deny(warnings))))]
4#![doc = include_str!("../README.md")]
5#![warn(missing_docs)]
6
7pub mod escapers;
8pub mod filters;
9
10pub use oxiplate_derive::Oxiplate;
11pub use oxiplate_traits::{
12 CowStr, CowStrWrapper, Escaper, FastCowStr, FastEscape, Render, ToCowStr, ToCowStrWrapper,
13 UnescapedText, UnescapedTextWrapper,
14};
15
16/// Default Oxiplate experience that uses only built-in filters.
17///
18/// To use your own filters:
19///
20/// ```
21/// // Create a module named `filters_for_oxiplate` at the root of _your_ crate
22/// // to hold the filters.
23/// mod filters_for_oxiplate {
24/// // Include all of the default filters:
25/// // Or just those you want to use:
26/// # #[allow(unused_imports)]
27/// pub use oxiplate::filters::{upper, *};
28///
29/// // And then add/import your filters
30/// pub fn lower(value: &str) -> String {
31/// value.to_lowercase()
32/// }
33/// }
34///
35/// // And import those filters where they're needed:
36/// mod your_mod {
37/// use std::fmt::Error;
38///
39/// use oxiplate::{Oxiplate, Render};
40///
41/// #[derive(Oxiplate)]
42/// #[oxiplate_inline(html: r#"{{ "Hello World" | lower() }}"#)]
43/// struct Data;
44///
45/// pub fn data() -> Result<(), Error> {
46/// assert_eq!(Data.render()?, "hello world");
47/// Ok(())
48/// }
49/// }
50/// # fn main() -> Result<(), std::fmt::Error> {
51/// # your_mod::data()
52/// # }
53/// ```
54pub mod prelude {
55 pub use super::{Oxiplate, Render, filters as filters_for_oxiplate};
56}