|
1 | 1 | use std::error::Error;
|
2 | 2 |
|
3 |
| -use gura::GuraType; |
4 |
| - |
5 | 3 | use crate::format;
|
6 | 4 | use crate::map::Map;
|
7 |
| -use crate::value::{Value, ValueKind}; |
| 5 | +use crate::value::Value; |
8 | 6 |
|
9 | 7 | pub fn parse(
|
10 | 8 | uri: Option<&String>,
|
11 | 9 | text: &str,
|
12 | 10 | ) -> Result<Map<String, Value>, Box<dyn Error + Send + Sync>> {
|
13 |
| - let value = from_gura_value(uri, gura::parse(text).unwrap()); |
| 11 | + // Parse a Gura input from the provided text |
| 12 | + let value = format::from_parsed_value(uri, serde_gura::from_str(text)?); |
14 | 13 | format::extract_root_table(uri, value)
|
15 | 14 | }
|
16 |
| - |
17 |
| -fn from_gura_value(uri: Option<&String>, value: GuraType) -> Value { |
18 |
| - let vk = match value { |
19 |
| - GuraType::String(value) => ValueKind::String(value), |
20 |
| - |
21 |
| - GuraType::Integer(value) => ValueKind::I64(value as i64), |
22 |
| - GuraType::BigInteger(value) => ValueKind::I128(value), |
23 |
| - GuraType::Float(value) => ValueKind::Float(value), |
24 |
| - |
25 |
| - GuraType::Bool(value) => ValueKind::Boolean(value), |
26 |
| - |
27 |
| - GuraType::Object(table) => { |
28 |
| - let m = table |
29 |
| - .into_iter() |
30 |
| - .map(|(k, v)| (k, from_gura_value(uri, v))) |
31 |
| - .collect(); |
32 |
| - |
33 |
| - ValueKind::Table(m) |
34 |
| - } |
35 |
| - |
36 |
| - GuraType::Array(array) => { |
37 |
| - let l = array |
38 |
| - .into_iter() |
39 |
| - .map(|v| from_gura_value(uri, v)) |
40 |
| - .collect(); |
41 |
| - |
42 |
| - ValueKind::Array(l) |
43 |
| - } |
44 |
| - |
45 |
| - GuraType::Null => ValueKind::Nil, |
46 |
| - |
47 |
| - // Remaining types (only intended for internal use): |
48 |
| - _ => ValueKind::Nil, |
49 |
| - }; |
50 |
| - |
51 |
| - Value::new(uri, vk) |
52 |
| -} |
0 commit comments