1use super::StructuredPrinter;
2use super::TagHandler;
3
4use markup5ever_rcdom::Handle;
5
6#[derive(Default)]
7pub struct QuoteHandler {
8 start_pos: usize,
9}
10
11impl TagHandler for QuoteHandler {
12 fn handle(&mut self, _tag: &Handle, printer: &mut StructuredPrinter) {
13 self.start_pos = printer.data.len();
14 printer.insert_newline();
15 }
16
17 fn after_handle(&mut self, printer: &mut StructuredPrinter) {
18 let quote = "> ";
20 let mut index = printer.data.len();
21 while index > self.start_pos {
22 if printer.data.as_bytes().get(index) == Some(&b'\n') {
23 printer.insert_str(index + 1, quote);
24 }
25 index -= 1;
26 }
27
28 printer.insert_str(self.start_pos + 1, quote);
29
30 printer.insert_newline();
31 printer.insert_newline();
32 }
33}