feat(render): accept a mutable reference of Write
This commit is contained in:
parent
a288a6d554
commit
0c64b76dc6
|
@ -31,17 +31,17 @@ fn main() -> Result<()> {
|
||||||
let mut contents = String::new();
|
let mut contents = String::new();
|
||||||
file.read_to_string(&mut contents)?;
|
file.read_to_string(&mut contents)?;
|
||||||
|
|
||||||
let cursor = Cursor::new(Vec::new());
|
let mut cursor = Cursor::new(Vec::new());
|
||||||
|
|
||||||
//let mut render = DefaultHtmlRender::new(cursor, &contents);
|
//let mut render = DefaultHtmlRender::new(cursor, &contents);
|
||||||
// comment the following line and uncomment the line above to use the default handler
|
// comment the following line and uncomment the line above to use the default handler
|
||||||
let mut render = HtmlRender::new(CustomHtmlHandler, cursor, &contents);
|
let mut render = HtmlRender::new(CustomHtmlHandler, &mut cursor, &contents);
|
||||||
|
|
||||||
render.render()?;
|
render.render()?;
|
||||||
|
|
||||||
println!(
|
println!(
|
||||||
"{}",
|
"{}",
|
||||||
String::from_utf8(render.into_writer().into_inner()).expect("invalid utf-8")
|
String::from_utf8(cursor.into_inner()).expect("invalid utf-8")
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -15,15 +15,10 @@ macro_rules! create_render {
|
||||||
|
|
||||||
impl<'a, W: Write> $default_render<'a, W> {
|
impl<'a, W: Write> $default_render<'a, W> {
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn new(writer: W, text: &'a str) -> Self {
|
pub fn new(writer: &'a mut W, text: &'a str) -> Self {
|
||||||
$default_render($render::new($default_handler, writer, text))
|
$default_render($render::new($default_handler, writer, text))
|
||||||
}
|
}
|
||||||
|
|
||||||
#[inline]
|
|
||||||
pub fn into_writer(self) -> W {
|
|
||||||
self.0.writer
|
|
||||||
}
|
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn render(&mut self) -> Result<()> {
|
pub fn render(&mut self) -> Result<()> {
|
||||||
self.0.render()
|
self.0.render()
|
||||||
|
@ -33,11 +28,11 @@ macro_rules! create_render {
|
||||||
pub struct $render<'a, W: Write, H: $handler<W>> {
|
pub struct $render<'a, W: Write, H: $handler<W>> {
|
||||||
pub parser: Parser<'a>,
|
pub parser: Parser<'a>,
|
||||||
handler: H,
|
handler: H,
|
||||||
writer: W,
|
writer: &'a mut W,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, W: Write, H: $handler<W>> $render<'a, W, H> {
|
impl<'a, W: Write, H: $handler<W>> $render<'a, W, H> {
|
||||||
pub fn new(handler: H, writer: W, text: &'a str) -> Self {
|
pub fn new(handler: H, writer: &'a mut W, text: &'a str) -> Self {
|
||||||
$render {
|
$render {
|
||||||
parser: Parser::new(text),
|
parser: Parser::new(text),
|
||||||
handler,
|
handler,
|
||||||
|
@ -45,10 +40,6 @@ macro_rules! create_render {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn into_writer(self) -> W {
|
|
||||||
self.writer
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn render(&mut self) -> Result<()> {
|
pub fn render(&mut self) -> Result<()> {
|
||||||
use crate::parser::Event::*;
|
use crate::parser::Event::*;
|
||||||
|
|
||||||
|
|
12
src/lib.rs
12
src/lib.rs
|
@ -36,14 +36,14 @@
|
||||||
//! * Title 4
|
//! * Title 4
|
||||||
//! =Section 4=";
|
//! =Section 4=";
|
||||||
//!
|
//!
|
||||||
//! let cursor = Cursor::new(Vec::new());
|
//! let mut cursor = Cursor::new(Vec::new());
|
||||||
//! let mut render = DefaultHtmlRender::new(cursor, &contents);
|
//! let mut render = DefaultHtmlRender::new(&mut cursor, &contents);
|
||||||
//!
|
//!
|
||||||
//! render
|
//! render
|
||||||
//! .render()
|
//! .render()
|
||||||
//! .expect("something went wrong rendering the file");
|
//! .expect("something went wrong rendering the file");
|
||||||
//!
|
//!
|
||||||
//! let result = String::from_utf8(render.into_writer().into_inner()).expect("invalid utf-8");
|
//! let result = String::from_utf8(cursor.into_inner()).expect("invalid utf-8");
|
||||||
//! ```
|
//! ```
|
||||||
//!
|
//!
|
||||||
//! or `impl HtmlHandler` to create your own render. The following example
|
//! or `impl HtmlHandler` to create your own render. The following example
|
||||||
|
@ -79,15 +79,15 @@
|
||||||
//! * Title 4
|
//! * Title 4
|
||||||
//! =Section 4=";
|
//! =Section 4=";
|
||||||
//!
|
//!
|
||||||
//! let cursor = Cursor::new(Vec::new());
|
//! let mut cursor = Cursor::new(Vec::new());
|
||||||
//!
|
//!
|
||||||
//! let mut render = HtmlRender::new(CustomHtmlHandler, cursor, &contents);
|
//! let mut render = HtmlRender::new(CustomHtmlHandler, &mut cursor, &contents);
|
||||||
//!
|
//!
|
||||||
//! render
|
//! render
|
||||||
//! .render()
|
//! .render()
|
||||||
//! .expect("something went wrong rendering the file");
|
//! .expect("something went wrong rendering the file");
|
||||||
//!
|
//!
|
||||||
//! let result = String::from_utf8(render.into_writer().into_inner()).expect("invalid utf-8");
|
//! let result = String::from_utf8(cursor.into_inner()).expect("invalid utf-8");
|
||||||
//! ```
|
//! ```
|
||||||
|
|
||||||
#[macro_use]
|
#[macro_use]
|
||||||
|
|
Loading…
Reference in a new issue