use ecow::EcoVec;
use serde::{Deserialize, Serialize};
use typst_syntax::package::ToolInfo;
#[derive(Serialize, Deserialize, Clone)]
pub struct Extra {
pub exclude: Option<EcoVec<String>>,
}
impl Default for Extra {
fn default() -> Self {
Self { exclude: None }
}
}
impl Extra {
pub fn new(exclude: Option<EcoVec<String>>) -> Self {
Self { exclude }
}
}
impl From<Option<ToolInfo>> for Extra {
fn from(op_tool: Option<ToolInfo>) -> Self {
if let Some(op) = op_tool {
Extra::from(op)
} else {
Extra::default()
}
}
}
impl From<ToolInfo> for Extra {
fn from(op_tool: ToolInfo) -> Self {
let map = &toml::map::Map::new();
let tool = op_tool;
let a = tool.sections.get("utpm").unwrap_or(map);
Self {
exclude: a.get("exclude").map(|b| {
b.as_array()
.unwrap()
.iter()
.map(|f| f.to_string())
.collect::<EcoVec<_>>()
}),
}
}
}