Proper error in str-slice when passed float
This commit is contained in:
parent
c9f7289670
commit
09e4537e78
@ -58,6 +58,7 @@ pub(crate) fn register(f: &mut BTreeMap<String, Builtin>) {
|
|||||||
};
|
};
|
||||||
let str_len = string.len();
|
let str_len = string.len();
|
||||||
let start = match arg!(args, 1, "start-at").eval() {
|
let start = match arg!(args, 1, "start-at").eval() {
|
||||||
|
Value::Dimension(n, Unit::None) if n.is_decimal() => return Err(format!("{} is not an int.", n).into()),
|
||||||
Value::Dimension(n, Unit::None) if n.to_integer().is_positive() => n.to_integer().to_usize().unwrap(),
|
Value::Dimension(n, Unit::None) if n.to_integer().is_positive() => n.to_integer().to_usize().unwrap(),
|
||||||
Value::Dimension(n, Unit::None) if n == Number::from(0) => 1_usize,
|
Value::Dimension(n, Unit::None) if n == Number::from(0) => 1_usize,
|
||||||
Value::Dimension(n, Unit::None) if n < -Number::from(str_len) => 1_usize,
|
Value::Dimension(n, Unit::None) if n < -Number::from(str_len) => 1_usize,
|
||||||
@ -66,6 +67,7 @@ pub(crate) fn register(f: &mut BTreeMap<String, Builtin>) {
|
|||||||
_ => todo!("$start-at: ____ is not a number")
|
_ => todo!("$start-at: ____ is not a number")
|
||||||
};
|
};
|
||||||
let mut end = match arg!(args, 2, "end-at"=Value::Null).eval() {
|
let mut end = match arg!(args, 2, "end-at"=Value::Null).eval() {
|
||||||
|
Value::Dimension(n, Unit::None) if n.is_decimal() => return Err(format!("{} is not an int.", n).into()),
|
||||||
Value::Dimension(n, Unit::None) if n.to_integer().is_positive() => n.to_integer().to_usize().unwrap(),
|
Value::Dimension(n, Unit::None) if n.to_integer().is_positive() => n.to_integer().to_usize().unwrap(),
|
||||||
Value::Dimension(n, Unit::None) if n == Number::from(0) => 0_usize,
|
Value::Dimension(n, Unit::None) if n == Number::from(0) => 0_usize,
|
||||||
Value::Dimension(n, Unit::None) if n < -Number::from(str_len) => 0_usize,
|
Value::Dimension(n, Unit::None) if n < -Number::from(str_len) => 0_usize,
|
||||||
|
@ -51,6 +51,10 @@ impl Number {
|
|||||||
val: self.val.abs(),
|
val: self.val.abs(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn is_decimal(&self) -> bool {
|
||||||
|
self.val.denom() != &BigInt::from(1)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl fmt::LowerHex for Number {
|
impl fmt::LowerHex for Number {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user