use crate::dance_info::DanceInfo; use mwbot::parsoid::WikinodeIterator; use mwbot::parsoid::{self, Template, Wikicode, map::IndexMap}; #[derive(thiserror::Error, Debug)] pub enum InfoCompileError { #[error("Could not compile wikipage: {0}")] CompileError(#[from] parsoid::Error), } pub fn page_from_info(info: DanceInfo) -> Result { let mut params = IndexMap::new(); params.insert("name".to_string(), info.name()); params.insert( "dominant_role".to_string(), info.dominant_role.as_str().to_string(), ); params.insert( "allowed_rank".to_string(), info.dominant_role_comp.rank.as_str().to_string(), ); params.insert( "dominant_rank".to_string(), info.dominant_role_comp.rank.as_str().to_string(), ); params.insert( "dominant_points".to_string(), info.dominant_role_comp.points.to_string(), ); if let Some(u) = info.non_dominant_role_comp { params.insert("non_dominant_rank".to_string(), u.rank.as_str().to_string()); params.insert("non_dominant_points".to_string(), u.points.to_string()); } let t = Template::new("Template:WSDCBox", ¶ms)?; let result = Wikicode::new(""); result.append(&t); Ok(result) }