expressir 0.2.13-x64-mingw32 → 0.2.18-x64-mingw32

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 (63) hide show
  1. checksums.yaml +4 -4
  2. data/exe/format +56 -11
  3. data/lib/expressir/express_exp/2.4/express_parser.so +0 -0
  4. data/lib/expressir/express_exp/2.5/express_parser.so +0 -0
  5. data/lib/expressir/express_exp/2.6/express_parser.so +0 -0
  6. data/lib/expressir/express_exp/2.7/express_parser.so +0 -0
  7. data/lib/expressir/express_exp/3.0/express_parser.so +0 -0
  8. data/lib/expressir/express_exp/formatter.rb +201 -147
  9. data/lib/expressir/express_exp/hyperlink_formatter.rb +6 -4
  10. data/lib/expressir/express_exp/parser.rb +38 -25
  11. data/lib/expressir/express_exp/schema_head_formatter.rb +2 -7
  12. data/lib/expressir/express_exp/visitor.rb +27 -54
  13. data/lib/expressir/model.rb +2 -1
  14. data/lib/expressir/model/entity.rb +6 -6
  15. data/lib/expressir/model/expressions/query_expression.rb +3 -3
  16. data/lib/expressir/model/function.rb +15 -11
  17. data/lib/expressir/model/informal_proposition.rb +4 -1
  18. data/lib/expressir/model/{renamed_ref.rb → interface_item.rb} +2 -2
  19. data/lib/expressir/model/interfaced_item.rb +26 -0
  20. data/lib/expressir/model/model_element.rb +28 -7
  21. data/lib/expressir/model/procedure.rb +15 -11
  22. data/lib/expressir/model/repository.rb +3 -3
  23. data/lib/expressir/model/rule.rb +16 -12
  24. data/lib/expressir/model/schema.rb +60 -29
  25. data/lib/expressir/model/statements/alias.rb +3 -3
  26. data/lib/expressir/model/statements/repeat.rb +3 -3
  27. data/lib/expressir/model/subtype_constraint.rb +1 -6
  28. data/lib/expressir/model/type.rb +9 -5
  29. data/lib/expressir/version.rb +1 -1
  30. data/original/examples/syntax/multiple.exp +23 -0
  31. data/original/examples/syntax/multiple.yaml +184 -0
  32. data/original/examples/syntax/multiple_formatted.exp +71 -0
  33. data/original/examples/syntax/multiple_hyperlink_formatted.exp +71 -0
  34. data/original/examples/syntax/multiple_schema_head_hyperlink_formatted.exp +13 -0
  35. data/original/examples/syntax/remark.exp +41 -41
  36. data/original/examples/syntax/remark.yaml +446 -0
  37. data/original/examples/syntax/remark_formatted.exp +62 -50
  38. data/original/examples/syntax/{simple.exp → single.exp} +1 -1
  39. data/original/examples/syntax/single.yaml +9 -0
  40. data/original/examples/syntax/single_formatted.exp +6 -0
  41. data/original/examples/syntax/single_formatted.yaml +19 -0
  42. data/original/examples/syntax/single_root_path.yaml +9 -0
  43. data/original/examples/syntax/syntax.exp +29 -19
  44. data/original/examples/syntax/syntax.yaml +3439 -0
  45. data/original/examples/syntax/syntax_formatted.exp +271 -131
  46. data/original/examples/syntax/syntax_schema_head_formatted.exp +18 -0
  47. data/spec/expressir/express_exp/formatter_spec.rb +111 -0
  48. data/spec/expressir/express_exp/parser_spec.rb +121 -0
  49. data/spec/expressir/model/{model_element/find_spec.rb → model_element_spec.rb} +110 -10
  50. metadata +20 -18
  51. data/original/examples/syntax/hyperlink.exp +0 -8
  52. data/original/examples/syntax/hyperlink_formatted.exp +0 -19
  53. data/original/examples/syntax/source.exp +0 -16
  54. data/spec/expressir/express_exp/formatter/remark_spec.rb +0 -28
  55. data/spec/expressir/express_exp/formatter/syntax_spec.rb +0 -28
  56. data/spec/expressir/express_exp/hyperlink_formatter_spec.rb +0 -24
  57. data/spec/expressir/express_exp/parser/head_source_spec.rb +0 -38
  58. data/spec/expressir/express_exp/parser/multiple_spec.rb +0 -32
  59. data/spec/expressir/express_exp/parser/remark_spec.rb +0 -411
  60. data/spec/expressir/express_exp/parser/source_spec.rb +0 -29
  61. data/spec/expressir/express_exp/parser/syntax_spec.rb +0 -3080
  62. data/spec/expressir/express_exp/schema_head_formatter_spec.rb +0 -36
  63. data/spec/expressir/model/model_element/hash_spec.rb +0 -66
@@ -1,8 +0,0 @@
1
- SCHEMA hyperlink_schema;
2
- ENTITY test; END_ENTITY;
3
- ENTITY empty_entity; END_ENTITY;
4
- ENTITY attribute_entity; test : BOOLEAN; END_ENTITY;
5
- ENTITY subtype_empty_entity SUBTYPE OF (empty_entity); END_ENTITY;
6
- ENTITY subtype_attribute_entity SUBTYPE OF (attribute_entity); SELF\attribute_entity.test : BOOLEAN; END_ENTITY;
7
- ENTITY subtype_missing_entity SUBTYPE OF (missing_entity); END_ENTITY;
8
- END_SCHEMA;
@@ -1,19 +0,0 @@
1
- SCHEMA hyperlink_schema;
2
- ENTITY test;
3
- END_ENTITY;
4
- ENTITY empty_entity;
5
- END_ENTITY;
6
- ENTITY attribute_entity;
7
- test : BOOLEAN;
8
- END_ENTITY;
9
- ENTITY subtype_empty_entity
10
- SUBTYPE OF ({{{<<express:hyperlink_schema.empty_entity,empty_entity>>}}});
11
- END_ENTITY;
12
- ENTITY subtype_attribute_entity
13
- SUBTYPE OF ({{{<<express:hyperlink_schema.attribute_entity,attribute_entity>>}}});
14
- SELF\{{{<<express:hyperlink_schema.attribute_entity,attribute_entity>>}}}.test : BOOLEAN;
15
- END_ENTITY;
16
- ENTITY subtype_missing_entity
17
- SUBTYPE OF (missing_entity);
18
- END_ENTITY;
19
- END_SCHEMA;
@@ -1,16 +0,0 @@
1
- SCHEMA entity_schema;
2
- -- body
3
- ENTITY empty_entity; END_ENTITY;
4
- END_SCHEMA;
5
-
6
- SCHEMA version_entity_schema 'version';
7
- -- body
8
- ENTITY empty_entity; END_ENTITY;
9
- END_SCHEMA;
10
-
11
- SCHEMA version_interface_entity_schema 'version';
12
- USE FROM contract_schema;
13
- REFERENCE FROM contract_schema;
14
- -- body
15
- ENTITY empty_entity; END_ENTITY;
16
- END_SCHEMA;
@@ -1,28 +0,0 @@
1
- require "spec_helper"
2
- require "expressir/express_exp/parser"
3
- require "expressir/express_exp/formatter"
4
-
5
- RSpec.describe Expressir::ExpressExp::Formatter do
6
- describe ".format" do
7
- it "formats remark" do
8
- repo = Expressir::ExpressExp::Parser.from_file(input_file)
9
-
10
- result = Expressir::ExpressExp::Formatter.format(repo)
11
- expected_result = File.read(output_file)
12
-
13
- expect(result).to eq(expected_result)
14
- end
15
- end
16
-
17
- def input_file
18
- @input_file ||= Expressir.root_path.join(
19
- "original", "examples", "syntax", "remark.exp"
20
- )
21
- end
22
-
23
- def output_file
24
- @output_file ||= Expressir.root_path.join(
25
- "original", "examples", "syntax", "remark_formatted.exp"
26
- )
27
- end
28
- end
@@ -1,28 +0,0 @@
1
- require "spec_helper"
2
- require "expressir/express_exp/parser"
3
- require "expressir/express_exp/formatter"
4
-
5
- RSpec.describe Expressir::ExpressExp::Formatter do
6
- describe ".format" do
7
- it "formats syntax" do
8
- repo = Expressir::ExpressExp::Parser.from_file(input_file)
9
-
10
- result = Expressir::ExpressExp::Formatter.format(repo)
11
- expected_result = File.read(output_file)
12
-
13
- expect(result).to eq(expected_result)
14
- end
15
- end
16
-
17
- def input_file
18
- @input_file ||= Expressir.root_path.join(
19
- "original", "examples", "syntax", "syntax.exp"
20
- )
21
- end
22
-
23
- def output_file
24
- @output_file ||= Expressir.root_path.join(
25
- "original", "examples", "syntax", "syntax_formatted.exp"
26
- )
27
- end
28
- end
@@ -1,24 +0,0 @@
1
- require "spec_helper"
2
- require "expressir/express_exp/parser"
3
- require "expressir/express_exp/hyperlink_formatter"
4
-
5
- RSpec.describe Expressir::ExpressExp::HyperlinkFormatter do
6
- describe ".format" do
7
- it "formats hyperlink" do
8
- repo = Expressir::ExpressExp::Parser.from_file(input_file)
9
-
10
- result = Expressir::ExpressExp::HyperlinkFormatter.format(repo)
11
- expected_result = File.read(output_file)
12
-
13
- expect(result).to eq(expected_result)
14
- end
15
- end
16
-
17
- def input_file
18
- @input_file ||= Expressir.root_path.join("original", "examples", "syntax", "hyperlink.exp")
19
- end
20
-
21
- def output_file
22
- @output_file ||= Expressir.root_path.join("original", "examples", "syntax", "hyperlink_formatted.exp")
23
- end
24
- end
@@ -1,38 +0,0 @@
1
- require "spec_helper"
2
- require "expressir/express_exp/parser"
3
-
4
- RSpec.describe Expressir::ExpressExp::Parser do
5
- describe ".head_source" do
6
- it "contains original head source" do
7
- input = File.read(sample_file)
8
- repo = Expressir::ExpressExp::Parser.from_file(sample_file)
9
-
10
- repo.schemas[0].tap do |x|
11
- start_index = x.source.index("SCHEMA")
12
- stop_index = x.source.index(";") + ";".length - 1
13
- expected_result = x.source[start_index..stop_index]
14
- expect(x.head_source).to eq(expected_result)
15
- end
16
-
17
- repo.schemas[1].tap do |x|
18
- start_index = x.source.index("SCHEMA")
19
- stop_index = x.source.index(";") + ";".length - 1
20
- expected_result = x.source[start_index..stop_index]
21
- expect(x.head_source).to eq(expected_result)
22
- end
23
-
24
- repo.schemas[2].tap do |x|
25
- start_index = x.source.index("SCHEMA")
26
- stop_index = x.source.index("REFERENCE FROM contract_schema;") + "REFERENCE FROM contract_schema;".length - 1
27
- expected_result = x.source[start_index..stop_index]
28
- expect(x.head_source).to eq(expected_result)
29
- end
30
- end
31
- end
32
-
33
- def sample_file
34
- @sample_file ||= Expressir.root_path.join(
35
- "original", "examples", "syntax", "source.exp"
36
- )
37
- end
38
- end
@@ -1,32 +0,0 @@
1
- require "spec_helper"
2
- require "expressir/express_exp/parser"
3
-
4
- RSpec.describe Expressir::ExpressExp::Parser do
5
- describe ".from_files" do
6
- it "parses multiple files" do
7
- repo = Expressir::ExpressExp::Parser.from_files(sample_files)
8
-
9
- schemas = repo.schemas
10
- expect(schemas.count).to eq(5)
11
- expect(schemas[0].id).to eq("syntax_schema")
12
- expect(schemas[1].id).to eq("remark_schema")
13
- expect(schemas[2].id).to eq("entity_schema")
14
- expect(schemas[3].id).to eq("version_entity_schema")
15
- expect(schemas[4].id).to eq("version_interface_entity_schema")
16
- end
17
- end
18
-
19
- def sample_files
20
- @sample_files ||= [
21
- Expressir.root_path.join(
22
- "original", "examples", "syntax", "syntax.exp"
23
- ),
24
- Expressir.root_path.join(
25
- "original", "examples", "syntax", "remark.exp"
26
- ),
27
- Expressir.root_path.join(
28
- "original", "examples", "syntax", "source.exp"
29
- )
30
- ]
31
- end
32
- end
@@ -1,411 +0,0 @@
1
- require "spec_helper"
2
- require "expressir/express_exp/parser"
3
-
4
- RSpec.describe Expressir::ExpressExp::Parser do
5
- describe ".from_file" do
6
- it "parses remark" do
7
- repo = Expressir::ExpressExp::Parser.from_file(sample_file)
8
-
9
- schema = repo.schemas.first
10
-
11
- schema.tap do |x|
12
- expect(x).to be_instance_of(Expressir::Model::Schema)
13
- expect(x.remarks).to be_instance_of(Array)
14
- expect(x.remarks.count).to eq(5)
15
- expect(x.remarks[0]).to eq("Any character within the EXPRESS character set may occur between the start and end of\nan embedded remark including the newline character; therefore, embedded remarks can span\nseveral physical lines.")
16
- expect(x.remarks[1]).to eq("The tail remark is written at the end of a physical line.")
17
- expect(x.remarks[2]).to eq("UTF8 test: Příliš žluťoučký kůň úpěl ďábelské ódy.")
18
- expect(x.remarks[3]).to eq("universal scope - schema before")
19
- expect(x.remarks[4]).to eq("universal scope - schema")
20
- end
21
-
22
- schema.constants.first.tap do |x|
23
- expect(x).to be_instance_of(Expressir::Model::Constant)
24
- expect(x.remarks).to be_instance_of(Array)
25
- expect(x.remarks.count).to eq(2)
26
- expect(x.remarks[0]).to eq("schema scope - constant")
27
- expect(x.remarks[1]).to eq("universal scope - constant")
28
- end
29
-
30
- schema.types.first.tap do |x|
31
- expect(x).to be_instance_of(Expressir::Model::Type)
32
- expect(x.remarks).to be_instance_of(Array)
33
- expect(x.remarks.count).to eq(2)
34
- expect(x.remarks[0]).to eq("schema scope - type")
35
- expect(x.remarks[1]).to eq("universal scope - type")
36
-
37
- expect(x.type).to be_instance_of(Expressir::Model::Types::Enumeration)
38
- x.type.items.first.tap do |x|
39
- expect(x).to be_instance_of(Expressir::Model::EnumerationItem)
40
- expect(x.remarks).to be_instance_of(Array)
41
- expect(x.remarks.count).to eq(4)
42
- expect(x.remarks[0]).to eq("schema scope - enumeration item")
43
- expect(x.remarks[1]).to eq("schema scope - enumeration item, on the same level as the type")
44
- expect(x.remarks[2]).to eq("universal scope - enumeration item")
45
- expect(x.remarks[3]).to eq("universal scope - enumeration item, on the same level as the type")
46
- end
47
- end
48
-
49
- schema.types.first.where.first.tap do |x|
50
- expect(x).to be_instance_of(Expressir::Model::Where)
51
- expect(x.remarks).to be_instance_of(Array)
52
- expect(x.remarks.count).to eq(6)
53
- expect(x.remarks[0]).to eq("type scope - type where")
54
- expect(x.remarks[1]).to eq("type scope - type where, with prefix")
55
- expect(x.remarks[2]).to eq("schema scope - type where")
56
- expect(x.remarks[3]).to eq("schema scope - type where, with prefix")
57
- expect(x.remarks[4]).to eq("universal scope - type where")
58
- expect(x.remarks[5]).to eq("universal scope - type where, with prefix")
59
- end
60
-
61
- schema.types.first.informal_propositions.first.tap do |x|
62
- expect(x).to be_instance_of(Expressir::Model::InformalProposition)
63
- expect(x.remarks).to be_instance_of(Array)
64
- expect(x.remarks.count).to eq(6)
65
- expect(x.remarks[0]).to eq("type scope - type informal proposition")
66
- expect(x.remarks[1]).to eq("type scope - type informal proposition, with prefix")
67
- expect(x.remarks[2]).to eq("schema scope - type informal proposition")
68
- expect(x.remarks[3]).to eq("schema scope - type informal proposition, with prefix")
69
- expect(x.remarks[4]).to eq("universal scope - type informal proposition")
70
- expect(x.remarks[5]).to eq("universal scope - type informal proposition, with prefix")
71
- end
72
-
73
- schema.entities.first.tap do |x|
74
- expect(x).to be_instance_of(Expressir::Model::Entity)
75
- expect(x.remarks).to be_instance_of(Array)
76
- expect(x.remarks.count).to eq(2)
77
- expect(x.remarks[0]).to eq("schema scope - entity")
78
- expect(x.remarks[1]).to eq("universal scope - entity")
79
- end
80
-
81
- schema.entities.first.attributes.find{|x| x.kind == Expressir::Model::Attribute::EXPLICIT}.tap do |x|
82
- expect(x).to be_instance_of(Expressir::Model::Attribute)
83
- expect(x.kind).to eq(Expressir::Model::Attribute::EXPLICIT)
84
- expect(x.remarks).to be_instance_of(Array)
85
- expect(x.remarks.count).to eq(3)
86
- expect(x.remarks[0]).to eq("entity scope - entity attribute")
87
- expect(x.remarks[1]).to eq("schema scope - entity attribute")
88
- expect(x.remarks[2]).to eq("universal scope - entity attribute")
89
- end
90
-
91
- schema.entities.first.attributes.find{|x| x.kind == Expressir::Model::Attribute::DERIVED}.tap do |x|
92
- expect(x).to be_instance_of(Expressir::Model::Attribute)
93
- expect(x.kind).to eq(Expressir::Model::Attribute::DERIVED)
94
- expect(x.remarks).to be_instance_of(Array)
95
- expect(x.remarks.count).to eq(3)
96
- expect(x.remarks[0]).to eq("entity scope - entity derived attribute")
97
- expect(x.remarks[1]).to eq("schema scope - entity derived attribute")
98
- expect(x.remarks[2]).to eq("universal scope - entity derived attribute")
99
- end
100
-
101
- schema.entities.first.attributes.find{|x| x.kind == Expressir::Model::Attribute::INVERSE}.tap do |x|
102
- expect(x).to be_instance_of(Expressir::Model::Attribute)
103
- expect(x.kind).to eq(Expressir::Model::Attribute::INVERSE)
104
- expect(x.remarks).to be_instance_of(Array)
105
- expect(x.remarks.count).to eq(3)
106
- expect(x.remarks[0]).to eq("entity scope - entity inverse attribute")
107
- expect(x.remarks[1]).to eq("schema scope - entity inverse attribute")
108
- expect(x.remarks[2]).to eq("universal scope - entity inverse attribute")
109
- end
110
-
111
- schema.entities.first.unique.first.tap do |x|
112
- expect(x).to be_instance_of(Expressir::Model::Unique)
113
- expect(x.remarks).to be_instance_of(Array)
114
- expect(x.remarks.count).to eq(3)
115
- expect(x.remarks[0]).to eq("entity scope - entity unique")
116
- expect(x.remarks[1]).to eq("schema scope - entity unique")
117
- expect(x.remarks[2]).to eq("universal scope - entity unique")
118
- end
119
-
120
- schema.entities.first.where.first.tap do |x|
121
- expect(x).to be_instance_of(Expressir::Model::Where)
122
- expect(x.remarks).to be_instance_of(Array)
123
- expect(x.remarks.count).to eq(6)
124
- expect(x.remarks[0]).to eq("entity scope - entity where")
125
- expect(x.remarks[1]).to eq("entity scope - entity where, with prefix")
126
- expect(x.remarks[2]).to eq("schema scope - entity where")
127
- expect(x.remarks[3]).to eq("schema scope - entity where, with prefix")
128
- expect(x.remarks[4]).to eq("universal scope - entity where")
129
- expect(x.remarks[5]).to eq("universal scope - entity where, with prefix")
130
- end
131
-
132
- schema.entities.first.informal_propositions.first.tap do |x|
133
- expect(x).to be_instance_of(Expressir::Model::InformalProposition)
134
- expect(x.remarks).to be_instance_of(Array)
135
- expect(x.remarks.count).to eq(6)
136
- expect(x.remarks[0]).to eq("entity scope - entity informal proposition")
137
- expect(x.remarks[1]).to eq("entity scope - entity informal proposition, with prefix")
138
- expect(x.remarks[2]).to eq("schema scope - entity informal proposition")
139
- expect(x.remarks[3]).to eq("schema scope - entity informal proposition, with prefix")
140
- expect(x.remarks[4]).to eq("universal scope - entity informal proposition")
141
- expect(x.remarks[5]).to eq("universal scope - entity informal proposition, with prefix")
142
- end
143
-
144
- schema.subtype_constraints.first.tap do |x|
145
- expect(x).to be_instance_of(Expressir::Model::SubtypeConstraint)
146
- expect(x.remarks).to be_instance_of(Array)
147
- expect(x.remarks.count).to eq(2)
148
- expect(x.remarks[0]).to eq("schema scope - subtype constraint")
149
- expect(x.remarks[1]).to eq("universal scope - subtype constraint")
150
- end
151
-
152
- schema.functions.first.tap do |x|
153
- expect(x).to be_instance_of(Expressir::Model::Function)
154
- expect(x.remarks).to be_instance_of(Array)
155
- expect(x.remarks.count).to eq(2)
156
- expect(x.remarks[0]).to eq("schema scope - function")
157
- expect(x.remarks[1]).to eq("universal scope - function")
158
- end
159
-
160
- schema.functions.first.parameters.first.tap do |x|
161
- expect(x).to be_instance_of(Expressir::Model::Parameter)
162
- expect(x.remarks).to be_instance_of(Array)
163
- expect(x.remarks.count).to eq(3)
164
- expect(x.remarks[0]).to eq("function scope - function parameter")
165
- expect(x.remarks[1]).to eq("schema scope - function parameter")
166
- expect(x.remarks[2]).to eq("universal scope - function parameter")
167
- end
168
-
169
- schema.functions.first.types.first.tap do |x|
170
- expect(x).to be_instance_of(Expressir::Model::Type)
171
- expect(x.remarks).to be_instance_of(Array)
172
- expect(x.remarks.count).to eq(3)
173
- expect(x.remarks[0]).to eq("function scope - function type")
174
- expect(x.remarks[1]).to eq("schema scope - function type")
175
- expect(x.remarks[2]).to eq("universal scope - function type")
176
-
177
- expect(x.type).to be_instance_of(Expressir::Model::Types::Enumeration)
178
- x.type.items.first.tap do |x|
179
- expect(x).to be_instance_of(Expressir::Model::EnumerationItem)
180
- expect(x.remarks).to be_instance_of(Array)
181
- expect(x.remarks.count).to eq(6)
182
- expect(x.remarks[0]).to eq("function scope - function enumeration item")
183
- expect(x.remarks[1]).to eq("function scope - function enumeration item, on the same level as the type")
184
- expect(x.remarks[2]).to eq("schema scope - function enumeration item")
185
- expect(x.remarks[3]).to eq("schema scope - function enumeration item, on the same level as the type")
186
- expect(x.remarks[4]).to eq("universal scope - function enumeration item")
187
- expect(x.remarks[5]).to eq("universal scope - function enumeration item, on the same level as the type")
188
- end
189
- end
190
-
191
- schema.functions.first.constants.first.tap do |x|
192
- expect(x).to be_instance_of(Expressir::Model::Constant)
193
- expect(x.remarks).to be_instance_of(Array)
194
- expect(x.remarks.count).to eq(3)
195
- expect(x.remarks[0]).to eq("function scope - function constant")
196
- expect(x.remarks[1]).to eq("schema scope - function constant")
197
- expect(x.remarks[2]).to eq("universal scope - function constant")
198
- end
199
-
200
- schema.functions.first.variables.first.tap do |x|
201
- expect(x).to be_instance_of(Expressir::Model::Variable)
202
- expect(x.remarks).to be_instance_of(Array)
203
- expect(x.remarks.count).to eq(3)
204
- expect(x.remarks[0]).to eq("function scope - function variable")
205
- expect(x.remarks[1]).to eq("schema scope - function variable")
206
- expect(x.remarks[2]).to eq("universal scope - function variable")
207
- end
208
-
209
- schema.functions.first.statements[0].tap do |x|
210
- expect(x).to be_instance_of(Expressir::Model::Statements::Alias)
211
- expect(x.remarks).to be_instance_of(Array)
212
- expect(x.remarks.count).to eq(1)
213
- expect(x.remarks[0]).to eq("function alias scope - function alias")
214
- end
215
-
216
- schema.functions.first.statements[1].tap do |x|
217
- expect(x).to be_instance_of(Expressir::Model::Statements::Repeat)
218
- expect(x.remarks).to be_instance_of(Array)
219
- expect(x.remarks.count).to eq(1)
220
- expect(x.remarks[0]).to eq("function repeat scope - function repeat")
221
- end
222
-
223
- schema.functions.first.statements[2].tap do |x|
224
- expect(x).to be_instance_of(Expressir::Model::Statements::Assignment)
225
- expect(x.expression).to be_instance_of(Expressir::Model::Expressions::QueryExpression)
226
- expect(x.expression.remarks).to be_instance_of(Array)
227
- expect(x.expression.remarks.count).to eq(1)
228
- expect(x.expression.remarks[0]).to eq("function query scope - function query")
229
- end
230
-
231
- schema.procedures.first.tap do |x|
232
- expect(x).to be_instance_of(Expressir::Model::Procedure)
233
- expect(x.remarks).to be_instance_of(Array)
234
- expect(x.remarks.count).to eq(2)
235
- expect(x.remarks[0]).to eq("schema scope - procedure")
236
- expect(x.remarks[1]).to eq("universal scope - procedure")
237
- end
238
-
239
- schema.procedures.first.parameters.first.tap do |x|
240
- expect(x).to be_instance_of(Expressir::Model::Parameter)
241
- expect(x.remarks).to be_instance_of(Array)
242
- expect(x.remarks.count).to eq(3)
243
- expect(x.remarks[0]).to eq("procedure scope - procedure parameter")
244
- expect(x.remarks[1]).to eq("schema scope - procedure parameter")
245
- expect(x.remarks[2]).to eq("universal scope - procedure parameter")
246
- end
247
-
248
- schema.procedures.first.types.first.tap do |x|
249
- expect(x).to be_instance_of(Expressir::Model::Type)
250
- expect(x.remarks).to be_instance_of(Array)
251
- expect(x.remarks.count).to eq(3)
252
- expect(x.remarks[0]).to eq("procedure scope - procedure type")
253
- expect(x.remarks[1]).to eq("schema scope - procedure type")
254
- expect(x.remarks[2]).to eq("universal scope - procedure type")
255
-
256
- expect(x.type).to be_instance_of(Expressir::Model::Types::Enumeration)
257
- x.type.items.first.tap do |x|
258
- expect(x).to be_instance_of(Expressir::Model::EnumerationItem)
259
- expect(x.remarks).to be_instance_of(Array)
260
- expect(x.remarks.count).to eq(6)
261
- expect(x.remarks[0]).to eq("procedure scope - procedure enumeration item")
262
- expect(x.remarks[1]).to eq("procedure scope - procedure enumeration item, on the same level as the type")
263
- expect(x.remarks[2]).to eq("schema scope - procedure enumeration item")
264
- expect(x.remarks[3]).to eq("schema scope - procedure enumeration item, on the same level as the type")
265
- expect(x.remarks[4]).to eq("universal scope - procedure enumeration item")
266
- expect(x.remarks[5]).to eq("universal scope - procedure enumeration item, on the same level as the type")
267
- end
268
- end
269
-
270
- schema.procedures.first.constants.first.tap do |x|
271
- expect(x).to be_instance_of(Expressir::Model::Constant)
272
- expect(x.remarks).to be_instance_of(Array)
273
- expect(x.remarks.count).to eq(3)
274
- expect(x.remarks[0]).to eq("procedure scope - procedure constant")
275
- expect(x.remarks[1]).to eq("schema scope - procedure constant")
276
- expect(x.remarks[2]).to eq("universal scope - procedure constant")
277
- end
278
-
279
- schema.procedures.first.variables.first.tap do |x|
280
- expect(x).to be_instance_of(Expressir::Model::Variable)
281
- expect(x.remarks).to be_instance_of(Array)
282
- expect(x.remarks.count).to eq(3)
283
- expect(x.remarks[0]).to eq("procedure scope - procedure variable")
284
- expect(x.remarks[1]).to eq("schema scope - procedure variable")
285
- expect(x.remarks[2]).to eq("universal scope - procedure variable")
286
- end
287
-
288
- schema.procedures.first.statements[0].tap do |x|
289
- expect(x).to be_instance_of(Expressir::Model::Statements::Alias)
290
- expect(x.remarks).to be_instance_of(Array)
291
- expect(x.remarks.count).to eq(1)
292
- expect(x.remarks[0]).to eq("procedure alias scope - procedure alias")
293
- end
294
-
295
- schema.procedures.first.statements[1].tap do |x|
296
- expect(x).to be_instance_of(Expressir::Model::Statements::Repeat)
297
- expect(x.remarks).to be_instance_of(Array)
298
- expect(x.remarks.count).to eq(1)
299
- expect(x.remarks[0]).to eq("procedure repeat scope - procedure repeat")
300
- end
301
-
302
- schema.procedures.first.statements[2].tap do |x|
303
- expect(x).to be_instance_of(Expressir::Model::Statements::Assignment)
304
- expect(x.expression).to be_instance_of(Expressir::Model::Expressions::QueryExpression)
305
- expect(x.expression.remarks).to be_instance_of(Array)
306
- expect(x.expression.remarks.count).to eq(1)
307
- expect(x.expression.remarks[0]).to eq("procedure query scope - procedure query")
308
- end
309
-
310
- schema.rules.first.tap do |x|
311
- expect(x).to be_instance_of(Expressir::Model::Rule)
312
- expect(x.remarks).to be_instance_of(Array)
313
- expect(x.remarks.count).to eq(2)
314
- expect(x.remarks[0]).to eq("schema scope - rule")
315
- expect(x.remarks[1]).to eq("universal scope - rule")
316
- end
317
-
318
- schema.rules.first.types.first.tap do |x|
319
- expect(x).to be_instance_of(Expressir::Model::Type)
320
- expect(x.remarks).to be_instance_of(Array)
321
- expect(x.remarks.count).to eq(3)
322
- expect(x.remarks[0]).to eq("rule scope - rule type")
323
- expect(x.remarks[1]).to eq("schema scope - rule type")
324
- expect(x.remarks[2]).to eq("universal scope - rule type")
325
-
326
- expect(x.type).to be_instance_of(Expressir::Model::Types::Enumeration)
327
- x.type.items.first.tap do |x|
328
- expect(x).to be_instance_of(Expressir::Model::EnumerationItem)
329
- expect(x.remarks).to be_instance_of(Array)
330
- expect(x.remarks.count).to eq(6)
331
- expect(x.remarks[0]).to eq("rule scope - rule enumeration item")
332
- expect(x.remarks[1]).to eq("rule scope - rule enumeration item, on the same level as the type")
333
- expect(x.remarks[2]).to eq("schema scope - rule enumeration item")
334
- expect(x.remarks[3]).to eq("schema scope - rule enumeration item, on the same level as the type")
335
- expect(x.remarks[4]).to eq("universal scope - rule enumeration item")
336
- expect(x.remarks[5]).to eq("universal scope - rule enumeration item, on the same level as the type")
337
- end
338
- end
339
-
340
- schema.rules.first.constants.first.tap do |x|
341
- expect(x).to be_instance_of(Expressir::Model::Constant)
342
- expect(x.remarks).to be_instance_of(Array)
343
- expect(x.remarks.count).to eq(3)
344
- expect(x.remarks[0]).to eq("rule scope - rule constant")
345
- expect(x.remarks[1]).to eq("schema scope - rule constant")
346
- expect(x.remarks[2]).to eq("universal scope - rule constant")
347
- end
348
-
349
- schema.rules.first.variables.first.tap do |x|
350
- expect(x).to be_instance_of(Expressir::Model::Variable)
351
- expect(x.remarks).to be_instance_of(Array)
352
- expect(x.remarks.count).to eq(3)
353
- expect(x.remarks[0]).to eq("rule scope - rule variable")
354
- expect(x.remarks[1]).to eq("schema scope - rule variable")
355
- expect(x.remarks[2]).to eq("universal scope - rule variable")
356
- end
357
-
358
- schema.rules.first.statements[0].tap do |x|
359
- expect(x).to be_instance_of(Expressir::Model::Statements::Alias)
360
- expect(x.remarks).to be_instance_of(Array)
361
- expect(x.remarks.count).to eq(1)
362
- expect(x.remarks[0]).to eq("rule alias scope - rule alias")
363
- end
364
-
365
- schema.rules.first.statements[1].tap do |x|
366
- expect(x).to be_instance_of(Expressir::Model::Statements::Repeat)
367
- expect(x.remarks).to be_instance_of(Array)
368
- expect(x.remarks.count).to eq(1)
369
- expect(x.remarks[0]).to eq("rule repeat scope - rule repeat")
370
- end
371
-
372
- schema.rules.first.statements[2].tap do |x|
373
- expect(x).to be_instance_of(Expressir::Model::Statements::Assignment)
374
- expect(x.expression).to be_instance_of(Expressir::Model::Expressions::QueryExpression)
375
- expect(x.expression.remarks).to be_instance_of(Array)
376
- expect(x.expression.remarks.count).to eq(1)
377
- expect(x.expression.remarks[0]).to eq("rule query scope - rule query")
378
- end
379
-
380
- schema.rules.first.where.first.tap do |x|
381
- expect(x).to be_instance_of(Expressir::Model::Where)
382
- expect(x.remarks).to be_instance_of(Array)
383
- expect(x.remarks.count).to eq(6)
384
- expect(x.remarks[0]).to eq("rule scope - rule where")
385
- expect(x.remarks[1]).to eq("rule scope - rule where, with prefix")
386
- expect(x.remarks[2]).to eq("schema scope - rule where")
387
- expect(x.remarks[3]).to eq("schema scope - rule where, with prefix")
388
- expect(x.remarks[4]).to eq("universal scope - rule where")
389
- expect(x.remarks[5]).to eq("universal scope - rule where, with prefix")
390
- end
391
-
392
- schema.rules.first.informal_propositions.first.tap do |x|
393
- expect(x).to be_instance_of(Expressir::Model::InformalProposition)
394
- expect(x.remarks).to be_instance_of(Array)
395
- expect(x.remarks.count).to eq(6)
396
- expect(x.remarks[0]).to eq("rule scope - rule informal proposition")
397
- expect(x.remarks[1]).to eq("rule scope - rule informal proposition, with prefix")
398
- expect(x.remarks[2]).to eq("schema scope - rule informal proposition")
399
- expect(x.remarks[3]).to eq("schema scope - rule informal proposition, with prefix")
400
- expect(x.remarks[4]).to eq("universal scope - rule informal proposition")
401
- expect(x.remarks[5]).to eq("universal scope - rule informal proposition, with prefix")
402
- end
403
- end
404
- end
405
-
406
- def sample_file
407
- @sample_file ||= Expressir.root_path.join(
408
- "original", "examples", "syntax", "remark.exp"
409
- )
410
- end
411
- end