From 37835b3b24638eae1203c73d7f11ec634cf92fbf Mon Sep 17 00:00:00 2001
From: Chris Wong <lambda.fairy@gmail.com>
Date: Sat, 12 Sep 2015 13:53:14 +1200
Subject: [PATCH] Rename `$if` and `$for` to `#if` and `#for`

`#if` and `#for` aren't splices. They are a different concept, so should
have different syntax as well.
---
 maud_macros/src/parse.rs   | 17 ++++++++++-------
 maud_macros/tests/tests.rs | 14 +++++++-------
 2 files changed, 17 insertions(+), 14 deletions(-)

diff --git a/maud_macros/src/parse.rs b/maud_macros/src/parse.rs
index ac5034e..4676466 100644
--- a/maud_macros/src/parse.rs
+++ b/maud_macros/src/parse.rs
@@ -13,6 +13,9 @@ use super::render::{Escape, Renderer};
 macro_rules! dollar {
     () => (TtToken(_, token::Dollar))
 }
+macro_rules! pound {
+    () => (TtToken(_, token::Pound))
+}
 macro_rules! dot {
     () => (TtToken(_, token::Dot))
 }
@@ -125,12 +128,12 @@ impl<'cx, 'i> Parser<'cx, 'i> {
                 self.literal(tt, false);
             },
             // If
-            [dollar!(), ident!(sp, name), ..] if name.name == "if" => {
+            [pound!(), ident!(sp, name), ..] if name.name == "if" => {
                 self.shift(2);
                 self.if_expr(sp);
             },
             // For
-            [dollar!(), ident!(sp, name), ..] if name.name == "for" => {
+            [pound!(), ident!(sp, name), ..] if name.name == "for" => {
                 self.shift(2);
                 self.for_expr(sp);
             },
@@ -201,11 +204,11 @@ impl<'cx, 'i> Parser<'cx, 'i> {
                 self.shift(1);
                 if_cond.push(tt.clone());
             },
-            [] => self.render.cx.span_fatal(sp, "expected body for this $if"),
+            [] => self.render.cx.span_fatal(sp, "expected body for this #if"),
         }}
         // Parse the (optional) else
         let else_body = match self.input {
-            [dollar!(), ident!(else_), ..] if else_.name == "else" => {
+            [pound!(), ident!(else_), ..] if else_.name == "else" => {
                 self.shift(2);
                 match self.input {
                     [ident!(sp, if_), ..] if if_.name == "if" => {
@@ -225,7 +228,7 @@ impl<'cx, 'i> Parser<'cx, 'i> {
                         self.shift(1);
                         Some(self.block(sp, &d.tts))
                     },
-                    _ => self.render.cx.span_fatal(sp, "expected body for this $else"),
+                    _ => self.render.cx.span_fatal(sp, "expected body for this #else"),
                 }
             },
             _ => None,
@@ -244,7 +247,7 @@ impl<'cx, 'i> Parser<'cx, 'i> {
                 self.shift(1);
                 pattern.push(tt.clone());
             },
-            _ => self.render.cx.span_fatal(sp, "invalid $for"),
+            _ => self.render.cx.span_fatal(sp, "invalid #for"),
         }}
         let pattern = self.with_rust_parser(pattern, RustParser::parse_pat);
         let mut iterable = vec![];
@@ -259,7 +262,7 @@ impl<'cx, 'i> Parser<'cx, 'i> {
                 self.shift(1);
                 iterable.push(tt.clone());
             },
-            _ => self.render.cx.span_fatal(sp, "invalid $for"),
+            _ => self.render.cx.span_fatal(sp, "invalid #for"),
         }}
         let iterable = self.with_rust_parser(iterable, RustParser::parse_expr);
         self.render.emit_for(pattern, iterable, body);
diff --git a/maud_macros/tests/tests.rs b/maud_macros/tests/tests.rs
index 6568bc8..b6e8e79 100644
--- a/maud_macros/tests/tests.rs
+++ b/maud_macros/tests/tests.rs
@@ -202,13 +202,13 @@ mod control {
         for (number, &name) in (1..4).zip(["one", "two", "three"].iter()) {
             let mut s = String::new();
             html!(s, {
-                $if number == 1 {
+                #if number == 1 {
                     "one"
-                } $else if number == 2 {
+                } #else if number == 2 {
                     "two"
-                } $else if number == 3 {
+                } #else if number == 3 {
                     "three"
-                } $else {
+                } #else {
                     "oh noes"
                 }
             }).unwrap();
@@ -221,9 +221,9 @@ mod control {
         for &(input, output) in [(Some("yay"), "yay"), (None, "oh noes")].iter() {
             let mut s = String::new();
             html!(s, {
-                $if let Some(value) = input {
+                #if let Some(value) = input {
                     $value
-                } $else {
+                } #else {
                     "oh noes"
                 }
             }).unwrap();
@@ -236,7 +236,7 @@ mod control {
         let ponies = ["Apple Bloom", "Scootaloo", "Sweetie Belle"];
         let mut s = String::new();
         html!(s, {
-            ul $for pony in &ponies {
+            ul #for pony in &ponies {
                 li $pony
             }
         }).unwrap();