Skip to content

Commit 0a770e9

Browse files
Update src/file/format/jsonc.rs
Co-authored-by: Brennan Kinney <[email protected]>
1 parent 68dec13 commit 0a770e9

File tree

1 file changed

+3
-16
lines changed

1 file changed

+3
-16
lines changed

src/file/format/jsonc.rs

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -10,22 +10,9 @@ pub(crate) fn parse(
1010
uri: Option<&String>,
1111
text: &str,
1212
) -> Result<Map<String, Value>, Box<dyn Error + Send + Sync>> {
13-
match jsonc_parser::parse_to_value(text, &Default::default())? {
14-
Some(r) => match r {
15-
JsonValue::String(ref value) => Err(Unexpected::Str(value.to_string())),
16-
JsonValue::Number(value) => Err(Unexpected::Float(value.parse::<f64>().unwrap())),
17-
JsonValue::Boolean(value) => Err(Unexpected::Bool(value)),
18-
JsonValue::Object(o) => match from_jsonc_value(uri, JsonValue::Object(o)).kind {
19-
ValueKind::Table(map) => Ok(map),
20-
_ => unreachable!(),
21-
},
22-
JsonValue::Array(_) => Err(Unexpected::Seq),
23-
JsonValue::Null => Err(Unexpected::Unit),
24-
},
25-
None => Err(Unexpected::Unit),
26-
}
27-
.map_err(|err| ConfigError::invalid_root(uri, err))
28-
.map_err(|err| Box::new(err) as Box<dyn Error + Send + Sync>)
13+
let parsed = jsonc_parser::parse_to_value(text, &Default::default())?;
14+
let value = from_jsonc_value(uri, parsed.unwrap_or(ValueKind::Nil));
15+
format::extract_root_table(uri, value)
2916
}
3017

3118
fn from_jsonc_value(uri: Option<&String>, value: JsonValue<'_>) -> Value {

0 commit comments

Comments
 (0)