1use super::TagHandler;
2use super::StructuredPrinter;
3
4use markup5ever_rcdom::{Handle,NodeData};
5
6#[derive(Default)]
7pub struct AnchorHandler {
8 start_pos: usize,
9 url: String
10}
11
12impl TagHandler for AnchorHandler {
13
14 fn handle(&mut self, tag: &Handle, printer: &mut StructuredPrinter) {
15 self.start_pos = printer.data.len();
16
17 self.url = match tag.data {
19 NodeData::Element { ref attrs, .. } => {
20 let attrs = attrs.borrow();
21 let href = attrs.iter().find(|attr| attr.name.local.to_string() == "href");
22 match href {
23 Some(link) => link.value.to_string(),
24 None => String::new()
25 }
26 }
27 _ => String::new()
28 };
29 }
30
31 fn after_handle(&mut self, printer: &mut StructuredPrinter) {
32 printer.insert_str(self.start_pos, "[");
34 printer.append_str(&format!("]({})", self.url))
35 }
36}