Skip to content

Commit 04254a8

Browse files
committed
refactor: from_gura_value (json referenced)
This method seems to be adapted from `format/json.rs:from_json_value()`. - I adjusted the order of matched types to mirror that of `format/json.rs`. - `val` => `value`. - No need to dereference values, in this case we consume the `value` parameter, rather than expect a reference to borrow. No need to use `ref` or `clone()` to create owned values. - Potential Improvement: Adopt the iter + collect pattern used by other formats instead of the `for` loop used for array and object types here. Signed-off-by: Brennan Kinney <5098581+polarathene@users.noreply.github.com>
1 parent 48d7de8 commit 04254a8

File tree

1 file changed

+19
-22
lines changed

1 file changed

+19
-22
lines changed

src/file/format/gura.rs

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -9,49 +9,46 @@ pub fn parse(
99
uri: Option<&String>,
1010
text: &str,
1111
) -> Result<Map<String, Value>, Box<dyn Error + Send + Sync>> {
12-
let val = from_gura_value(uri, &gura::parse(text).unwrap());
13-
14-
match val.kind {
12+
let value = from_gura_value(uri, gura::parse(text).unwrap());
13+
match value.kind {
1514
ValueKind::Table(map) => Ok(map),
1615

1716
_ => Ok(Map::new()),
1817
}
1918
}
2019

21-
fn from_gura_value(uri: Option<&String>, val: &GuraType) -> Value {
22-
match val {
23-
GuraType::Null => Value::new(uri, ValueKind::Nil),
20+
fn from_gura_value(uri: Option<&String>, value: GuraType) -> Value {
21+
match value {
22+
GuraType::String(value) => Value::new(uri, ValueKind::String(value)),
23+
24+
GuraType::Integer(value) => Value::new(uri, ValueKind::I64(value as i64)),
25+
GuraType::BigInteger(value) => Value::new(uri, ValueKind::I128(value)),
26+
GuraType::Float(value) => Value::new(uri, ValueKind::Float(value)),
2427

25-
GuraType::Object(ref table) => {
28+
GuraType::Bool(value) => Value::new(uri, ValueKind::Boolean(value)),
29+
30+
GuraType::Object(table) => {
2631
let mut m = Map::new();
2732

28-
for (key, val) in table {
29-
m.insert(key.clone(), from_gura_value(uri, val));
33+
for (key, value) in table {
34+
m.insert(key, from_gura_value(uri, value));
3035
}
3136

3237
Value::new(uri, ValueKind::Table(m))
3338
}
3439

35-
GuraType::Bool(val) => Value::new(uri, ValueKind::Boolean(*val)),
36-
37-
GuraType::String(ref val) => Value::new(uri, ValueKind::String(val.clone())),
38-
39-
GuraType::Integer(val) => Value::new(uri, ValueKind::I64(*val as i64)),
40-
41-
GuraType::BigInteger(val) => Value::new(uri, ValueKind::I128(*val)),
42-
43-
GuraType::Float(val) => Value::new(uri, ValueKind::Float(*val)),
44-
45-
GuraType::Array(ref arr) => {
40+
GuraType::Array(array) => {
4641
let mut l = Vec::new();
4742

48-
for val in arr {
49-
l.push(from_gura_value(uri, val));
43+
for value in array {
44+
l.push(from_gura_value(uri, value));
5045
}
5146

5247
Value::new(uri, ValueKind::Array(l))
5348
}
5449

50+
// Null or remaining types (only intended for internal use):
51+
GuraType::Null => Value::new(uri, ValueKind::Nil),
5552
_ => Value::new(uri, ValueKind::Nil),
5653
}
5754
}

0 commit comments

Comments
 (0)