html2md_bulletty/
quotes.rs

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