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