Add comparisons for json floats but not yet between OwnedLiterals and json.
This commit is contained in:
parent
978bbe6eb3
commit
a378d6e6f3
33
src/bin.rs
33
src/bin.rs
@ -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…
x
Reference in New Issue
Block a user