I have broken the comparison function.
This commit is contained in:
parent
5b656a44ad
commit
4d28120732
20
src/bin.rs
20
src/bin.rs
@ -410,18 +410,21 @@ impl CompareContextElement for serde_json::Value {
|
||||
}
|
||||
}
|
||||
// Handle literals
|
||||
match other.to_any().downcast_ref::<OwnedLiteral>() {
|
||||
None => (),
|
||||
Some(OwnedLiteral::LString(text)) => {
|
||||
match (self, other.to_any().downcast_ref::<OwnedLiteral>()) {
|
||||
(_, None) => (),
|
||||
(serde_json::Value::String(self_text), Some(OwnedLiteral::LString(other_text))) => {
|
||||
return self_text.partial_cmp(other_text);
|
||||
}
|
||||
(_, Some(OwnedLiteral::LString(text))) => {
|
||||
return self.to_string().partial_cmp(text);
|
||||
}
|
||||
Some(OwnedLiteral::LPositiveInteger(other_num)) => {
|
||||
(_, Some(OwnedLiteral::LPositiveInteger(other_num))) => {
|
||||
let other_json_num: serde_json::Number = std::convert::From::from(*other_num);
|
||||
return self.partial_compare(
|
||||
&serde_json::Value::Number(other_json_num) as &dyn ContextElement
|
||||
);
|
||||
}
|
||||
Some(OwnedLiteral::LFloat(other_num)) => {
|
||||
(_, Some(OwnedLiteral::LFloat(other_num))) => {
|
||||
let other_json_num = serde_json::Number::from_f64(*other_num);
|
||||
match other_json_num {
|
||||
None => return None,
|
||||
@ -483,6 +486,13 @@ impl From<&OwnedLiteral> for JsonNumber {
|
||||
match original {
|
||||
OwnedLiteral::LPositiveInteger(num) => JsonNumber::UnsignedInteger(*num),
|
||||
OwnedLiteral::LString(text) => text.into(),
|
||||
OwnedLiteral::LFloat(num) => {
|
||||
if num.is_nan() {
|
||||
JsonNumber::Failure
|
||||
} else {
|
||||
JsonNumber::Decimal(*num)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user