#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[non_exhaustive]
#[derive(Debug, PartialEq, Clone)]
pub enum Node<T> {
Text(String),
Link(Link<T>),
Image(url::Url),
LinkedImage {
src: url::Url,
href: url::Url,
},
Icon {
name: String,
count: usize,
},
InlineCode(String),
Math(String),
Hashtag(String),
Decoration {
decos: String,
nodes: Vec<Node<T>>,
},
Strong(Vec<Node<T>>),
Coordinate {
latitude: Latitude,
longitude: Longitude,
zoom: Option<u32>,
},
Custom(T),
}
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[derive(Debug, PartialEq, Clone, Copy)]
pub enum Latitude {
North(f64),
South(f64),
}
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[derive(Debug, PartialEq, Clone, Copy)]
pub enum Longitude {
East(f64),
West(f64),
}
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[non_exhaustive]
#[derive(Debug, PartialEq, Clone)]
pub enum Link<T> {
Page(String),
Url(url::Url),
WithLabel {
href: url::Url,
label: Vec<Node<T>>,
},
Project(String),
ProjectPage {
project: String,
page: String,
},
}