Add comparisons for json floats but not yet between OwnedLiterals and json.

master
Tom Alexander 4 years ago
parent 978bbe6eb3
commit a378d6e6f3
Signed by: talexander
GPG Key ID: D3A179C9A53C0EDE

@ -503,28 +503,43 @@ where
{
let self_number: JsonNumber = self_input.into();
let other_number: JsonNumber = other_input.into();
// TODO: Figure out how javascript compares floats and ints
match (self_number, other_number) {
(JsonNumber::Failure, _) => return None,
(_, JsonNumber::Failure) => return None,
(JsonNumber::UnsignedInteger(self_num), JsonNumber::UnsignedInteger(other_num)) => {
return self_num.partial_cmp(&other_num)
}
(JsonNumber::UnsignedInteger(_self_num), JsonNumber::SignedInteger(_other_num)) => {
return Some(Ordering::Greater)
(JsonNumber::UnsignedInteger(self_num), JsonNumber::SignedInteger(other_num)) => {
if self_num < std::i64::MAX as u64 {
return (self_num as i64).partial_cmp(&other_num);
} else {
return Some(Ordering::Greater);
}
}
(JsonNumber::UnsignedInteger(self_num), JsonNumber::Decimal(other_num)) => {
return (self_num as f64).partial_cmp(&other_num)
}
(JsonNumber::UnsignedInteger(_self_num), JsonNumber::Decimal(_other_num)) => return None,
(JsonNumber::SignedInteger(_self_num), JsonNumber::UnsignedInteger(_other_num)) => {
return Some(Ordering::Less)
(JsonNumber::SignedInteger(self_num), JsonNumber::UnsignedInteger(other_num)) => {
if other_num < std::i64::MAX as u64 {
return self_num.partial_cmp(&(other_num as i64));
} else {
return Some(Ordering::Less);
}
}
(JsonNumber::SignedInteger(self_num), JsonNumber::SignedInteger(other_num)) => {
return self_num.partial_cmp(&other_num)
}
(JsonNumber::SignedInteger(_self_num), JsonNumber::Decimal(_other_num)) => return None,
(JsonNumber::SignedInteger(self_num), JsonNumber::Decimal(other_num)) => {
return (self_num as f64).partial_cmp(&other_num)
}
(JsonNumber::Decimal(_self_num), JsonNumber::UnsignedInteger(_other_num)) => return None,
(JsonNumber::Decimal(_self_num), JsonNumber::SignedInteger(_other_num)) => return None,
(JsonNumber::Decimal(self_num), JsonNumber::UnsignedInteger(other_num)) => {
return self_num.partial_cmp(&(other_num as f64))
}
(JsonNumber::Decimal(self_num), JsonNumber::SignedInteger(other_num)) => {
return self_num.partial_cmp(&(other_num as f64))
}
(JsonNumber::Decimal(self_num), JsonNumber::Decimal(other_num)) => {
return self_num.partial_cmp(&other_num)
}

Loading…
Cancel
Save