rshtml_core 0.1.0

RsHtml: A Template Engine for Seamless HTML and Rust Integration.
Documentation
use crate::Node;
use crate::parser::Rule::raw_content;
use crate::parser::{IParser, RsHtmlParser, Rule};
use pest::error::{Error, ErrorVariant};
use pest::iterators::Pair;

pub struct RawBlockParser;

impl IParser for RawBlockParser {
    fn parse(_: &mut RsHtmlParser, pair: Pair<Rule>) -> Result<Node, Box<Error<Rule>>> {
        let pair_span = pair.as_span();
        Ok(Node::Raw(
            pair.into_inner()
                .find(|p| p.as_rule() == Rule::raw_content)
                .map(|p| p.as_str().to_string())
                .ok_or(Error::new_from_span(
                    ErrorVariant::ParsingError {
                        positives: vec![raw_content],
                        negatives: vec![],
                    },
                    pair_span,
                ))?,
        ))
    }
}