1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
use std::fmt;
#[derive(Clone, Debug, Eq, Hash, PartialEq)]
pub struct Link<'a> {
pub id: &'a str,
pub text: &'a str,
pub url: &'a str,
}
impl<'a> Link<'a> {
pub fn new(text: &'a str, url: &'a str) -> Self {
Self { text, url, id: "" }
}
pub fn with_id(text: &'a str, url: &'a str, id: &'a str) -> Self {
Self { text, url, id }
}
}
impl fmt::Display for Link<'_> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
if self.id != "" {
write!(
f,
"\u{1b}]8;id={};{}\u{1b}\\{}\u{1b}]8;;\u{1b}\\",
self.id, self.url, self.text
)
} else {
write!(
f,
"\u{1b}]8;;{}\u{1b}\\{}\u{1b}]8;;\u{1b}\\",
self.url, self.text
)
}
}
}