generated from ElnuDev/rust-project
Add non-functional page dimension options to dyesub-cli, implement Error in svg-units
This commit is contained in:
parent
18e507e443
commit
9009ae9e24
8 changed files with 60 additions and 15 deletions
|
@ -6,7 +6,7 @@ edition = "2021"
|
|||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
derive_more = "0.99.17"
|
||||
err-derive = "0.3.1"
|
||||
lazy_static = "1.4.0"
|
||||
regex = "1.9.3"
|
||||
strum = "0.25.0"
|
||||
|
|
|
@ -2,7 +2,7 @@ mod unit;
|
|||
pub use unit::SVGUnit;
|
||||
|
||||
mod measure;
|
||||
pub use measure::SVGMeasure;
|
||||
pub use measure::{SVGMeasure, SVGMeasureParseError};
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
use super::SVGUnit;
|
||||
use derive_more::From;
|
||||
use err_derive::Error;
|
||||
use lazy_static::lazy_static;
|
||||
use regex::Regex;
|
||||
use std::cmp::Ordering;
|
||||
|
@ -35,15 +35,18 @@ impl SVGMeasure {
|
|||
}
|
||||
}
|
||||
|
||||
#[derive(From, Debug)]
|
||||
pub enum SVGUnitParseError {
|
||||
ParseMeasure(ParseFloatError),
|
||||
ParseUnit(ParseError),
|
||||
#[derive(Debug, Error)]
|
||||
pub enum SVGMeasureParseError {
|
||||
#[error(display = "Failed to parse measure number")]
|
||||
ParseMeasure(#[source] ParseFloatError),
|
||||
#[error(display = "Failed to parse measure unit")]
|
||||
ParseUnit(#[source] ParseError),
|
||||
#[error(display = "Invalid measure format")]
|
||||
Invalid,
|
||||
}
|
||||
|
||||
impl FromStr for SVGMeasure {
|
||||
type Err = SVGUnitParseError;
|
||||
type Err = SVGMeasureParseError;
|
||||
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
||||
if s == "0" {
|
||||
return Ok(SVGMeasure::new(0.0, SVGUnit::Pixel));
|
||||
|
@ -56,11 +59,19 @@ impl FromStr for SVGMeasure {
|
|||
let unit = captures[2].parse::<SVGUnit>()?;
|
||||
Ok(SVGMeasure::new(measure, unit))
|
||||
} else {
|
||||
Err(SVGUnitParseError::Invalid)
|
||||
Err(SVGMeasureParseError::Invalid)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<'s> TryFrom<&'s str> for SVGMeasure {
|
||||
type Error = SVGMeasureParseError;
|
||||
|
||||
fn try_from(value: &'s str) -> Result<Self, Self::Error> {
|
||||
Self::from_str(value)
|
||||
}
|
||||
}
|
||||
|
||||
const EQ_TOLERANCE: f64 = 0.00001;
|
||||
|
||||
impl PartialEq for SVGMeasure {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue