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 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 == Number::from(0) => 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")
|
||||
};
|
||||
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 == Number::from(0) => 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(),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn is_decimal(&self) -> bool {
|
||||
self.val.denom() != &BigInt::from(1)
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::LowerHex for Number {
|
||||
|
Loading…
x
Reference in New Issue
Block a user