use self::Parameter::*;
use super::*;
#[derive(Clone, Debug)]
pub enum Parameter {
Array(Vec<Parameter>),
Zelf(Option<bool>),
PositionOnly,
KeyValueOnly,
}
impl Parameter {
pub fn into_vec(self) -> Vec<Html> {
match self {
Array(vec) => vec.into_iter().map(|e| e.into_vec()).flatten().collect(),
Zelf(None) => vec![],
Zelf(Some(true)) => vec![html! {<span class="keyword">{"mut self"}</span>}],
Zelf(Some(false)) => vec![html! {<span class="keyword">{"self"}</span>}],
PositionOnly => vec![Tooltip::html("/", "All the previous arguments cannot be written as key-value pairs!")],
KeyValueOnly => vec![Tooltip::html("*", "All the following arguments must be written as key-value pairs!")],
}
}
pub fn length(&self) -> usize {
match self {
Array(v) => v.iter().map(|e| e.length()).sum(),
Zelf(None) => 0,
Zelf(Some(true)) => 8,
Zelf(Some(false)) => 4,
PositionOnly => 1,
KeyValueOnly => 1,
}
}
}