Class: Expressir::Express::Builders::BuiltInBuilder

Inherits:
Object
  • Object
show all
Includes:
Helpers
Defined in:
lib/expressir/express/builders/built_in_builder.rb

Overview

Builds built-in constant, function, and procedure reference nodes.

Instance Method Summary collapse

Methods included from Helpers

#apply_qualifier, #extract_id_ref, #extract_interval_op, #extract_nested_text, #extract_operator, #extract_rel_op, #extract_text, #extract_unary_op, #first_value

Instance Method Details

#build_built_in_constant(ast_data) ⇒ Object



10
11
12
13
# File 'lib/expressir/express/builders/built_in_builder.rb', line 10

def build_built_in_constant(ast_data)
  id = extract_nested_text(ast_data)
  Expressir::Model::References::SimpleReference.new(id: id)
end

#build_built_in_function(ast_data) ⇒ Object



15
16
17
18
19
# File 'lib/expressir/express/builders/built_in_builder.rb', line 15

def build_built_in_function(ast_data)
  id = extract_text(ast_data[:str]) ||
    extract_nested_text(ast_data)
  Expressir::Model::References::SimpleReference.new(id: id)
end

#build_built_in_procedure(ast_data) ⇒ Object



21
22
23
24
25
# File 'lib/expressir/express/builders/built_in_builder.rb', line 21

def build_built_in_procedure(ast_data)
  id = extract_text(ast_data[:str]) ||
    extract_nested_text(ast_data)
  Expressir::Model::References::SimpleReference.new(id: id)
end

#build_general_ref(ast_data) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/expressir/express/builders/built_in_builder.rb', line 27

def build_general_ref(ast_data)
  if ast_data[:constant_ref]
    Builder.build({ constant_ref: ast_data[:constant_ref] })
  elsif ast_data[:function_ref]
    Builder.build({ function_ref: ast_data[:function_ref] })
  elsif ast_data[:parameter_ref]
    Builder.build({ parameter_ref: ast_data[:parameter_ref] })
  elsif ast_data[:variable_ref]
    Builder.build({ variable_ref: ast_data[:variable_ref] })
  elsif ast_data[:entity_ref]
    Builder.build({ entity_ref: ast_data[:entity_ref] })
  elsif ast_data[:type_ref]
    Builder.build({ type_ref: ast_data[:type_ref] })
  elsif ast_data[:attribute_ref]
    Builder.build({ attribute_ref: ast_data[:attribute_ref] })
  elsif ast_data[:enumeration_ref]
    Builder.build({ enumeration_ref: ast_data[:enumeration_ref] })
  end
end

#build_item(ast_data) ⇒ Object



55
56
57
58
59
60
61
# File 'lib/expressir/express/builders/built_in_builder.rb', line 55

def build_item(ast_data)
  if ast_data[:entity_ref]
    Builder.build({ entity_ref: ast_data[:entity_ref] })
  elsif ast_data[:type_ref]
    Builder.build({ type_ref: ast_data[:type_ref] })
  end
end

#build_named_types(ast_data) ⇒ Object



47
48
49
50
51
52
53
# File 'lib/expressir/express/builders/built_in_builder.rb', line 47

def build_named_types(ast_data)
  if ast_data[:entity_ref]
    Builder.build({ entity_ref: ast_data[:entity_ref] })
  elsif ast_data[:type_ref]
    Builder.build({ type_ref: ast_data[:type_ref] })
  end
end

#build_procedure_ref(ast_data) ⇒ Object



63
64
65
66
# File 'lib/expressir/express/builders/built_in_builder.rb', line 63

def build_procedure_ref(ast_data)
  id = extract_id_ref(ast_data)
  Expressir::Model::References::SimpleReference.new(id: id)
end

#build_schema_ref(ast_data) ⇒ Object



68
69
70
71
# File 'lib/expressir/express/builders/built_in_builder.rb', line 68

def build_schema_ref(ast_data)
  id = extract_id_ref(ast_data)
  Expressir::Model::References::SimpleReference.new(id: id)
end