Implement modulo for duration (#10745)

# Description
This PR adds the ability to use modulo with durations:

```nu
(2min + 31sec) mod 20sec # 11sec
```

# User-Facing Changes

Allows to use `<duration> mod <duration>`
This commit is contained in:
Gaëtan
2023-10-19 12:27:00 +02:00
committed by GitHub
parent 0a8f27f6f2
commit 27e6271402
2 changed files with 15 additions and 0 deletions

View File

@ -3445,6 +3445,13 @@ impl Value {
Err(ShellError::DivisionByZero { span: op })
}
}
(Value::Duration { val: lhs, .. }, Value::Duration { val: rhs, .. }) => {
if *rhs != 0 {
Ok(Value::duration(lhs % rhs, span))
} else {
Err(ShellError::DivisionByZero { span: op })
}
}
(Value::CustomValue { val: lhs, .. }, rhs) => {
lhs.operation(span, Operator::Math(Math::Modulo), op, rhs)
}