Use shiny new slicing syntax

This commit is contained in:
Chris Wong 2015-01-07 17:54:43 +13:00
parent 05c68067dd
commit 81cbfb9267
4 changed files with 18 additions and 17 deletions

View file

@ -1,5 +1,5 @@
#![crate_type = "dylib"]
#![feature(globs, plugin_registrar, quote, macro_rules)]
#![feature(globs, plugin_registrar, quote, macro_rules, slicing_syntax)]
extern crate syntax;
extern crate rustc;
@ -16,7 +16,7 @@ mod render;
fn expand_html<'cx>(cx: &'cx mut ExtCtxt, sp: Span, args: &[TokenTree]) -> Box<MacResult + 'cx> {
match parse::parse(cx, args) {
Some(markups) => {
let expr = render::render(cx, &*markups);
let expr = render::render(cx, markups[]);
MacExpr::new(expr)
},
None => DummyResult::any(sp),

View file

@ -206,7 +206,7 @@ impl<'cx, 's, 'i> Parser<'cx, 's, 'i> {
match self.input {
[TtDelimited(_, ref d), ..] if d.delim == token::DelimToken::Brace => {
self.shift(1);
Parser { cx: self.cx, input: &*d.tts }.markups()
Parser { cx: self.cx, input: d.tts[] }.markups()
.map(Markup::Block)
},
_ => None,
@ -228,7 +228,7 @@ fn lit_to_string(cx: &mut ExtCtxt, lit: Lit, minus: bool) -> Option<String> {
return None;
},
LitChar(c) => result.push(c),
LitInt(x, _) => result.push_str(&*x.to_string()),
LitInt(x, _) => result.push_str(x.to_string()[]),
LitFloat(s, _) | LitFloatUnsuffixed(s) => result.push_str(s.get()),
LitBool(b) => result.push_str(if b { "true" } else { "false" }),
};

View file

@ -27,7 +27,7 @@ fn render_markup(cx: &mut ExtCtxt, markup: &Markup, w: Ident, out: &mut Vec<P<St
for markup in markups.iter() {
render_markup(cx, markup, w, out);
}
}
},
Value(ref value) => {
let expr = render_value(cx, value, w, false);
out.push(quote_stmt!(cx, $expr));
@ -41,14 +41,15 @@ fn render_value(cx: &mut ExtCtxt, value: &Value, w: Ident, is_attr: bool) -> P<E
let &Value { ref value, escape } = value;
match *value {
Literal(ref s) => {
let s = &*match escape {
NoEscape => (&**s).into_cow(),
let s = match escape {
NoEscape => s[].into_cow(),
Escape => if is_attr {
escape::attribute(&**s).into_cow()
escape::attribute(s[]).into_cow()
} else {
escape::non_attribute(&**s).into_cow()
escape::non_attribute(s[]).into_cow()
},
};
let s = s[];
quote_expr!(cx, {
try!($w.write_str($s))
})

View file

@ -7,14 +7,14 @@ extern crate maud;
fn it_works() {
let template = html!("du\tcks" -23 3.14 '\n' "geese");
let s = maud::render(template);
assert_eq!(&*s, "du\tcks-233.14\ngeese");
assert_eq!(s, "du\tcks-233.14\ngeese");
}
#[test]
fn escaping() {
let template = html!("<flim&flam>");
let s = maud::render(template);
assert_eq!(&*s, "&lt;flim&amp;flam&gt;");
assert_eq!(s, "&lt;flim&amp;flam&gt;");
}
#[test]
@ -27,7 +27,7 @@ fn blocks() {
}
" swans"
});
assert_eq!(&*s, "hello ducks geese swans");
assert_eq!(s, "hello ducks geese swans");
}
mod splice {
@ -36,13 +36,13 @@ mod splice {
#[test]
fn literal() {
let s = maud::render(html! { $"<pinkie>" });
assert_eq!(&*s, "&lt;pinkie&gt;");
assert_eq!(s, "&lt;pinkie&gt;");
}
#[test]
fn raw_literal() {
let s = maud::render(html! { $$"<pinkie>" });
assert_eq!(&*s, "<pinkie>");
assert_eq!(s, "<pinkie>");
}
#[test]
@ -56,7 +56,7 @@ mod splice {
result
}
});
assert_eq!(&*s, "3628800");
assert_eq!(s, "3628800");
}
static BEST_PONY: &'static str = "Pinkie Pie";
@ -64,7 +64,7 @@ mod splice {
#[test]
fn statics() {
let s = maud::render(html! { $BEST_PONY });
assert_eq!(&*s, "Pinkie Pie");
assert_eq!(s, "Pinkie Pie");
}
// FIXME: See <https://github.com/rust-lang/rust/issues/15962>
@ -74,7 +74,7 @@ mod splice {
fn closure() {
let best_pony = "Pinkie Pie";
let s = maud::render(html! { $best_pony });
assert_eq!(&*s, "Pinkie Pie");
assert_eq!(s, "Pinkie Pie");
}
*/
}