summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Schubert <contact@benschubert.me>2019-07-10 08:54:56 +0000
committerBenjamin Schubert <contact@benschubert.me>2019-07-10 08:54:56 +0000
commit865b90e8ff13094bcab880536fde6109901c77a9 (patch)
tree366856cc7b7dc44ecddcb57f301a3d093b8d1f6e
parent76976b6abe2f77de0cb49477bd982911c0f8edbf (diff)
parent0b4d0605e11080508e3fe384eec891fb49063af3 (diff)
downloadbuildstream-865b90e8ff13094bcab880536fde6109901c77a9.tar.gz
Merge branch 'bschubert/node-cleanup' into 'bschubert/new-node-api'
_yaml: Remove code duplication on '_new_node_from_*' See merge request BuildStream/buildstream!1462
-rw-r--r--src/buildstream/_yaml.pyx22
1 files changed, 5 insertions, 17 deletions
diff --git a/src/buildstream/_yaml.pyx b/src/buildstream/_yaml.pyx
index 945a82378..13b9d8459 100644
--- a/src/buildstream/_yaml.pyx
+++ b/src/buildstream/_yaml.pyx
@@ -1019,7 +1019,7 @@ cdef Node _create_node_recursive(object value, Node ref_node):
if value_type is list:
node = _new_node_from_list(value, ref_node)
- elif value_type is str:
+ elif value_type in [int, str, bool]:
node = ScalarNode.__new__(ScalarNode, ref_node.file_index, ref_node.line, next_synthetic_counter(), value)
elif value_type is dict:
node = _new_node_from_dict(value, ref_node)
@@ -1169,14 +1169,8 @@ cdef Node _new_node_from_dict(dict indict, Node ref_node):
cdef str k
for k, v in indict.items():
- vtype = type(v)
- if vtype is dict:
- ret.value[k] = _new_node_from_dict(v, ref_node)
- elif vtype is list:
- ret.value[k] = _new_node_from_list(v, ref_node)
- else:
- ret.value[k] = ScalarNode.__new__(
- ScalarNode, ref_node.file_index, ref_node.line, next_synthetic_counter(), v)
+ ret.value[k] = _create_node_recursive(v, ref_node)
+
return ret
@@ -1186,14 +1180,8 @@ cdef Node _new_node_from_list(list inlist, Node ref_node):
SequenceNode, ref_node.file_index, ref_node.line, next_synthetic_counter(), [])
for v in inlist:
- vtype = type(v)
- if vtype is dict:
- ret.value.append(_new_node_from_dict(v, ref_node))
- elif vtype is list:
- ret.value.append(_new_node_from_list(v, ref_node))
- else:
- ret.value.append(
- ScalarNode.__new__(ScalarNode, ref_node.file_index, ref_node.line, next_synthetic_counter(), v))
+ ret.value.append(_create_node_recursive(v, ref_node))
+
return ret