html2md/
quotes.rs

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        // replace all newlines with newline + >
19        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}