Seq with dates (#2746)

* seq with dates - wip

* everything seems to be working, yay!

* clippy
This commit is contained in:
Darren Schroeder
2020-11-11 14:35:02 -06:00
committed by GitHub
parent 5a75e11b0e
commit b412ff92c0
5 changed files with 415 additions and 2 deletions

View File

@ -400,6 +400,14 @@ impl Value {
}
}
/// View the Value as signed 64-bit, if possible
pub fn as_i64(&self) -> Result<i64, ShellError> {
match &self.value {
UntaggedValue::Primitive(primitive) => primitive.as_i64(self.tag.span),
_ => Err(ShellError::type_error("integer", self.spanned_type_name())),
}
}
/// View the Value as boolean, if possible
pub fn as_bool(&self) -> Result<bool, ShellError> {
match &self.value {

View File

@ -69,14 +69,37 @@ impl Primitive {
ShellError::range_error(
ExpectedRange::U64,
&format!("{}", int).spanned(span),
"converting an integer into a 64-bit integer",
"converting an integer into an unsigned 64-bit integer",
)
}),
Primitive::Decimal(decimal) => decimal.to_u64().ok_or_else(|| {
ShellError::range_error(
ExpectedRange::U64,
&format!("{}", decimal).spanned(span),
"converting a decimal into a 64-bit integer",
"converting a decimal into an unsigned 64-bit integer",
)
}),
other => Err(ShellError::type_error(
"number",
other.type_name().spanned(span),
)),
}
}
pub fn as_i64(&self, span: Span) -> Result<i64, ShellError> {
match self {
Primitive::Int(int) => int.to_i64().ok_or_else(|| {
ShellError::range_error(
ExpectedRange::I64,
&format!("{}", int).spanned(span),
"converting an integer into a signed 64-bit integer",
)
}),
Primitive::Decimal(decimal) => decimal.to_i64().ok_or_else(|| {
ShellError::range_error(
ExpectedRange::I64,
&format!("{}", decimal).spanned(span),
"converting a decimal into a signed 64-bit integer",
)
}),
other => Err(ShellError::type_error(