rshtml_core 0.1.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::process_template;
use pest::Parser;
use std::fs;
use syn::__private::Span;

#[test]
fn test_template_format() {
    let views = ["simple_expression.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/simple_expression.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("continue_break.rs.html".to_string(), &ident);
}

#[test]
pub fn test_config() {
    let config = Config::default();
    assert!(config.views.0.ends_with("views"));
    assert_eq!(config.views.1, "layout.rs.html".to_string());
}