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 self_number: JsonNumber = self_input.into();
|
||||||
let other_number: JsonNumber = other_input.into();
|
let other_number: JsonNumber = other_input.into();
|
||||||
// TODO: Figure out how javascript compares floats and ints
|
|
||||||
match (self_number, other_number) {
|
match (self_number, other_number) {
|
||||||
(JsonNumber::Failure, _) => return None,
|
(JsonNumber::Failure, _) => return None,
|
||||||
(_, JsonNumber::Failure) => return None,
|
(_, JsonNumber::Failure) => return None,
|
||||||
(JsonNumber::UnsignedInteger(self_num), JsonNumber::UnsignedInteger(other_num)) => {
|
(JsonNumber::UnsignedInteger(self_num), JsonNumber::UnsignedInteger(other_num)) => {
|
||||||
return self_num.partial_cmp(&other_num)
|
return self_num.partial_cmp(&other_num)
|
||||||
}
|
}
|
||||||
(JsonNumber::UnsignedInteger(_self_num), JsonNumber::SignedInteger(_other_num)) => {
|
(JsonNumber::UnsignedInteger(self_num), JsonNumber::SignedInteger(other_num)) => {
|
||||||
return Some(Ordering::Greater)
|
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)) => {
|
(JsonNumber::SignedInteger(self_num), JsonNumber::UnsignedInteger(other_num)) => {
|
||||||
return Some(Ordering::Less)
|
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)) => {
|
(JsonNumber::SignedInteger(self_num), JsonNumber::SignedInteger(other_num)) => {
|
||||||
return self_num.partial_cmp(&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::UnsignedInteger(other_num)) => {
|
||||||
(JsonNumber::Decimal(_self_num), JsonNumber::SignedInteger(_other_num)) => return None,
|
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)) => {
|
(JsonNumber::Decimal(self_num), JsonNumber::Decimal(other_num)) => {
|
||||||
return self_num.partial_cmp(&other_num)
|
return self_num.partial_cmp(&other_num)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user