Rename [render, render_to] -> [to_string, render]

It's more consistent with existing conventions
This commit is contained in:
Chris Wong 2015-01-27 11:16:22 +13:00
parent dd9679fa89
commit d8ee991da2
2 changed files with 28 additions and 30 deletions
maud/src
maud_macros/tests

View file

@ -29,7 +29,7 @@
//! let markup = html! { //! let markup = html! {
//! p { "Hi, " $name "!" } //! p { "Hi, " $name "!" }
//! }; //! };
//! assert_eq!(markup.render(), "<p>Hi, Lyra!</p>"); //! assert_eq!(markup.to_string(), "<p>Hi, Lyra!</p>");
//! } //! }
//! ``` //! ```
//! //!
@ -169,25 +169,15 @@ pub fn escape(s: &str) -> String {
/// A block of HTML markup, as returned by the `html!` macro. /// A block of HTML markup, as returned by the `html!` macro.
/// ///
/// Use `.render()` to convert it to a `String`, or `.render_to()` to /// Use `.to_string()` to convert it to a `String`, or `.render()` to
/// write it directly to a handle. /// write it directly to a handle.
pub struct Markup<F> { pub struct Markup<F> {
callback: F, callback: F,
} }
impl<F> Markup<F> where F: Fn(&mut fmt::Writer) -> fmt::Result { impl<F> Markup<F> where F: Fn(&mut fmt::Writer) -> fmt::Result {
/// Render the markup to a `String`.
pub fn render(&self) -> String {
let mut buf = String::new();
self.render_fmt(&mut buf).unwrap();
buf
}
/// Render the markup to a `std::io::Writer`. /// Render the markup to a `std::io::Writer`.
/// pub fn render(&self, w: &mut Writer) -> IoResult<()> {
/// This may be more efficient than calling `.render()`, as it
/// doesn't allocate an intermediate `String`.
pub fn render_to(&self, w: &mut Writer) -> IoResult<()> {
struct WriterWrapper<'a, 'b: 'a> { struct WriterWrapper<'a, 'b: 'a> {
inner: &'a mut (Writer + 'b), inner: &'a mut (Writer + 'b),
} }
@ -210,6 +200,14 @@ impl<F> Markup<F> where F: Fn(&mut fmt::Writer) -> fmt::Result {
} }
} }
impl<F> ToString for Markup<F> where F: Fn(&mut fmt::Writer) -> fmt::Result {
fn to_string(&self) -> String {
let mut buf = String::new();
self.render_fmt(&mut buf).unwrap();
buf
}
}
/// Internal functions used by the `maud_macros` package. You should /// Internal functions used by the `maud_macros` package. You should
/// never need to call these directly. /// never need to call these directly.
#[doc(hidden)] #[doc(hidden)]

View file

@ -6,13 +6,13 @@ extern crate maud;
#[test] #[test]
fn literals() { fn literals() {
let s = html!("du\tcks" -23 3.14 '\n' "geese").render(); let s = html!("du\tcks" -23 3.14 '\n' "geese").to_string();
assert_eq!(s, "du\tcks-233.14\ngeese"); assert_eq!(s, "du\tcks-233.14\ngeese");
} }
#[test] #[test]
fn escaping() { fn escaping() {
let s = html!("<flim&flam>").render(); let s = html!("<flim&flam>").to_string();
assert_eq!(s, "&lt;flim&amp;flam&gt;"); assert_eq!(s, "&lt;flim&amp;flam&gt;");
} }
@ -24,7 +24,7 @@ fn semicolons() {
"three"; "three";
;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;
"four"; "four";
}.render(); }.to_string();
assert_eq!(s, "onetwothreefour"); assert_eq!(s, "onetwothreefour");
} }
@ -36,7 +36,7 @@ fn blocks() {
" ducks" " geese" " ducks" " geese"
} }
" swans" " swans"
}.render(); }.to_string();
assert_eq!(s, "hello ducks geese swans"); assert_eq!(s, "hello ducks geese swans");
} }
@ -45,19 +45,19 @@ mod elements {
fn simple() { fn simple() {
let s = html! { let s = html! {
p { b { "pickle" } "barrel" i { "kumquat" } } p { b { "pickle" } "barrel" i { "kumquat" } }
}.render(); }.to_string();
assert_eq!(s, "<p><b>pickle</b>barrel<i>kumquat</i></p>"); assert_eq!(s, "<p><b>pickle</b>barrel<i>kumquat</i></p>");
} }
#[test] #[test]
fn nesting() { fn nesting() {
let s = html!(html body div p sup "butts").render(); let s = html!(html body div p sup "butts").to_string();
assert_eq!(s, "<html><body><div><p><sup>butts</sup></p></div></body></html>"); assert_eq!(s, "<html><body><div><p><sup>butts</sup></p></div></body></html>");
} }
#[test] #[test]
fn empty() { fn empty() {
let s = html!("pinkie" br/ "pie").render(); let s = html!("pinkie" br/ "pie").to_string();
assert_eq!(s, "pinkie<br>pie"); assert_eq!(s, "pinkie<br>pie");
} }
@ -68,7 +68,7 @@ mod elements {
section id="midriff" { section id="midriff" {
p class="hotpink" "Hello!" p class="hotpink" "Hello!"
} }
}.render(); }.to_string();
assert_eq!(s, concat!( assert_eq!(s, concat!(
r#"<link rel="stylesheet" href="styles.css">"#, r#"<link rel="stylesheet" href="styles.css">"#,
r#"<section id="midriff"><p class="hotpink">Hello!</p></section>"#)); r#"<section id="midriff"><p class="hotpink">Hello!</p></section>"#));
@ -76,7 +76,7 @@ mod elements {
#[test] #[test]
fn empty_attributes() { fn empty_attributes() {
let s = html! { div readonly=! input type="checkbox" checked=! / }.render(); let s = html! { div readonly=! input type="checkbox" checked=! / }.to_string();
assert_eq!(s, r#"<div readonly><input type="checkbox" checked></div>"#); assert_eq!(s, r#"<div readonly><input type="checkbox" checked></div>"#);
} }
} }
@ -84,13 +84,13 @@ mod elements {
mod splices { mod splices {
#[test] #[test]
fn literals() { fn literals() {
let s = html! { $"<pinkie>" }.render(); let s = html! { $"<pinkie>" }.to_string();
assert_eq!(s, "&lt;pinkie&gt;"); assert_eq!(s, "&lt;pinkie&gt;");
} }
#[test] #[test]
fn raw_literals() { fn raw_literals() {
let s = html! { $$"<pinkie>" }.render(); let s = html! { $$"<pinkie>" }.to_string();
assert_eq!(s, "<pinkie>"); assert_eq!(s, "<pinkie>");
} }
@ -104,7 +104,7 @@ mod splices {
} }
result result
} }
}.render(); }.to_string();
assert_eq!(s, "3628800"); assert_eq!(s, "3628800");
} }
@ -112,14 +112,14 @@ mod splices {
#[test] #[test]
fn statics() { fn statics() {
let s = html! { $BEST_PONY }.render(); let s = html! { $BEST_PONY }.to_string();
assert_eq!(s, "Pinkie Pie"); assert_eq!(s, "Pinkie Pie");
} }
#[test] #[test]
fn closures() { fn closures() {
let best_pony = "Pinkie Pie"; let best_pony = "Pinkie Pie";
let s = html! { $best_pony }.render(); let s = html! { $best_pony }.to_string();
assert_eq!(s, "Pinkie Pie"); assert_eq!(s, "Pinkie Pie");
} }
@ -146,7 +146,7 @@ mod splices {
}; };
let s = html! { let s = html! {
"Name: " $pinkie.name ". Rating: " $pinkie.repugnance() "Name: " $pinkie.name ". Rating: " $pinkie.repugnance()
}.render(); }.to_string();
assert_eq!(s, "Name: Pinkie Pie. Rating: 1"); assert_eq!(s, "Name: Pinkie Pie. Rating: 1");
} }
@ -156,7 +156,7 @@ mod splices {
#[test] #[test]
fn nested_macro_invocation() { fn nested_macro_invocation() {
let best_pony = "Pinkie Pie"; let best_pony = "Pinkie Pie";
let s = html! { $(format!("{}", best_pony)) }.render(); let s = html! { $(format!("{}", best_pony)) }.to_string();
assert_eq!(s, "Pinkie Pie"); assert_eq!(s, "Pinkie Pie");
} }
*/ */
@ -165,5 +165,5 @@ mod splices {
#[test] #[test]
fn issue_1() { fn issue_1() {
let markup = html! { "Test" }; let markup = html! { "Test" };
let _ = markup.render(); let _ = markup.to_string();
} }