aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2024-07-15 15:04:10 +0900
committernsfisis <nsfisis@gmail.com>2024-07-15 15:04:10 +0900
commit43877b3e5079eb5e9131cb7a355642df2d8b3525 (patch)
tree9d60e2b54fcab28f2d270e21e5961aeabad0131e
parent6a7904da395cf4d9383629a85e42b621304b00c7 (diff)
downloadreparojson-43877b3e5079eb5e9131cb7a355642df2d8b3525.tar.gz
reparojson-43877b3e5079eb5e9131cb7a355642df2d8b3525.tar.zst
reparojson-43877b3e5079eb5e9131cb7a355642df2d8b3525.zip
fix: object correction
-rw-r--r--src/lib.rs27
1 files changed, 26 insertions, 1 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 7f2ce1a..90c3bab 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -297,7 +297,8 @@ impl Parser {
return SyntaxError::InvalidValue.to_result();
}
w.write_all(b":")?;
- self.walk_element(input, w)
+ self.walk_ws(input, w)?;
+ self.walk_value(input, w)
}
fn walk_array<I: Iterator<Item = std::io::Result<u8>>, W: Write>(
@@ -723,5 +724,29 @@ mod tests {
assert!(matches!(res, Ok(super::RepairOk::Repaired)));
assert_eq!("[1, 2 ]", out);
}
+ {
+ let s = r#"{ , }"#;
+ let (res, out) = repair(s);
+ assert!(matches!(res, Ok(super::RepairOk::Repaired)));
+ assert_eq!(r#"{ }"#, out);
+ }
+ {
+ let s = r#"{ "a":1 , }"#;
+ let (res, out) = repair(s);
+ assert!(matches!(res, Ok(super::RepairOk::Repaired)));
+ assert_eq!(r#"{ "a":1 }"#, out);
+ }
+ {
+ let s = r#"{"a":1 "b":2 }"#;
+ let (res, out) = repair(s);
+ assert!(matches!(res, Ok(super::RepairOk::Repaired)));
+ assert_eq!(r#"{"a":1, "b":2 }"#, out);
+ }
+ {
+ let s = r#"{"a":1 "b":2 ,}"#;
+ let (res, out) = repair(s);
+ assert!(matches!(res, Ok(super::RepairOk::Repaired)));
+ assert_eq!(r#"{"a":1, "b":2 }"#, out);
+ }
}
}