Use more friendly names in renderer

This commit is contained in:
Chris Wong 2015-09-01 18:56:02 +12:00
parent 1badbd9df2
commit ab45846e1e

View file

@ -14,8 +14,8 @@ pub enum Escape {
pub struct Renderer<'cx> { pub struct Renderer<'cx> {
pub cx: &'cx ExtCtxt<'cx>, pub cx: &'cx ExtCtxt<'cx>,
w: Ident, writer: Ident,
r: Ident, result: Ident,
loop_label: Vec<TokenTree>, loop_label: Vec<TokenTree>,
stmts: Vec<P<Stmt>>, stmts: Vec<P<Stmt>>,
tail: String, tail: String,
@ -24,14 +24,14 @@ pub struct Renderer<'cx> {
impl<'cx> Renderer<'cx> { impl<'cx> Renderer<'cx> {
/// Creates a new `Renderer` using the given extension context. /// Creates a new `Renderer` using the given extension context.
pub fn new(cx: &'cx ExtCtxt<'cx>, writer_expr: Vec<TokenTree>) -> Renderer<'cx> { pub fn new(cx: &'cx ExtCtxt<'cx>, writer_expr: Vec<TokenTree>) -> Renderer<'cx> {
let w = token::gensym_ident("__maud_writer"); let writer = token::gensym_ident("__maud_writer");
let r = token::gensym_ident("__maud_result"); let result = token::gensym_ident("__maud_result");
let loop_label = token::gensym_ident("__maud_loop_label"); let loop_label = token::gensym_ident("__maud_loop_label");
let writer_stmt = quote_stmt!(cx, let $w = &mut $writer_expr).unwrap(); let writer_stmt = quote_stmt!(cx, let $writer = &mut $writer_expr).unwrap();
Renderer { Renderer {
cx: cx, cx: cx,
w: w, writer: writer,
r: r, result: result,
loop_label: vec![TtToken(DUMMY_SP, token::Lifetime(loop_label))], loop_label: vec![TtToken(DUMMY_SP, token::Lifetime(loop_label))],
stmts: vec![writer_stmt], stmts: vec![writer_stmt],
tail: String::new(), tail: String::new(),
@ -42,8 +42,8 @@ impl<'cx> Renderer<'cx> {
pub fn fork(&self) -> Renderer<'cx> { pub fn fork(&self) -> Renderer<'cx> {
Renderer { Renderer {
cx: self.cx, cx: self.cx,
w: self.w, writer: self.writer,
r: self.r, result: self.result,
loop_label: self.loop_label.clone(), loop_label: self.loop_label.clone(),
stmts: Vec::new(), stmts: Vec::new(),
tail: String::new(), tail: String::new(),
@ -54,7 +54,7 @@ impl<'cx> Renderer<'cx> {
fn flush(&mut self) { fn flush(&mut self) {
if !self.tail.is_empty() { if !self.tail.is_empty() {
let expr = { let expr = {
let w = self.w; let w = self.writer;
let s = &*self.tail; let s = &*self.tail;
quote_expr!(self.cx, $w.write_str($s)) quote_expr!(self.cx, $w.write_str($s))
}; };
@ -66,15 +66,15 @@ impl<'cx> Renderer<'cx> {
/// Reifies the `Renderer` into a block of markup. /// Reifies the `Renderer` into a block of markup.
pub fn into_expr(mut self) -> P<Expr> { pub fn into_expr(mut self) -> P<Expr> {
let Renderer { cx, r, loop_label, stmts, .. } = { self.flush(); self }; let Renderer { cx, result, loop_label, stmts, .. } = { self.flush(); self };
quote_expr!(cx, { quote_expr!(cx, {
let mut $r = Ok(()); let mut $result = Ok(());
$loop_label: loop { $loop_label: loop {
use ::std::fmt::Write; use ::std::fmt::Write;
$stmts $stmts
break $loop_label; break $loop_label;
} }
$r $result
}) })
} }
@ -97,14 +97,14 @@ impl<'cx> Renderer<'cx> {
/// Wraps an expression in a `try!` call. /// Wraps an expression in a `try!` call.
fn wrap_try(&self, expr: P<Expr>) -> P<Stmt> { fn wrap_try(&self, expr: P<Expr>) -> P<Stmt> {
let r = self.r; let result = self.result;
let loop_label = &self.loop_label; let loop_label = &self.loop_label;
quote_stmt!( quote_stmt!(
self.cx, self.cx,
match $expr { match $expr {
Ok(()) => {}, Ok(()) => {},
Err(e) => { Err(e) => {
$r = Err(e); $result = Err(e);
break $loop_label; break $loop_label;
} }
}).unwrap() }).unwrap()
@ -122,7 +122,7 @@ impl<'cx> Renderer<'cx> {
/// Appends the result of an expression, with the specified escaping method. /// Appends the result of an expression, with the specified escaping method.
pub fn splice(&mut self, expr: P<Expr>, escape: Escape) { pub fn splice(&mut self, expr: P<Expr>, escape: Escape) {
let w = self.w; let w = self.writer;
let expr = match escape { let expr = match escape {
Escape::PassThru => Escape::PassThru =>
quote_expr!(self.cx, write!($w, "{}", $expr)), quote_expr!(self.cx, write!($w, "{}", $expr)),