rshtml_core 0.5.0

RsHtml: A Template Engine for Seamless HTML and Rust Integration.
Documentation
mod ast_viewer;
mod viewer;

use crate::config::Config;
use crate::node::Node;
use crate::parser::{RsHtmlParser, Rule};
use crate::{parse_and_compile, process_template};
use pest::Parser;
use std::fs;
use syn::__private::Span;
use syn::Generics;

#[test]
fn test_template_format() {
    let views = ["home.rs.html"];

    let ast = match RsHtmlParser::new().run(views[0], Config::default()) {
        Ok(ast) => ast,
        Err(err) => {
            println!("{err}");
            return;
        }
    };

    ast_viewer::view_node(&ast, 0);

    assert!(matches!(ast, Node::Template(_, _, _, _, _)));
}

#[test]
fn test_template_format_without_parsing() {
    let template = fs::read_to_string("views/home.rs.html").unwrap();
    let pairs = match RsHtmlParser::parse(Rule::template, template.as_str()) {
        Ok(pairs) => pairs,
        Err(err) => {
            println!("{err}");
            return;
        }
    };

    viewer::execute_pairs(pairs, 0, true);
}

#[test]
pub fn test_process_simple() {
    let ident = syn::Ident::new("HomePage", Span::call_site());
    process_template(
        "home.rs.html".to_string(),
        &ident,
        &Generics::default(),
        Vec::new(),
        true,
    );
}

#[test]
pub fn test_parse_and_compile() {
    let ident = syn::Ident::new("HomePage", Span::call_site());
    parse_and_compile(
        "home.rs.html",
        Config::load_from_toml_or_default(),
        &ident,
        &Generics::default(),
        Vec::new(),
        false,
    )
    .unwrap();
}

#[test]
pub fn test_config() {
    let config = Config::default();
    assert!(config.base_path.ends_with("views"));
}