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();
|
||||
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);
|
||||
// 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()?;
|
||||
|
||||
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> {
|
||||
#[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))
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn into_writer(self) -> W {
|
||||
self.0.writer
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn render(&mut self) -> Result<()> {
|
||||
self.0.render()
|
||||
|
@ -33,11 +28,11 @@ macro_rules! create_render {
|
|||
pub struct $render<'a, W: Write, H: $handler<W>> {
|
||||
pub parser: Parser<'a>,
|
||||
handler: H,
|
||||
writer: W,
|
||||
writer: &'a mut W,
|
||||
}
|
||||
|
||||
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 {
|
||||
parser: Parser::new(text),
|
||||
handler,
|
||||
|
@ -45,10 +40,6 @@ macro_rules! create_render {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn into_writer(self) -> W {
|
||||
self.writer
|
||||
}
|
||||
|
||||
pub fn render(&mut self) -> Result<()> {
|
||||
use crate::parser::Event::*;
|
||||
|
||||
|
|
12
src/lib.rs
12
src/lib.rs
|
@ -36,14 +36,14 @@
|
|||
//! * Title 4
|
||||
//! =Section 4=";
|
||||
//!
|
||||
//! let cursor = Cursor::new(Vec::new());
|
||||
//! let mut render = DefaultHtmlRender::new(cursor, &contents);
|
||||
//! let mut cursor = Cursor::new(Vec::new());
|
||||
//! let mut render = DefaultHtmlRender::new(&mut cursor, &contents);
|
||||
//!
|
||||
//! render
|
||||
//! .render()
|
||||
//! .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
|
||||
|
@ -79,15 +79,15 @@
|
|||
//! * Title 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()
|
||||
//! .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]
|
||||
|
|
Loading…
Reference in a new issue