1mod integrations;
2mod types;
3
4pub use crate::types::{
5 attrs::{NameOnly, Spread},
6 markup::{Escaped, Render},
7};
8
9pub use lfml_escape::{escape_string, escape_to_string};
10pub use lfml_macros::{html, Spread};
11
12pub type Markup = Escaped<String>;
13
14pub const DOCTYPE: Escaped<&str> = Escaped(lfml_html5::DOCTYPE);
15
16#[macro_export]
17macro_rules! template {
18 ($pub:vis $name:ident $inner:tt) => {
19 $pub fn $name() -> lfml::Markup {
20 lfml::html! { $inner }
21 }
22 };
23 ($pub:vis $name:ident<$lt:tt> $inner:tt) => {
24 $pub fn $name<$lt>() -> lfml::Markup {
25 lfml::html! { $inner }
26 }
27 };
28 ($pub:vis $name:ident$(<$lt:tt>)?($($arg:ident: $ty:ty),*) $inner:tt) => {
29 $pub fn $name$(<$lt>)?($($arg: $ty),*) -> lfml::Markup {
30 lfml::html! { $inner }
31 }
32 };
33}