|
@@ -369,3 +369,21 @@ def set_in_node(a, b, **remainder):
|
|
|
value, = yield [("RDN", [a['id'], b['id']])]
|
|
|
yield [("RETURN", [{'value': value is not None}])]
|
|
|
|
|
|
+def read_type(a, b, **remainder):
|
|
|
+ if "value" not in b:
|
|
|
+ b['value'], = yield [("RV", [b['id']])]
|
|
|
+
|
|
|
+ model, type_mapping, metamodel = yield [("RD", [a['id'], 'model']), ("RD", [a['id'], 'type_mapping']), ("RD", [a['id'], 'metamodel'])]
|
|
|
+ metamodel, in_model, type_value = yield [("RD", [metamodel, 'model']), ("RD", [model, b['value']]), ("RD", [type_mapping, b['value']])]
|
|
|
+
|
|
|
+ if in_model is None:
|
|
|
+ yield [("RETURN", [{'value': ""}])]
|
|
|
+ elif type_value is None:
|
|
|
+ yield [("RETURN", [{'value': ""}])]
|
|
|
+ else:
|
|
|
+ type_value, = yield [("RV", [type_value])]
|
|
|
+ in_metamodel, = yield [("RD", [metamodel, type_value])]
|
|
|
+ if in_metamodel is None:
|
|
|
+ yield [("RETURN", [{'value': ""}])]
|
|
|
+ else:
|
|
|
+ yield [("RETURN", [{'value': type_value}])]
|