mirror of
https://github.com/nushell/nushell.git
synced 2025-08-09 07:16:05 +02:00
Port random integer & decimal to engine-p + related refactoring (#3393)
* Implement minmax for Range; Simplify range command * Port random integer to enginep; New FromValue impl Now, FromValue is implemented for Tagged<Range> to allow extracting args into this type. * Make sure range value extraction fails properly The range endpoint extraction methods now return error instead of silently clipping the value. This now makes `random integer ..-4` fail properly since -4 can't be cast as u64. * Port random decimal to enginep & Refactor This added a way to interpret Range limits as f64 and a Primitive helper to get its value as f64. A side effect of this commit is that it is now possible to specify the command bounds as true decimals. E.g., `random decimal 0.0..3.14` does not clip 3.14 to 3.
This commit is contained in:
@ -267,6 +267,22 @@ impl FromValue for Range {
|
||||
}
|
||||
}
|
||||
|
||||
impl FromValue for Tagged<Range> {
|
||||
fn from_value(v: &Value) -> Result<Self, ShellError> {
|
||||
let tag = v.tag.clone();
|
||||
match v.value {
|
||||
UntaggedValue::Primitive(Primitive::Range(ref range)) => {
|
||||
Ok((*range.clone()).tagged(tag))
|
||||
}
|
||||
_ => Err(ShellError::labeled_error(
|
||||
"Can't convert to range",
|
||||
"can't convert to range",
|
||||
tag.span,
|
||||
)),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl FromValue for Vec<u8> {
|
||||
fn from_value(v: &Value) -> Result<Self, ShellError> {
|
||||
match v {
|
||||
|
Reference in New Issue
Block a user