Switch duration back to bigint (#3554)

This commit is contained in:
JT
2021-06-04 19:39:12 +12:00
committed by GitHub
parent 7d78f40bf6
commit 4bca36f479
7 changed files with 66 additions and 35 deletions

View File

@ -77,7 +77,7 @@ pub enum CompareValues {
Decimals(BigDecimal, BigDecimal),
String(String, String),
Date(DateTime<FixedOffset>, DateTime<FixedOffset>),
DateDuration(DateTime<FixedOffset>, i64),
DateDuration(DateTime<FixedOffset>, BigInt),
Booleans(bool, bool),
}
@ -92,9 +92,11 @@ impl CompareValues {
CompareValues::Date(left, right) => left.cmp(right),
CompareValues::DateDuration(left, right) => {
// FIXME: Not sure if I could do something better with the Span.
let duration =
Primitive::into_chrono_duration(Primitive::Duration(*right), Span::unknown())
.expect("Could not convert nushell Duration into chrono Duration.");
let duration = Primitive::into_chrono_duration(
Primitive::Duration(right.clone()),
Span::unknown(),
)
.expect("Could not convert nushell Duration into chrono Duration.");
let right: DateTime<FixedOffset> = Utc::now()
.checked_sub_signed(duration)
.expect("Data overflow")
@ -158,7 +160,7 @@ pub fn coerce_compare_primitive(
(Nothing, Nothing) => CompareValues::Booleans(true, true),
(String(left), String(right)) => CompareValues::String(left.clone(), right.clone()),
(Date(left), Date(right)) => CompareValues::Date(*left, *right),
(Date(left), Duration(right)) => CompareValues::DateDuration(*left, *right),
(Date(left), Duration(right)) => CompareValues::DateDuration(*left, right.clone()),
(Boolean(left), Boolean(right)) => CompareValues::Booleans(*left, *right),
(Boolean(left), Nothing) => CompareValues::Booleans(*left, false),
(Nothing, Boolean(right)) => CompareValues::Booleans(false, *right),

View File

@ -33,7 +33,7 @@ pub enum InlineShape {
GlobPattern(String),
Boolean(bool),
Date(DateTime<FixedOffset>),
Duration(i64),
Duration(BigInt),
FilePath(PathBuf),
Binary(usize),
@ -94,7 +94,7 @@ impl InlineShape {
Primitive::GlobPattern(pattern) => InlineShape::GlobPattern(pattern.clone()),
Primitive::Boolean(boolean) => InlineShape::Boolean(*boolean),
Primitive::Date(date) => InlineShape::Date(*date),
Primitive::Duration(duration) => InlineShape::Duration(*duration),
Primitive::Duration(duration) => InlineShape::Duration(duration.clone()),
Primitive::FilePath(path) => InlineShape::FilePath(path.clone()),
Primitive::Binary(b) => InlineShape::Binary(b.len()),
Primitive::BeginningOfStream => InlineShape::BeginningOfStream,
@ -304,9 +304,10 @@ impl PrettyDebug for FormatInlineShape {
.to_owned(),
),
InlineShape::Date(date) => DbgDocBldr::primitive(nu_protocol::format_date(date)),
InlineShape::Duration(duration) => {
DbgDocBldr::description(format_primitive(&Primitive::Duration(*duration), None))
}
InlineShape::Duration(duration) => DbgDocBldr::description(format_primitive(
&Primitive::Duration(duration.clone()),
None,
)),
InlineShape::FilePath(path) => DbgDocBldr::primitive(path.display()),
InlineShape::Binary(length) => {
DbgDocBldr::opaque(format!("<binary: {} bytes>", length))