expressir 2.2.1 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (190) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -1
  3. data/.rubocop_todo.yml +253 -81
  4. data/Gemfile +4 -1
  5. data/README.adoc +63 -26
  6. data/benchmark/srl_benchmark.rb +386 -0
  7. data/benchmark/srl_native_benchmark.rb +142 -0
  8. data/benchmark/srl_ruby_benchmark.rb +130 -0
  9. data/expressir.gemspec +3 -2
  10. data/lib/expressir/benchmark.rb +1 -1
  11. data/lib/expressir/changes/item_change.rb +0 -1
  12. data/lib/expressir/changes/mapping_change.rb +0 -1
  13. data/lib/expressir/changes/schema_change.rb +0 -2
  14. data/lib/expressir/changes/version_change.rb +0 -3
  15. data/lib/expressir/changes.rb +5 -6
  16. data/lib/expressir/cli.rb +10 -24
  17. data/lib/expressir/commands/changes.rb +0 -2
  18. data/lib/expressir/commands/changes_import_eengine.rb +0 -3
  19. data/lib/expressir/commands/changes_validate.rb +0 -2
  20. data/lib/expressir/commands/format.rb +1 -1
  21. data/lib/expressir/commands/manifest.rb +0 -7
  22. data/lib/expressir/commands/package.rb +16 -29
  23. data/lib/expressir/commands/validate.rb +0 -2
  24. data/lib/expressir/commands/validate_load.rb +1 -1
  25. data/lib/expressir/commands.rb +20 -0
  26. data/lib/expressir/config.rb +0 -2
  27. data/lib/expressir/coverage.rb +11 -4
  28. data/lib/expressir/eengine/arm_compare_report.rb +1 -4
  29. data/lib/expressir/eengine/changes_section.rb +1 -3
  30. data/lib/expressir/eengine/compare_report.rb +1 -13
  31. data/lib/expressir/eengine/mim_compare_report.rb +1 -4
  32. data/lib/expressir/eengine/modified_object.rb +1 -2
  33. data/lib/expressir/eengine.rb +9 -0
  34. data/lib/expressir/errors.rb +3 -5
  35. data/lib/expressir/express/builder.rb +22 -7
  36. data/lib/expressir/express/builder_registry.rb +411 -0
  37. data/lib/expressir/express/builders/attribute_decl_builder.rb +0 -6
  38. data/lib/expressir/express/builders/built_in_builder.rb +1 -16
  39. data/lib/expressir/express/builders/constant_builder.rb +4 -19
  40. data/lib/expressir/express/builders/declaration_builder.rb +0 -4
  41. data/lib/expressir/express/builders/derive_clause_builder.rb +0 -2
  42. data/lib/expressir/express/builders/derived_attr_builder.rb +0 -2
  43. data/lib/expressir/express/builders/domain_rule_builder.rb +0 -2
  44. data/lib/expressir/express/builders/entity_decl_builder.rb +7 -13
  45. data/lib/expressir/express/builders/explicit_attr_builder.rb +5 -8
  46. data/lib/expressir/express/builders/expression_builder.rb +31 -67
  47. data/lib/expressir/express/builders/function_decl_builder.rb +20 -18
  48. data/lib/expressir/express/builders/interface_builder.rb +0 -20
  49. data/lib/expressir/express/builders/inverse_attr_builder.rb +0 -2
  50. data/lib/expressir/express/builders/inverse_attr_type_builder.rb +0 -6
  51. data/lib/expressir/express/builders/inverse_clause_builder.rb +0 -2
  52. data/lib/expressir/express/builders/literal_builder.rb +1 -15
  53. data/lib/expressir/express/builders/procedure_decl_builder.rb +20 -19
  54. data/lib/expressir/express/builders/qualifier_builder.rb +0 -27
  55. data/lib/expressir/express/builders/reference_builder.rb +1 -10
  56. data/lib/expressir/express/builders/rule_decl_builder.rb +21 -19
  57. data/lib/expressir/express/builders/schema_body_decl_builder.rb +0 -4
  58. data/lib/expressir/express/builders/schema_decl_builder.rb +7 -13
  59. data/lib/expressir/express/builders/schema_version_builder.rb +0 -6
  60. data/lib/expressir/express/builders/simple_id_builder.rb +1 -10
  61. data/lib/expressir/express/builders/statement_builder.rb +4 -32
  62. data/lib/expressir/express/builders/subtype_constraint_builder.rb +6 -30
  63. data/lib/expressir/express/builders/syntax_builder.rb +60 -7
  64. data/lib/expressir/express/builders/type_builder.rb +3 -45
  65. data/lib/expressir/express/builders/type_decl_builder.rb +1 -7
  66. data/lib/expressir/express/builders/unique_clause_builder.rb +1 -3
  67. data/lib/expressir/express/builders/unique_rule_builder.rb +0 -2
  68. data/lib/expressir/express/builders/where_clause_builder.rb +1 -3
  69. data/lib/expressir/express/builders.rb +47 -35
  70. data/lib/expressir/express/error.rb +0 -3
  71. data/lib/expressir/express/formatter.rb +17 -19
  72. data/lib/expressir/express/formatters/data_types_formatter.rb +295 -293
  73. data/lib/expressir/express/formatters/declarations_formatter.rb +617 -615
  74. data/lib/expressir/express/formatters/expressions_formatter.rb +146 -144
  75. data/lib/expressir/express/formatters/literals_formatter.rb +35 -33
  76. data/lib/expressir/express/formatters/references_formatter.rb +34 -32
  77. data/lib/expressir/express/formatters/remark_formatter.rb +176 -209
  78. data/lib/expressir/express/formatters/remark_item_formatter.rb +18 -16
  79. data/lib/expressir/express/formatters/statements_formatter.rb +190 -188
  80. data/lib/expressir/express/formatters/supertype_expressions_formatter.rb +41 -39
  81. data/lib/expressir/express/formatters.rb +22 -0
  82. data/lib/expressir/express/parser.rb +40 -41
  83. data/lib/expressir/express/pretty_formatter.rb +68 -47
  84. data/lib/expressir/express/remark_attacher.rb +210 -147
  85. data/lib/expressir/express/streaming_builder.rb +0 -3
  86. data/lib/expressir/express/transformer/remark_handling.rb +1 -2
  87. data/lib/expressir/express.rb +29 -0
  88. data/lib/expressir/manifest/resolver.rb +0 -3
  89. data/lib/expressir/manifest/validator.rb +0 -3
  90. data/lib/expressir/manifest.rb +6 -0
  91. data/lib/expressir/model/cache.rb +1 -1
  92. data/lib/expressir/model/concerns.rb +19 -0
  93. data/lib/expressir/model/data_types/aggregate.rb +1 -1
  94. data/lib/expressir/model/data_types/array.rb +1 -1
  95. data/lib/expressir/model/data_types/bag.rb +1 -1
  96. data/lib/expressir/model/data_types/binary.rb +1 -1
  97. data/lib/expressir/model/data_types/boolean.rb +1 -1
  98. data/lib/expressir/model/data_types/enumeration.rb +1 -1
  99. data/lib/expressir/model/data_types/enumeration_item.rb +1 -1
  100. data/lib/expressir/model/data_types/generic.rb +1 -1
  101. data/lib/expressir/model/data_types/generic_entity.rb +1 -1
  102. data/lib/expressir/model/data_types/integer.rb +1 -1
  103. data/lib/expressir/model/data_types/list.rb +1 -1
  104. data/lib/expressir/model/data_types/logical.rb +1 -1
  105. data/lib/expressir/model/data_types/number.rb +1 -1
  106. data/lib/expressir/model/data_types/real.rb +1 -1
  107. data/lib/expressir/model/data_types/select.rb +1 -1
  108. data/lib/expressir/model/data_types/set.rb +1 -1
  109. data/lib/expressir/model/data_types/string.rb +1 -1
  110. data/lib/expressir/model/data_types.rb +25 -0
  111. data/lib/expressir/model/declarations/attribute.rb +1 -1
  112. data/lib/expressir/model/declarations/constant.rb +1 -1
  113. data/lib/expressir/model/declarations/derived_attribute.rb +1 -1
  114. data/lib/expressir/model/declarations/entity.rb +4 -1
  115. data/lib/expressir/model/declarations/function.rb +3 -1
  116. data/lib/expressir/model/declarations/informal_proposition_rule.rb +2 -1
  117. data/lib/expressir/model/declarations/interface.rb +1 -1
  118. data/lib/expressir/model/declarations/interface_item.rb +1 -1
  119. data/lib/expressir/model/declarations/interfaced_item.rb +1 -1
  120. data/lib/expressir/model/declarations/inverse_attribute.rb +1 -1
  121. data/lib/expressir/model/declarations/parameter.rb +1 -1
  122. data/lib/expressir/model/declarations/procedure.rb +3 -1
  123. data/lib/expressir/model/declarations/remark_item.rb +1 -1
  124. data/lib/expressir/model/declarations/rule.rb +4 -1
  125. data/lib/expressir/model/declarations/schema.rb +2 -1
  126. data/lib/expressir/model/declarations/schema_version.rb +1 -1
  127. data/lib/expressir/model/declarations/schema_version_item.rb +1 -1
  128. data/lib/expressir/model/declarations/subtype_constraint.rb +1 -1
  129. data/lib/expressir/model/declarations/type.rb +4 -1
  130. data/lib/expressir/model/declarations/unique_rule.rb +1 -1
  131. data/lib/expressir/model/declarations/variable.rb +1 -1
  132. data/lib/expressir/model/declarations/where_rule.rb +1 -1
  133. data/lib/expressir/model/declarations.rb +31 -0
  134. data/lib/expressir/model/dependency_resolver.rb +0 -2
  135. data/lib/expressir/model/exp_file.rb +38 -0
  136. data/lib/expressir/model/expressions/aggregate_initializer.rb +1 -1
  137. data/lib/expressir/model/expressions/aggregate_initializer_item.rb +1 -1
  138. data/lib/expressir/model/expressions/binary_expression.rb +1 -1
  139. data/lib/expressir/model/expressions/entity_constructor.rb +1 -1
  140. data/lib/expressir/model/expressions/function_call.rb +1 -1
  141. data/lib/expressir/model/expressions/interval.rb +1 -1
  142. data/lib/expressir/model/expressions/query_expression.rb +1 -1
  143. data/lib/expressir/model/expressions/unary_expression.rb +1 -1
  144. data/lib/expressir/model/expressions.rb +18 -0
  145. data/lib/expressir/model/identifier.rb +5 -1
  146. data/lib/expressir/model/indexes.rb +11 -0
  147. data/lib/expressir/model/literals/binary.rb +1 -1
  148. data/lib/expressir/model/literals/integer.rb +1 -1
  149. data/lib/expressir/model/literals/logical.rb +1 -1
  150. data/lib/expressir/model/literals/real.rb +1 -1
  151. data/lib/expressir/model/literals/string.rb +1 -1
  152. data/lib/expressir/model/literals.rb +13 -0
  153. data/lib/expressir/model/model_element.rb +7 -15
  154. data/lib/expressir/model/references/attribute_reference.rb +1 -1
  155. data/lib/expressir/model/references/group_reference.rb +1 -1
  156. data/lib/expressir/model/references/index_reference.rb +1 -1
  157. data/lib/expressir/model/references/simple_reference.rb +1 -1
  158. data/lib/expressir/model/references.rb +12 -0
  159. data/lib/expressir/model/remark_info.rb +1 -7
  160. data/lib/expressir/model/repository.rb +72 -36
  161. data/lib/expressir/model/repository_validator.rb +0 -2
  162. data/lib/expressir/model/search_engine.rb +6 -30
  163. data/lib/expressir/model/statements/alias.rb +1 -1
  164. data/lib/expressir/model/statements/assignment.rb +1 -1
  165. data/lib/expressir/model/statements/case.rb +1 -1
  166. data/lib/expressir/model/statements/case_action.rb +1 -1
  167. data/lib/expressir/model/statements/compound.rb +1 -1
  168. data/lib/expressir/model/statements/escape.rb +1 -1
  169. data/lib/expressir/model/statements/if.rb +1 -1
  170. data/lib/expressir/model/statements/null.rb +1 -1
  171. data/lib/expressir/model/statements/procedure_call.rb +1 -1
  172. data/lib/expressir/model/statements/repeat.rb +1 -1
  173. data/lib/expressir/model/statements/return.rb +1 -1
  174. data/lib/expressir/model/statements/skip.rb +1 -1
  175. data/lib/expressir/model/statements.rb +20 -0
  176. data/lib/expressir/model/supertype_expressions/binary_supertype_expression.rb +1 -1
  177. data/lib/expressir/model/supertype_expressions/oneof_supertype_expression.rb +1 -1
  178. data/lib/expressir/model/supertype_expressions.rb +12 -0
  179. data/lib/expressir/model.rb +28 -4
  180. data/lib/expressir/package/builder.rb +33 -4
  181. data/lib/expressir/package/metadata.rb +0 -1
  182. data/lib/expressir/package/reader.rb +0 -1
  183. data/lib/expressir/package.rb +8 -0
  184. data/lib/expressir/schema_manifest.rb +5 -6
  185. data/lib/expressir/schema_manifest_entry.rb +3 -4
  186. data/lib/expressir/transformer.rb +7 -0
  187. data/lib/expressir/version.rb +1 -1
  188. data/lib/expressir.rb +23 -171
  189. metadata +49 -9
  190. data/lib/expressir/express/builders/token_builder.rb +0 -15
@@ -1,159 +1,161 @@
1
1
  module Expressir
2
2
  module Express
3
- module ExpressionsFormatter
4
- private
3
+ module Formatters
4
+ module ExpressionsFormatter
5
+ private
5
6
 
6
- def format_expressions_aggregate_initializer(node)
7
- node.items ||= []
8
- [
9
- "[",
10
- node.items.map { |x| format(x) }.join(", "),
11
- "]",
12
- ].join
13
- end
7
+ def format_expressions_aggregate_initializer(node)
8
+ node.items ||= []
9
+ [
10
+ "[",
11
+ node.items.map { |x| format(x) }.join(", "),
12
+ "]",
13
+ ].join
14
+ end
14
15
 
15
- def format_expressions_aggregate_initializer_item(node)
16
- [
17
- format(node.expression),
18
- ":",
19
- format(node.repetition),
20
- ].join
21
- end
16
+ def format_expressions_aggregate_initializer_item(node)
17
+ [
18
+ format(node.expression),
19
+ ":",
20
+ format(node.repetition),
21
+ ].join
22
+ end
22
23
 
23
- def format_expressions_binary_expression(node)
24
- operator_precedence = self.class.const_get(:OPERATOR_PRECEDENCE)
25
- op1_bin_exp = node.operand1.is_a?(Model::Expressions::BinaryExpression) &&
26
- (operator_precedence[node.operand1.operator] > operator_precedence[node.operator])
27
- op2_bin_exp = node.operand2.is_a?(Model::Expressions::BinaryExpression) &&
28
- (operator_precedence[node.operand2.operator] > operator_precedence[node.operator])
24
+ def format_expressions_binary_expression(node)
25
+ operator_precedence = self.class.const_get(:OPERATOR_PRECEDENCE)
26
+ op1_bin_exp = node.operand1.is_a?(Model::Expressions::BinaryExpression) &&
27
+ (operator_precedence[node.operand1.operator] > operator_precedence[node.operator])
28
+ op2_bin_exp = node.operand2.is_a?(Model::Expressions::BinaryExpression) &&
29
+ (operator_precedence[node.operand2.operator] > operator_precedence[node.operator])
29
30
 
30
- [
31
- *if op1_bin_exp
32
- "("
33
- end,
34
- format(node.operand1),
35
- *if op1_bin_exp
36
- ")"
37
- end,
38
- " ",
39
- case node.operator
40
- when Model::Expressions::BinaryExpression::ADDITION then "+"
41
- when Model::Expressions::BinaryExpression::AND then "AND"
42
- when Model::Expressions::BinaryExpression::COMBINE then "||"
43
- when Model::Expressions::BinaryExpression::EQUAL then "="
44
- when Model::Expressions::BinaryExpression::EXPONENTIATION then "**"
45
- when Model::Expressions::BinaryExpression::GREATER_THAN then ">"
46
- when Model::Expressions::BinaryExpression::GREATER_THAN_OR_EQUAL then ">="
47
- when Model::Expressions::BinaryExpression::IN then "IN"
48
- when Model::Expressions::BinaryExpression::INSTANCE_EQUAL then ":=:"
49
- when Model::Expressions::BinaryExpression::INSTANCE_NOT_EQUAL then ":<>:"
50
- when Model::Expressions::BinaryExpression::INTEGER_DIVISION then "DIV"
51
- when Model::Expressions::BinaryExpression::LESS_THAN then "<"
52
- when Model::Expressions::BinaryExpression::LESS_THAN_OR_EQUAL then "<="
53
- when Model::Expressions::BinaryExpression::LIKE then "LIKE"
54
- when Model::Expressions::BinaryExpression::MODULO then "MOD"
55
- when Model::Expressions::BinaryExpression::MULTIPLICATION then "*"
56
- when Model::Expressions::BinaryExpression::NOT_EQUAL then "<>"
57
- when Model::Expressions::BinaryExpression::OR then "OR"
58
- when Model::Expressions::BinaryExpression::REAL_DIVISION then "/"
59
- when Model::Expressions::BinaryExpression::SUBTRACTION then "-"
60
- when Model::Expressions::BinaryExpression::XOR then "XOR"
61
- end,
62
- " ",
63
- *if op2_bin_exp
64
- "("
65
- end,
66
- format(node.operand2),
67
- *if op2_bin_exp
68
- ")"
69
- end,
70
- ].join
71
- end
31
+ [
32
+ *if op1_bin_exp
33
+ "("
34
+ end,
35
+ format(node.operand1),
36
+ *if op1_bin_exp
37
+ ")"
38
+ end,
39
+ " ",
40
+ case node.operator
41
+ when Model::Expressions::BinaryExpression::ADDITION then "+"
42
+ when Model::Expressions::BinaryExpression::AND then "AND"
43
+ when Model::Expressions::BinaryExpression::COMBINE then "||"
44
+ when Model::Expressions::BinaryExpression::EQUAL then "="
45
+ when Model::Expressions::BinaryExpression::EXPONENTIATION then "**"
46
+ when Model::Expressions::BinaryExpression::GREATER_THAN then ">"
47
+ when Model::Expressions::BinaryExpression::GREATER_THAN_OR_EQUAL then ">="
48
+ when Model::Expressions::BinaryExpression::IN then "IN"
49
+ when Model::Expressions::BinaryExpression::INSTANCE_EQUAL then ":=:"
50
+ when Model::Expressions::BinaryExpression::INSTANCE_NOT_EQUAL then ":<>:"
51
+ when Model::Expressions::BinaryExpression::INTEGER_DIVISION then "DIV"
52
+ when Model::Expressions::BinaryExpression::LESS_THAN then "<"
53
+ when Model::Expressions::BinaryExpression::LESS_THAN_OR_EQUAL then "<="
54
+ when Model::Expressions::BinaryExpression::LIKE then "LIKE"
55
+ when Model::Expressions::BinaryExpression::MODULO then "MOD"
56
+ when Model::Expressions::BinaryExpression::MULTIPLICATION then "*"
57
+ when Model::Expressions::BinaryExpression::NOT_EQUAL then "<>"
58
+ when Model::Expressions::BinaryExpression::OR then "OR"
59
+ when Model::Expressions::BinaryExpression::REAL_DIVISION then "/"
60
+ when Model::Expressions::BinaryExpression::SUBTRACTION then "-"
61
+ when Model::Expressions::BinaryExpression::XOR then "XOR"
62
+ end,
63
+ " ",
64
+ *if op2_bin_exp
65
+ "("
66
+ end,
67
+ format(node.operand2),
68
+ *if op2_bin_exp
69
+ ")"
70
+ end,
71
+ ].join
72
+ end
72
73
 
73
- def format_expressions_entity_constructor(node)
74
- node.parameters ||= []
75
- [
76
- format(node.entity),
77
- "(",
78
- node.parameters.map { |x| format(x) }.join(", "),
79
- ")",
80
- ].join
81
- end
74
+ def format_expressions_entity_constructor(node)
75
+ node.parameters ||= []
76
+ [
77
+ format(node.entity),
78
+ "(",
79
+ node.parameters.map { |x| format(x) }.join(", "),
80
+ ")",
81
+ ].join
82
+ end
82
83
 
83
- def format_expressions_function_call(node)
84
- params = if node.parameters.nil?
85
- []
86
- else
87
- [
88
- "(",
89
- node.parameters.map { |x| format(x) }.join(", "),
90
- ")",
91
- ]
92
- end
84
+ def format_expressions_function_call(node)
85
+ params = if node.parameters.nil?
86
+ []
87
+ else
88
+ [
89
+ "(",
90
+ node.parameters.map { |x| format(x) }.join(", "),
91
+ ")",
92
+ ]
93
+ end
93
94
 
94
- [format(node.function), params].join
95
- end
95
+ [format(node.function), params].join
96
+ end
96
97
 
97
- def format_expressions_interval(node)
98
- [
99
- "{",
100
- format(node.low),
101
- " ",
102
- case node.operator1
103
- when Model::Expressions::Interval::LESS_THAN then "<"
104
- when Model::Expressions::Interval::LESS_THAN_OR_EQUAL then "<="
105
- end,
106
- " ",
107
- format(node.item),
108
- " ",
109
- case node.operator2
110
- when Model::Expressions::Interval::LESS_THAN then "<"
111
- when Model::Expressions::Interval::LESS_THAN_OR_EQUAL then "<="
112
- end,
113
- " ",
114
- format(node.high),
115
- "}",
116
- ].join
117
- end
98
+ def format_expressions_interval(node)
99
+ [
100
+ "{",
101
+ format(node.low),
102
+ " ",
103
+ case node.operator1
104
+ when Model::Expressions::Interval::LESS_THAN then "<"
105
+ when Model::Expressions::Interval::LESS_THAN_OR_EQUAL then "<="
106
+ end,
107
+ " ",
108
+ format(node.item),
109
+ " ",
110
+ case node.operator2
111
+ when Model::Expressions::Interval::LESS_THAN then "<"
112
+ when Model::Expressions::Interval::LESS_THAN_OR_EQUAL then "<="
113
+ end,
114
+ " ",
115
+ format(node.high),
116
+ "}",
117
+ ].join
118
+ end
118
119
 
119
- def format_expressions_query_expression(node)
120
- [
121
- "QUERY",
122
- "(",
123
- node.id,
124
- " ",
125
- "<*",
126
- " ",
127
- format(node.aggregate_source),
128
- " ",
129
- "|",
130
- " ",
131
- format(node.expression),
132
- *format_remarks(node).instance_eval do |x|
133
- x&.length&.positive? ? ["\n", *x, "\n"] : x
134
- end,
135
- ")",
136
- ].join
137
- end
120
+ def format_expressions_query_expression(node)
121
+ [
122
+ "QUERY",
123
+ "(",
124
+ node.id,
125
+ " ",
126
+ "<*",
127
+ " ",
128
+ format(node.aggregate_source),
129
+ " ",
130
+ "|",
131
+ " ",
132
+ format(node.expression),
133
+ *format_remarks(node).instance_eval do |x|
134
+ x&.length&.positive? ? ["\n", *x, "\n"] : x
135
+ end,
136
+ ")",
137
+ ].join
138
+ end
138
139
 
139
- def format_expressions_unary_expression(node)
140
- [
141
- case node.operator
142
- when Model::Expressions::UnaryExpression::MINUS then "-"
143
- when Model::Expressions::UnaryExpression::NOT then "NOT"
144
- when Model::Expressions::UnaryExpression::PLUS then "+"
145
- end,
146
- if node.operator == Model::Expressions::UnaryExpression::NOT
147
- " "
148
- end,
149
- *if node.operand.is_a? Model::Expressions::BinaryExpression
150
- "("
151
- end,
152
- format(node.operand),
153
- *if node.operand.is_a? Model::Expressions::BinaryExpression
154
- ")"
155
- end,
156
- ].join
140
+ def format_expressions_unary_expression(node)
141
+ [
142
+ case node.operator
143
+ when Model::Expressions::UnaryExpression::MINUS then "-"
144
+ when Model::Expressions::UnaryExpression::NOT then "NOT"
145
+ when Model::Expressions::UnaryExpression::PLUS then "+"
146
+ end,
147
+ if node.operator == Model::Expressions::UnaryExpression::NOT
148
+ " "
149
+ end,
150
+ *if node.operand.is_a? Model::Expressions::BinaryExpression
151
+ "("
152
+ end,
153
+ format(node.operand),
154
+ *if node.operand.is_a? Model::Expressions::BinaryExpression
155
+ ")"
156
+ end,
157
+ ].join
158
+ end
157
159
  end
158
160
  end
159
161
  end
@@ -1,44 +1,46 @@
1
1
  module Expressir
2
2
  module Express
3
- module LiteralsFormatter
4
- private
3
+ module Formatters
4
+ module LiteralsFormatter
5
+ private
5
6
 
6
- def format_literals_binary(node)
7
- [
8
- "%",
9
- node.value,
10
- ].join
11
- end
7
+ def format_literals_binary(node)
8
+ [
9
+ "%",
10
+ node.value,
11
+ ].join
12
+ end
12
13
 
13
- def format_literals_integer(node)
14
- node.value
15
- end
14
+ def format_literals_integer(node)
15
+ node.value
16
+ end
16
17
 
17
- def format_literals_logical(node)
18
- case node.value
19
- when Model::Literals::Logical::TRUE then "TRUE"
20
- when Model::Literals::Logical::FALSE then "FALSE"
21
- when Model::Literals::Logical::UNKNOWN then "UNKNOWN"
18
+ def format_literals_logical(node)
19
+ case node.value
20
+ when Model::Literals::Logical::TRUE then "TRUE"
21
+ when Model::Literals::Logical::FALSE then "FALSE"
22
+ when Model::Literals::Logical::UNKNOWN then "UNKNOWN"
23
+ end
22
24
  end
23
- end
24
25
 
25
- def format_literals_real(node)
26
- node.value
27
- end
26
+ def format_literals_real(node)
27
+ node.value
28
+ end
28
29
 
29
- def format_literals_string(node)
30
- if node.encoded
31
- [
32
- "\"",
33
- node.value,
34
- "\"",
35
- ].join
36
- else
37
- [
38
- "'",
39
- node.value,
40
- "'",
41
- ].join
30
+ def format_literals_string(node)
31
+ if node.encoded
32
+ [
33
+ "\"",
34
+ node.value,
35
+ "\"",
36
+ ].join
37
+ else
38
+ [
39
+ "'",
40
+ node.value,
41
+ "'",
42
+ ].join
43
+ end
42
44
  end
43
45
  end
44
46
  end
@@ -1,41 +1,43 @@
1
1
  module Expressir
2
2
  module Express
3
- module ReferencesFormatter
4
- private
3
+ module Formatters
4
+ module ReferencesFormatter
5
+ private
5
6
 
6
- def format_references_attribute_reference(node)
7
- [
8
- format(node.ref),
9
- ".",
10
- format(node.attribute),
11
- ].join
12
- end
7
+ def format_references_attribute_reference(node)
8
+ [
9
+ format(node.ref),
10
+ ".",
11
+ format(node.attribute),
12
+ ].join
13
+ end
13
14
 
14
- def format_references_group_reference(node)
15
- [
16
- format(node.ref),
17
- "\\",
18
- format(node.entity),
19
- ].join
20
- end
15
+ def format_references_group_reference(node)
16
+ [
17
+ format(node.ref),
18
+ "\\",
19
+ format(node.entity),
20
+ ].join
21
+ end
21
22
 
22
- def format_references_index_reference(node)
23
- [
24
- format(node.ref),
25
- "[",
26
- format(node.index1),
27
- *if node.index2
28
- [
29
- ":",
30
- format(node.index2),
31
- ].join
32
- end,
33
- "]",
34
- ].join
35
- end
23
+ def format_references_index_reference(node)
24
+ [
25
+ format(node.ref),
26
+ "[",
27
+ format(node.index1),
28
+ *if node.index2
29
+ [
30
+ ":",
31
+ format(node.index2),
32
+ ].join
33
+ end,
34
+ "]",
35
+ ].join
36
+ end
36
37
 
37
- def format_references_simple_reference(node)
38
- node.id
38
+ def format_references_simple_reference(node)
39
+ node.id
40
+ end
39
41
  end
40
42
  end
41
43
  end