expressir 0.2.24-x64-mingw32 → 0.2.25-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.
- checksums.yaml +4 -4
- data/lib/expressir/express_exp/2.4/express_parser.so +0 -0
- data/lib/expressir/express_exp/2.5/express_parser.so +0 -0
- data/lib/expressir/express_exp/2.6/express_parser.so +0 -0
- data/lib/expressir/express_exp/2.7/express_parser.so +0 -0
- data/lib/expressir/express_exp/3.0/express_parser.so +0 -0
- data/lib/expressir/express_exp/formatter.rb +2 -2
- data/lib/expressir/express_exp/hyperlink_formatter.rb +10 -15
- data/lib/expressir/express_exp/model_visitor.rb +23 -0
- data/lib/expressir/express_exp/parser.rb +14 -3
- data/lib/expressir/express_exp/resolve_references_model_visitor.rb +33 -0
- data/lib/expressir/model/expressions/simple_reference.rb +4 -0
- data/lib/expressir/model/interfaced_item.rb +0 -4
- data/lib/expressir/model/model_element.rb +5 -2
- data/lib/expressir/version.rb +1 -1
- data/original/examples/syntax/multiple.yaml +14 -0
- data/original/examples/syntax/remark.yaml +14 -0
- data/original/examples/syntax/single.exp +1 -0
- data/original/examples/syntax/single.yaml +6 -0
- data/original/examples/syntax/single_formatted.exp +4 -0
- data/original/examples/syntax/single_formatted.yaml +14 -0
- data/original/examples/syntax/syntax.yaml +81 -0
- data/original/examples/syntax/syntax_hyperlink_formatted.exp +902 -0
- data/spec/expressir/express_exp/formatter_spec.rb +16 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1f532a6451b6df158c2a71e9c123dc92c31d8a8ed2f6ceb95c5cb83e89170318
|
4
|
+
data.tar.gz: 128d2a70b19542eaa75ec40915d5d5e180fb8b368df4aed1dbdf0a05296c02dc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b9cd4dd5b20d5c2d92c9991aa0517ae57e7246bf1e1b6499d7564bf6ef4b403a27b8d5ff9dbd5a7d050eee0f4c7a65cf6c083e5470eb393b3b47b9582a83eefb
|
7
|
+
data.tar.gz: d88eec7a54a81bd6c652acb08160ed80a4b8cecd9f3c9ea7e036b714cf222e96cb20c01d1453cd5df17e75ffeafdd6d64479834c51572acd509effbe7a6680ed
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -1502,7 +1502,7 @@ module Expressir
|
|
1502
1502
|
[
|
1503
1503
|
'(*',
|
1504
1504
|
'"',
|
1505
|
-
node.path,
|
1505
|
+
node.path || node.id,
|
1506
1506
|
'"',
|
1507
1507
|
].join(''),
|
1508
1508
|
remark,
|
@@ -1512,7 +1512,7 @@ module Expressir
|
|
1512
1512
|
[
|
1513
1513
|
'--',
|
1514
1514
|
'"',
|
1515
|
-
node.path,
|
1515
|
+
node.path || node.id,
|
1516
1516
|
'"',
|
1517
1517
|
' ',
|
1518
1518
|
remark
|
@@ -2,25 +2,20 @@ module Expressir
|
|
2
2
|
module ExpressExp
|
3
3
|
module HyperlinkFormatter
|
4
4
|
def format_expressions_simple_reference(node)
|
5
|
-
return node.id
|
5
|
+
return node.id unless node.base_path
|
6
6
|
|
7
|
-
#
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
node.find(node.id)
|
7
|
+
# find closest node with path
|
8
|
+
current_node = node
|
9
|
+
while !current_node.path
|
10
|
+
current_node = current_node.parent
|
12
11
|
end
|
13
|
-
return node.id unless target_node
|
14
12
|
|
15
|
-
# skip
|
16
|
-
|
13
|
+
# skip if this reference and target node are in the same node with path
|
14
|
+
node_base_path_parts = node.base_path.split(".")
|
15
|
+
current_node_path_parts = current_node.path.split(".")
|
16
|
+
return node.id if node_base_path_parts[0..1] == current_node_path_parts[0..1]
|
17
17
|
|
18
|
-
|
19
|
-
node_path_parts = node.path.split(".")
|
20
|
-
target_node_path_parts = target_node.path.split(".")
|
21
|
-
return node.id if node_path_parts[0..1] == target_node_path_parts[0..1]
|
22
|
-
|
23
|
-
"{{{<<express:#{target_node.path},#{node.id}>>}}}"
|
18
|
+
"{{{<<express:#{node.base_path},#{node.id}>>}}}"
|
24
19
|
end
|
25
20
|
end
|
26
21
|
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require "expressir/model"
|
2
|
+
|
3
|
+
module Expressir
|
4
|
+
module ExpressExp
|
5
|
+
class ModelVisitor
|
6
|
+
def visit(node)
|
7
|
+
node.class.model_attrs.each do |variable|
|
8
|
+
value = node.send(variable)
|
9
|
+
|
10
|
+
if value.is_a? Array
|
11
|
+
value.each do |value|
|
12
|
+
if value.is_a? Model::ModelElement
|
13
|
+
visit(value)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
elsif value.is_a? Model::ModelElement
|
17
|
+
visit(value)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -5,6 +5,7 @@ rescue LoadError
|
|
5
5
|
require_relative "express_parser"
|
6
6
|
end
|
7
7
|
require 'expressir/express_exp/visitor'
|
8
|
+
require 'expressir/express_exp/resolve_references_model_visitor'
|
8
9
|
|
9
10
|
=begin
|
10
11
|
char_stream = Antlr4::Runtime::CharStreams.from_string(input, 'String')
|
@@ -25,6 +26,8 @@ module Expressir
|
|
25
26
|
module ExpressExp
|
26
27
|
class Parser
|
27
28
|
def self.from_file(file, options = {})
|
29
|
+
skip_references = options[:skip_references]
|
30
|
+
|
28
31
|
input = File.read(file)
|
29
32
|
|
30
33
|
parser = ::ExpressParser::Parser.parse(input)
|
@@ -38,13 +41,20 @@ module Expressir
|
|
38
41
|
schema.file = file.to_s
|
39
42
|
end
|
40
43
|
|
44
|
+
unless skip_references
|
45
|
+
resolve_references_model_visitor = ResolveReferencesModelVisitor.new
|
46
|
+
resolve_references_model_visitor.visit(repository)
|
47
|
+
end
|
48
|
+
|
41
49
|
repository
|
42
50
|
end
|
43
51
|
|
44
52
|
def self.from_files(files, options = {})
|
53
|
+
skip_references = options[:skip_references]
|
54
|
+
|
45
55
|
schemas = files.each_with_index.map do |file, i|
|
46
56
|
# start = Time.now
|
47
|
-
repository = self.from_file(file, options)
|
57
|
+
repository = self.from_file(file, options.merge(skip_references: true))
|
48
58
|
# STDERR.puts "#{i+1}/#{files.length} #{file} #{Time.now - start}"
|
49
59
|
repository.schemas
|
50
60
|
end.flatten
|
@@ -53,8 +63,9 @@ module Expressir
|
|
53
63
|
schemas: schemas
|
54
64
|
})
|
55
65
|
|
56
|
-
|
57
|
-
|
66
|
+
unless skip_references
|
67
|
+
resolve_references_model_visitor = ResolveReferencesModelVisitor.new
|
68
|
+
resolve_references_model_visitor.visit(repository)
|
58
69
|
end
|
59
70
|
|
60
71
|
repository
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require "expressir/express_exp/model_visitor"
|
2
|
+
require "expressir/model"
|
3
|
+
|
4
|
+
module Expressir
|
5
|
+
module ExpressExp
|
6
|
+
class ResolveReferencesModelVisitor < ModelVisitor
|
7
|
+
def visit(node)
|
8
|
+
if node.is_a? Model::Expressions::SimpleReference
|
9
|
+
visit_expressions_simple_reference(node)
|
10
|
+
end
|
11
|
+
|
12
|
+
super
|
13
|
+
end
|
14
|
+
|
15
|
+
def visit_expressions_simple_reference(node)
|
16
|
+
return if node.parent.is_a? Model::Expressions::AttributeReference
|
17
|
+
|
18
|
+
if node.parent.is_a? Model::InterfaceItem
|
19
|
+
base_item = node.find("#{node.parent.parent.schema.id}.#{node.parent.ref.id}")
|
20
|
+
else
|
21
|
+
base_item = node.find(node.id)
|
22
|
+
end
|
23
|
+
return unless base_item
|
24
|
+
|
25
|
+
if base_item.is_a? Model::InterfacedItem
|
26
|
+
base_item = base_item.base_item
|
27
|
+
end
|
28
|
+
|
29
|
+
node.base_path = base_item.path
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -14,12 +14,13 @@ module Expressir
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def path
|
17
|
-
|
17
|
+
# this creates an implicit scope
|
18
|
+
return if is_a? Statements::Alias or is_a? Statements::Repeat or is_a? Expressions::QueryExpression
|
18
19
|
|
19
20
|
current_node = self
|
20
21
|
path_parts = []
|
21
22
|
loop do
|
22
|
-
if current_node.class.method_defined? :id
|
23
|
+
if current_node.class.method_defined? :id and !(current_node.is_a? Expressions::SimpleReference)
|
23
24
|
path_parts << current_node.id
|
24
25
|
end
|
25
26
|
|
@@ -27,6 +28,8 @@ module Expressir
|
|
27
28
|
break unless current_node
|
28
29
|
end
|
29
30
|
|
31
|
+
return if path_parts.empty?
|
32
|
+
|
30
33
|
path_parts.reverse.join(".")
|
31
34
|
end
|
32
35
|
|
data/lib/expressir/version.rb
CHANGED
@@ -10,26 +10,31 @@ schemas:
|
|
10
10
|
schema:
|
11
11
|
_class: Expressir::Model::Expressions::SimpleReference
|
12
12
|
id: multiple_schema2
|
13
|
+
base_path: multiple_schema2
|
13
14
|
- _class: Expressir::Model::Interface
|
14
15
|
kind: :REFERENCE
|
15
16
|
schema:
|
16
17
|
_class: Expressir::Model::Expressions::SimpleReference
|
17
18
|
id: multiple_schema3
|
19
|
+
base_path: multiple_schema3
|
18
20
|
items:
|
19
21
|
- _class: Expressir::Model::InterfaceItem
|
20
22
|
ref:
|
21
23
|
_class: Expressir::Model::Expressions::SimpleReference
|
22
24
|
id: attribute_entity3
|
25
|
+
base_path: multiple_schema3.attribute_entity3
|
23
26
|
- _class: Expressir::Model::Interface
|
24
27
|
kind: :REFERENCE
|
25
28
|
schema:
|
26
29
|
_class: Expressir::Model::Expressions::SimpleReference
|
27
30
|
id: multiple_schema4
|
31
|
+
base_path: multiple_schema4
|
28
32
|
items:
|
29
33
|
- _class: Expressir::Model::InterfaceItem
|
30
34
|
ref:
|
31
35
|
_class: Expressir::Model::Expressions::SimpleReference
|
32
36
|
id: attribute_entity
|
37
|
+
base_path: multiple_schema4.attribute_entity
|
33
38
|
id: attribute_entity4
|
34
39
|
entities:
|
35
40
|
- _class: Expressir::Model::Entity
|
@@ -49,11 +54,13 @@ schemas:
|
|
49
54
|
subtype_of:
|
50
55
|
- _class: Expressir::Model::Expressions::SimpleReference
|
51
56
|
id: empty_entity
|
57
|
+
base_path: multiple_schema1.empty_entity
|
52
58
|
- _class: Expressir::Model::Entity
|
53
59
|
id: subtype_attribute_entity
|
54
60
|
subtype_of:
|
55
61
|
- _class: Expressir::Model::Expressions::SimpleReference
|
56
62
|
id: attribute_entity
|
63
|
+
base_path: multiple_schema1.attribute_entity
|
57
64
|
attributes:
|
58
65
|
- _class: Expressir::Model::Attribute
|
59
66
|
kind: :EXPLICIT
|
@@ -67,6 +74,7 @@ schemas:
|
|
67
74
|
entity:
|
68
75
|
_class: Expressir::Model::Expressions::SimpleReference
|
69
76
|
id: attribute_entity
|
77
|
+
base_path: multiple_schema1.attribute_entity
|
70
78
|
attribute:
|
71
79
|
_class: Expressir::Model::Expressions::SimpleReference
|
72
80
|
id: test
|
@@ -77,6 +85,7 @@ schemas:
|
|
77
85
|
subtype_of:
|
78
86
|
- _class: Expressir::Model::Expressions::SimpleReference
|
79
87
|
id: attribute_entity2
|
88
|
+
base_path: multiple_schema2.attribute_entity2
|
80
89
|
attributes:
|
81
90
|
- _class: Expressir::Model::Attribute
|
82
91
|
kind: :EXPLICIT
|
@@ -90,6 +99,7 @@ schemas:
|
|
90
99
|
entity:
|
91
100
|
_class: Expressir::Model::Expressions::SimpleReference
|
92
101
|
id: attribute_entity2
|
102
|
+
base_path: multiple_schema2.attribute_entity2
|
93
103
|
attribute:
|
94
104
|
_class: Expressir::Model::Expressions::SimpleReference
|
95
105
|
id: test
|
@@ -100,6 +110,7 @@ schemas:
|
|
100
110
|
subtype_of:
|
101
111
|
- _class: Expressir::Model::Expressions::SimpleReference
|
102
112
|
id: attribute_entity3
|
113
|
+
base_path: multiple_schema3.attribute_entity3
|
103
114
|
attributes:
|
104
115
|
- _class: Expressir::Model::Attribute
|
105
116
|
kind: :EXPLICIT
|
@@ -113,6 +124,7 @@ schemas:
|
|
113
124
|
entity:
|
114
125
|
_class: Expressir::Model::Expressions::SimpleReference
|
115
126
|
id: attribute_entity3
|
127
|
+
base_path: multiple_schema3.attribute_entity3
|
116
128
|
attribute:
|
117
129
|
_class: Expressir::Model::Expressions::SimpleReference
|
118
130
|
id: test
|
@@ -123,6 +135,7 @@ schemas:
|
|
123
135
|
subtype_of:
|
124
136
|
- _class: Expressir::Model::Expressions::SimpleReference
|
125
137
|
id: attribute_entity4
|
138
|
+
base_path: multiple_schema4.attribute_entity
|
126
139
|
attributes:
|
127
140
|
- _class: Expressir::Model::Attribute
|
128
141
|
kind: :EXPLICIT
|
@@ -136,6 +149,7 @@ schemas:
|
|
136
149
|
entity:
|
137
150
|
_class: Expressir::Model::Expressions::SimpleReference
|
138
151
|
id: attribute_entity4
|
152
|
+
base_path: multiple_schema4.attribute_entity
|
139
153
|
attribute:
|
140
154
|
_class: Expressir::Model::Expressions::SimpleReference
|
141
155
|
id: test
|
@@ -107,9 +107,11 @@ schemas:
|
|
107
107
|
type:
|
108
108
|
_class: Expressir::Model::Expressions::SimpleReference
|
109
109
|
id: remark_entity
|
110
|
+
base_path: remark_schema.remark_entity
|
110
111
|
expression:
|
111
112
|
_class: Expressir::Model::Expressions::SimpleReference
|
112
113
|
id: remark_attribute
|
114
|
+
base_path: remark_schema.remark_entity.remark_attribute
|
113
115
|
unique:
|
114
116
|
- _class: Expressir::Model::Unique
|
115
117
|
id: UR1
|
@@ -120,6 +122,7 @@ schemas:
|
|
120
122
|
attributes:
|
121
123
|
- _class: Expressir::Model::Expressions::SimpleReference
|
122
124
|
id: remark_attribute
|
125
|
+
base_path: remark_schema.remark_entity.remark_attribute
|
123
126
|
where:
|
124
127
|
- _class: Expressir::Model::Where
|
125
128
|
id: WR1
|
@@ -152,6 +155,7 @@ schemas:
|
|
152
155
|
applies_to:
|
153
156
|
_class: Expressir::Model::Expressions::SimpleReference
|
154
157
|
id: remark_entity
|
158
|
+
base_path: remark_schema.remark_entity
|
155
159
|
functions:
|
156
160
|
- _class: Expressir::Model::Function
|
157
161
|
id: remark_function
|
@@ -218,6 +222,7 @@ schemas:
|
|
218
222
|
expression:
|
219
223
|
_class: Expressir::Model::Expressions::SimpleReference
|
220
224
|
id: remark_variable
|
225
|
+
base_path: remark_schema.remark_function.remark_variable
|
221
226
|
statements:
|
222
227
|
- _class: Expressir::Model::Statements::Null
|
223
228
|
- _class: Expressir::Model::Statements::Repeat
|
@@ -236,6 +241,7 @@ schemas:
|
|
236
241
|
ref:
|
237
242
|
_class: Expressir::Model::Expressions::SimpleReference
|
238
243
|
id: remark_variable
|
244
|
+
base_path: remark_schema.remark_function.remark_variable
|
239
245
|
expression:
|
240
246
|
_class: Expressir::Model::Expressions::QueryExpression
|
241
247
|
id: remark_query
|
@@ -244,6 +250,7 @@ schemas:
|
|
244
250
|
aggregate_source:
|
245
251
|
_class: Expressir::Model::Expressions::SimpleReference
|
246
252
|
id: remark_variable
|
253
|
+
base_path: remark_schema.remark_function.remark_variable
|
247
254
|
expression:
|
248
255
|
_class: Expressir::Model::Literals::Logical
|
249
256
|
value: :TRUE
|
@@ -256,6 +263,7 @@ schemas:
|
|
256
263
|
applies_to:
|
257
264
|
- _class: Expressir::Model::Expressions::SimpleReference
|
258
265
|
id: remark_entity
|
266
|
+
base_path: remark_schema.remark_entity
|
259
267
|
types:
|
260
268
|
- _class: Expressir::Model::Type
|
261
269
|
id: remark_type
|
@@ -304,6 +312,7 @@ schemas:
|
|
304
312
|
expression:
|
305
313
|
_class: Expressir::Model::Expressions::SimpleReference
|
306
314
|
id: remark_variable
|
315
|
+
base_path: remark_schema.remark_rule.remark_variable
|
307
316
|
statements:
|
308
317
|
- _class: Expressir::Model::Statements::Null
|
309
318
|
- _class: Expressir::Model::Statements::Repeat
|
@@ -322,6 +331,7 @@ schemas:
|
|
322
331
|
ref:
|
323
332
|
_class: Expressir::Model::Expressions::SimpleReference
|
324
333
|
id: remark_variable
|
334
|
+
base_path: remark_schema.remark_rule.remark_variable
|
325
335
|
expression:
|
326
336
|
_class: Expressir::Model::Expressions::QueryExpression
|
327
337
|
id: remark_query
|
@@ -330,6 +340,7 @@ schemas:
|
|
330
340
|
aggregate_source:
|
331
341
|
_class: Expressir::Model::Expressions::SimpleReference
|
332
342
|
id: remark_variable
|
343
|
+
base_path: remark_schema.remark_rule.remark_variable
|
333
344
|
expression:
|
334
345
|
_class: Expressir::Model::Literals::Logical
|
335
346
|
value: :TRUE
|
@@ -421,6 +432,7 @@ schemas:
|
|
421
432
|
expression:
|
422
433
|
_class: Expressir::Model::Expressions::SimpleReference
|
423
434
|
id: remark_variable
|
435
|
+
base_path: remark_schema.remark_procedure.remark_variable
|
424
436
|
statements:
|
425
437
|
- _class: Expressir::Model::Statements::Null
|
426
438
|
- _class: Expressir::Model::Statements::Repeat
|
@@ -439,6 +451,7 @@ schemas:
|
|
439
451
|
ref:
|
440
452
|
_class: Expressir::Model::Expressions::SimpleReference
|
441
453
|
id: remark_variable
|
454
|
+
base_path: remark_schema.remark_procedure.remark_variable
|
442
455
|
expression:
|
443
456
|
_class: Expressir::Model::Expressions::QueryExpression
|
444
457
|
id: remark_query
|
@@ -447,6 +460,7 @@ schemas:
|
|
447
460
|
aggregate_source:
|
448
461
|
_class: Expressir::Model::Expressions::SimpleReference
|
449
462
|
id: remark_variable
|
463
|
+
base_path: remark_schema.remark_procedure.remark_variable
|
450
464
|
expression:
|
451
465
|
_class: Expressir::Model::Literals::Logical
|
452
466
|
value: :TRUE
|