diff options
| author | Konsta Hölttä | 2020-09-07 01:30:34 +0300 |
|---|---|---|
| committer | GitHub | 2020-09-07 00:30:34 +0200 |
| commit | 4c487a44208a96e3a23ab8974d224cae489688be (patch) | |
| tree | 225496197ba8d5c096497809f53bf9e31ba8231b /renderer | |
| parent | c80468a8f917079189c8cd111556f9752085e3e4 (diff) | |
| download | rust-rst-4c487a44208a96e3a23ab8974d224cae489688be.tar.bz2 | |
Add support for raw directives (#17)
All content under a raw directive is rendered as-is if the output format
matches the writer. Otherwise none of it is shown.
Diffstat (limited to 'renderer')
| -rw-r--r-- | renderer/src/html.rs | 8 | ||||
| -rw-r--r-- | renderer/src/html/tests.rs | 25 |
2 files changed, 31 insertions, 2 deletions
diff --git a/renderer/src/html.rs b/renderer/src/html.rs index fe934e7..0092315 100644 --- a/renderer/src/html.rs +++ b/renderer/src/html.rs @@ -11,6 +11,7 @@ use document_tree::{ elements as e, extra_attributes as a, element_categories as c, + attribute_types as at, }; @@ -238,8 +239,11 @@ impl HTMLRender for e::Target { impl HTMLRender for e::Raw { fn render_html<W>(&self, renderer: &mut HTMLRenderer<W>) -> Result<(), Error> where W: Write { - for c in self.children() { - write!(renderer.stream, "{}", c)?; + let extra = self.extra(); + if extra.format.contains(&at::NameToken("html".to_owned())) { + for c in self.children() { + write!(renderer.stream, "{}", c)?; + } } Ok(()) } diff --git a/renderer/src/html/tests.rs b/renderer/src/html/tests.rs index afd2d24..b380847 100644 --- a/renderer/src/html/tests.rs +++ b/renderer/src/html/tests.rs @@ -264,6 +264,31 @@ fn code() { "); } +#[test] +fn raw_html() { + check_renders_to("\ +.. raw:: html + + hello <span>world</span> + <p>paragraph + + paragraph</p> + +after + +.. raw:: something_else + + into a black hole this goes +", "\ +hello <span>world</span> +<p>paragraph + +paragraph</p> + +<p>after</p>\ +"); +} + /* #[test] fn test_field_list() { |
