From 8d9e00edacbc061ec5efba100e2af71be6824af8 Mon Sep 17 00:00:00 2001 From: Stanisław Zagórowski Date: Thu, 11 Jan 2024 15:29:25 +0100 Subject: luax --- src/luax/mod.rs | 65 ++------------------------------------------------------- 1 file changed, 2 insertions(+), 63 deletions(-) (limited to 'src/luax/mod.rs') diff --git a/src/luax/mod.rs b/src/luax/mod.rs index a7eb38f..df9f57d 100644 --- a/src/luax/mod.rs +++ b/src/luax/mod.rs @@ -2,71 +2,10 @@ use crate::Result; mod lexer; mod preprocessor; +#[cfg(test)] +mod tests; mod tokens; -#[derive(Debug)] -pub enum Node<'s> { - Code(&'s str), - Text(&'s str), - Element(Element<'s>), -} - -impl<'s> Node<'s> { - pub fn to_table(&self, f: &mut W) -> Result<()> { - match &self { - Node::Code(s) => write!(f, "{}", s)?, - Node::Text(s) => write!(f, "\"{}\"", s)?, - Node::Element(element) => { - write!(f, "{{")?; - write!(f, "tag=\"{}\", ", element.tag)?; - for attribute in &element.attributes { - match &attribute.value { - Value::Literal(s) => write!(f, "{}=\"{}\", ", attribute.key, s)?, - Value::Expression(s) => write!(f, "{}={}, ", attribute.key, s)?, - } - } - write!(f, "children={{")?; - for child in &element.children { - child.to_table(f)?; - } - write!(f, "}}")?; - write!(f, "}}")?; - } - } - Ok(()) - } -} - -#[derive(Debug)] -pub struct Element<'s> { - pub tag: &'s str, - pub attributes: Vec>, - pub children: Vec>, -} - -#[derive(Debug)] -pub struct Attribute<'s> { - pub key: &'s str, - pub value: Value<'s>, -} - -#[derive(Debug)] -pub enum Value<'s> { - Literal(&'s str), - Expression(&'s str), -} - -#[derive(Debug)] -pub struct Template<'s> { - pub root: Node<'s>, -} - -impl<'s> Template<'s> { - pub fn to_table(&self, f: &mut W) -> Result<()> { - self.root.to_table(f) - } -} - pub fn preprocess(s: &str) -> Result { let mut buf = Vec::new(); let preprocessor = preprocessor::Preprocessor::new(s, &mut buf)?; -- cgit v1.3.1