Module: Kumi::Core::Export::NodeBuilders
- Included in:
- Deserializer
- Defined in:
- lib/kumi/core/export/node_builders.rb
Instance Method Summary collapse
- #build_attribute_declaration(data, node_class) ⇒ Object
- #build_binding_reference(data, node_class) ⇒ Object
- #build_call_expression(data, node_class) ⇒ Object
- #build_cascade_expression(data, node_class) ⇒ Object
- #build_field_declaration(data, node_class) ⇒ Object
- #build_field_reference(data, node_class) ⇒ Object
- #build_list_expression(data, node_class) ⇒ Object
- #build_literal(data, node_class) ⇒ Object
- #build_root(data, node_class) ⇒ Object
- #build_trait_declaration(data, node_class) ⇒ Object
- #build_when_case_expression(data, node_class) ⇒ Object
Instance Method Details
#build_attribute_declaration(data, node_class) ⇒ Object
24 25 26 27 28 29 |
# File 'lib/kumi/core/export/node_builders.rb', line 24 def build_attribute_declaration(data, node_class) name = restore_name_type(data[:name], data[:name_type]) expression = build_node(data[:expression]) node_class.new(name, expression) end |
#build_binding_reference(data, node_class) ⇒ Object
59 60 61 62 |
# File 'lib/kumi/core/export/node_builders.rb', line 59 def build_binding_reference(data, node_class) binding_name = restore_name_type(data[:binding_name], data[:name_type]) node_class.new(binding_name) end |
#build_call_expression(data, node_class) ⇒ Object
38 39 40 41 42 43 |
# File 'lib/kumi/core/export/node_builders.rb', line 38 def build_call_expression(data, node_class) function_name = restore_name_type(data[:function_name], data[:function_name_type]) arguments = data[:arguments].map { |arg_data| build_node(arg_data) } node_class.new(function_name, arguments) end |
#build_cascade_expression(data, node_class) ⇒ Object
69 70 71 72 |
# File 'lib/kumi/core/export/node_builders.rb', line 69 def build_cascade_expression(data, node_class) cases = data[:cases].map { |case_data| build_node(case_data) } node_class.new(cases) end |
#build_field_declaration(data, node_class) ⇒ Object
15 16 17 18 19 20 21 22 |
# File 'lib/kumi/core/export/node_builders.rb', line 15 def build_field_declaration(data, node_class) name = restore_name_type(data[:name], data[:name_type]) type = deserialize_type(data[:field_type]) domain = deserialize_domain(data[:domain]) # Match the Struct signature of FieldDecl: (name, domain, type) node_class.new(name, domain, type) end |
#build_field_reference(data, node_class) ⇒ Object
54 55 56 57 |
# File 'lib/kumi/core/export/node_builders.rb', line 54 def build_field_reference(data, node_class) field_name = restore_name_type(data[:field_name], data[:name_type]) node_class.new(field_name) end |
#build_list_expression(data, node_class) ⇒ Object
64 65 66 67 |
# File 'lib/kumi/core/export/node_builders.rb', line 64 def build_list_expression(data, node_class) elements = data[:elements].map { |element_data| build_node(element_data) } node_class.new(elements) end |
#build_literal(data, node_class) ⇒ Object
45 46 47 48 49 50 51 52 |
# File 'lib/kumi/core/export/node_builders.rb', line 45 def build_literal(data, node_class) value = data[:value] # Restore proper Ruby type if needed value = coerce_to_type(value, data[:ruby_type]) if data[:ruby_type] && value.is_a?(String) node_class.new(value) end |
#build_root(data, node_class) ⇒ Object
7 8 9 10 11 12 13 |
# File 'lib/kumi/core/export/node_builders.rb', line 7 def build_root(data, node_class) inputs = data[:inputs].map { |input_data| build_node(input_data) } values = data[:values].map { |attr_data| build_node(attr_data) } traits = data[:traits].map { |trait_data| build_node(trait_data) } node_class.new(inputs, values, traits) end |
#build_trait_declaration(data, node_class) ⇒ Object
31 32 33 34 35 36 |
# File 'lib/kumi/core/export/node_builders.rb', line 31 def build_trait_declaration(data, node_class) name = restore_name_type(data[:name], data[:name_type]) expression = build_node(data[:expression]) node_class.new(name, expression) end |
#build_when_case_expression(data, node_class) ⇒ Object
74 75 76 77 78 |
# File 'lib/kumi/core/export/node_builders.rb', line 74 def build_when_case_expression(data, node_class) condition = build_node(data[:condition]) result = build_node(data[:result]) node_class.new(condition, result) end |