1use crate::markup5ever_rcdom;
2
3use super::StructuredPrinter;
4use super::TagHandler;
5
6use markup5ever_rcdom::{Handle, NodeData};
7
8#[derive(Default)]
9pub struct HeaderHandler {
10 header_type: String,
11}
12
13impl TagHandler for HeaderHandler {
14 fn handle(&mut self, tag: &Handle, printer: &mut StructuredPrinter) {
15 self.header_type = match tag.data {
16 NodeData::Element { ref name, .. } => name.local.to_string(),
17 _ => String::new(),
18 };
19
20 printer.insert_newline();
21 printer.insert_newline();
22 match self.header_type.as_ref() {
23 "h1" => printer.append_str("# "),
24 "h2" => printer.append_str("## "),
25 "h3" => printer.append_str("### "),
26 "h4" => printer.append_str("#### "),
27 "h5" => printer.append_str("##### "),
28 "h6" => printer.append_str("###### "),
29 _ => {}
30 }
31 }
32
33 fn after_handle(&mut self, printer: &mut StructuredPrinter) {
34 printer.insert_newline();
35 }
36}