feat: finish manifest convertion
This commit is contained in:
@@ -62,14 +62,37 @@ impl Manifest {
|
||||
/// Error occurs when parsing manifest into schema.
|
||||
#[derive(Debug, TeError)]
|
||||
pub enum ParseSchemaError {
|
||||
|
||||
/// Error when operating with schema.
|
||||
#[error("{0}")]
|
||||
Schema(#[from] wfassoc::highlevel::SchemaError)
|
||||
}
|
||||
|
||||
impl TryFrom<Manifest> for wfassoc::Schema {
|
||||
type Error = ParseSchemaError;
|
||||
|
||||
fn try_from(value: Manifest) -> std::result::Result<Self, Self::Error> {
|
||||
todo!()
|
||||
fn try_from(value: Manifest) -> Result<Self, Self::Error> {
|
||||
let mut schema = wfassoc::Schema::new();
|
||||
|
||||
schema.set_identifier(&value.identifier);
|
||||
schema.set_path(&value.path);
|
||||
schema.set_clsid(&value.clsid);
|
||||
schema.set_name(value.name.as_ref().map(|x| x.as_str()));
|
||||
schema.set_icon(value.icon.as_ref().map(|x| x.as_str()));
|
||||
schema.set_behavior(value.behavior.as_ref().map(|x| x.as_str()));
|
||||
for (key, value) in value.strs {
|
||||
schema.add_str(&key, &value)?;
|
||||
}
|
||||
for (key, value) in value.icons {
|
||||
schema.add_icon(&key, &value)?;
|
||||
}
|
||||
for (key, value) in value.behaviors {
|
||||
schema.add_behavior(&key, &value)?;
|
||||
}
|
||||
for (key, value) in value.exts {
|
||||
schema.add_ext(&key, &value.name, &value.icon, &value.behavior)?;
|
||||
}
|
||||
|
||||
Ok(schema)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user