rshtml_core 0.5.0

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

pub struct RustExprParenParser;

impl IParser for RustExprParenParser {
    fn parse(_: &mut RsHtmlParser, pair: Pair<Rule>) -> Result<Node, Box<Error<Rule>>> {
        let pair_str = pair.as_str();

        let pair_str = pair_str
            .strip_prefix('(')
            .and_then(|sub| sub.strip_suffix(')'))
            .unwrap_or(pair_str);

        Ok(Node::Expr(
            pair_str.escaped_or_raw(),
            pair_str.is_escaped(),
            Position::from(&pair),
        ))
    }
}