Use more friendly names in renderer
This commit is contained in:
parent
1badbd9df2
commit
ab45846e1e
1 changed files with 16 additions and 16 deletions
|
@ -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)),
|
||||||
|
|
Loading…
Add table
Reference in a new issue