From 5c129d5285552e47968a5f68ca3d7dc91f26b110 Mon Sep 17 00:00:00 2001 From: mb Date: Mon, 24 Jun 2024 15:24:19 +0200 Subject: [PATCH] Adapt to xso change --- parsers/src/data_forms/data_form.rs | 4 +--- parsers/src/data_forms/validate.rs | 28 ++++++++++++---------------- 2 files changed, 13 insertions(+), 19 deletions(-) diff --git a/parsers/src/data_forms/data_form.rs b/parsers/src/data_forms/data_form.rs index 75dd8f35e16888f328c3533c3efae51559d6e393..9473c3ad13b0c117776f0c5228a06c94dc9936df 100644 --- a/parsers/src/data_forms/data_form.rs +++ b/parsers/src/data_forms/data_form.rs @@ -221,9 +221,7 @@ impl TryFrom for Field { field.desc = Some(element.text()); } else if element.is("validate", ns::XDATA_VALIDATE) { if field.validate.is_some() { - return Err(Error::ParseError( - "More than one validate element in field.", - )); + return Err(Error::Other("More than one validate element in field.").into()); } field.validate = Some(Validate::try_from(element.clone())?); } else { diff --git a/parsers/src/data_forms/validate.rs b/parsers/src/data_forms/validate.rs index 4d0471d2f15dc42a692c7119eb993f7d0064a277..c35531262da62650f2e9e18e05877fc65a14b715 100644 --- a/parsers/src/data_forms/validate.rs +++ b/parsers/src/data_forms/validate.rs @@ -11,6 +11,7 @@ use std::fmt::{Display, Formatter}; use std::str::FromStr; use minidom::{Element, IntoAttributeValue}; +use xso::error::FromElementError; use crate::ns::XDATA_VALIDATE; use crate::Error; @@ -178,7 +179,7 @@ pub struct Validate { } impl TryFrom for Validate { - type Error = Error; + type Error = FromElementError; fn try_from(elem: Element) -> Result { check_self!(elem, "validate", XDATA_VALIDATE); @@ -195,18 +196,18 @@ impl TryFrom for Validate { _ if child.is("list-range", XDATA_VALIDATE) => { let list_range = ListRange::try_from(child.clone())?; if validate.list_range.is_some() { - return Err(Error::ParseError( + return Err(Error::Other( "Encountered unsupported number (n > 1) of list-range in validate element.", - )); + ).into()); } validate.list_range = Some(list_range); } _ => { let method = Method::try_from(child.clone())?; if validate.method.is_some() { - return Err(Error::ParseError( + return Err(Error::Other( "Encountered unsupported number (n > 1) of validation methods in validate element.", - )); + ).into()); } validate.method = Some(method); } @@ -252,7 +253,7 @@ impl TryFrom for Method { check_no_children!(elem, "regex"); Method::Regex(elem.text()) } - _ => return Err(Error::ParseError("Encountered invalid validation method.")), + _ => return Err(Error::Other("Encountered invalid validation method.").into()), }; Ok(method) } @@ -279,9 +280,10 @@ impl FromStr for Datatype { let mut parts = s.splitn(2, ":"); let Some(prefix) = parts.next() else { - return Err(Error::ParseError( + return Err(Error::Other( "Encountered invalid validation datatype which is missing a prefix.", - )); + ) + .into()); }; match prefix { @@ -300,9 +302,7 @@ impl FromStr for Datatype { } let Some(datatype) = parts.next() else { - return Err(Error::ParseError( - "Encountered invalid validation datatype.", - )); + return Err(Error::Other("Encountered invalid validation datatype.").into()); }; let parsed_datatype = match datatype.to_ascii_lowercase().as_str() { @@ -319,11 +319,7 @@ impl FromStr for Datatype { "short" => Datatype::Short, "string" => Datatype::String, "time" => Datatype::Time, - _ => { - return Err(Error::ParseError( - "Encountered invalid validation datatype.", - )) - } + _ => return Err(Error::Other("Encountered invalid validation datatype.").into()), }; Ok(parsed_datatype)