diff --git a/maud_macros/src/ast.rs b/maud_macros/src/ast.rs index b689d70..6f62243 100644 --- a/maud_macros/src/ast.rs +++ b/maud_macros/src/ast.rs @@ -21,10 +21,9 @@ pub enum Markup { Let { tokens: TokenStream, }, - If { + Special { segments: Vec<Special>, }, - Special(Special), Match { head: TokenStream, arms: Vec<Special>, diff --git a/maud_macros/src/generate.rs b/maud_macros/src/generate.rs index 6ae98ef..f3fcce1 100644 --- a/maud_macros/src/generate.rs +++ b/maud_macros/src/generate.rs @@ -51,12 +51,11 @@ impl Generator { Markup::Splice { expr } => build.push_tokens(self.splice(expr)), Markup::Element { name, attrs, body } => self.element(name, attrs, body, build), Markup::Let { tokens } => build.push_tokens(tokens), - Markup::If { segments } => { + Markup::Special { segments } => { for segment in segments { build.push_tokens(self.special(segment)); } }, - Markup::Special(special) => build.push_tokens(self.special(special)), Markup::Match { head, arms, arms_span } => { build.push_tokens({ let body = arms @@ -178,7 +177,9 @@ fn desugar_classes_or_ids( span: toggler.cond_span, }; let head = desugar_toggler(toggler); - markups.push(Markup::Special(Special { head, body })); + markups.push(Markup::Special { + segments: vec![Special { head, body }], + }); } Some(Attribute { name: TokenStream::from(TokenTree::Ident(Ident::new(attr_name, Span::call_site()))), diff --git a/maud_macros/src/parse.rs b/maud_macros/src/parse.rs index 5b79084..c06f41d 100644 --- a/maud_macros/src/parse.rs +++ b/maud_macros/src/parse.rs @@ -122,7 +122,7 @@ impl Parser { "if" => { let mut segments = Vec::new(); self.if_expr(vec![keyword], &mut segments)?; - ast::Markup::If { segments } + ast::Markup::Special { segments } }, "while" => self.while_expr(keyword)?, "for" => self.for_expr(keyword)?, @@ -242,7 +242,9 @@ impl Parser { None => return self.error("unexpected end of @while expression"), } }; - Ok(ast::Markup::Special(ast::Special { head: head.into_iter().collect(), body })) + Ok(ast::Markup::Special { + segments: vec![ast::Special { head: head.into_iter().collect(), body }], + }) } /// Parses a `@for` expression. @@ -269,7 +271,9 @@ impl Parser { None => return self.error("unexpected end of @for expression"), } }; - Ok(ast::Markup::Special(ast::Special { head: head.into_iter().collect(), body })) + Ok(ast::Markup::Special { + segments: vec![ast::Special { head: head.into_iter().collect(), body }], + }) } /// Parses a `@match` expression.