expressir 0.2.21 → 0.2.24
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/release.yml +22 -6
- data/lib/expressir/express_exp/cache.rb +1 -1
- data/lib/expressir/express_exp/visitor.rb +19 -18
- data/lib/expressir/model.rb +1 -1
- data/lib/expressir/model/attribute.rb +12 -5
- data/lib/expressir/model/cache.rb +2 -2
- data/lib/expressir/model/constant.rb +9 -2
- data/lib/expressir/model/entity.rb +10 -8
- data/lib/expressir/model/enumeration_item.rb +7 -0
- data/lib/expressir/model/expressions/aggregate_initializer.rb +1 -1
- data/lib/expressir/model/expressions/aggregate_item.rb +2 -2
- data/lib/expressir/model/expressions/attribute_reference.rb +2 -2
- data/lib/expressir/model/expressions/binary_expression.rb +3 -3
- data/lib/expressir/model/expressions/call.rb +2 -2
- data/lib/expressir/model/expressions/entity_constructor.rb +2 -2
- data/lib/expressir/model/expressions/group_reference.rb +2 -2
- data/lib/expressir/model/expressions/index_reference.rb +3 -3
- data/lib/expressir/model/expressions/interval.rb +5 -5
- data/lib/expressir/model/expressions/query_expression.rb +5 -3
- data/lib/expressir/model/expressions/simple_reference.rb +1 -1
- data/lib/expressir/model/expressions/unary_expression.rb +2 -2
- data/lib/expressir/model/function.rb +13 -11
- data/lib/expressir/model/identifier.rb +6 -3
- data/lib/expressir/model/interface.rb +3 -3
- data/lib/expressir/model/interface_item.rb +2 -2
- data/lib/expressir/model/interfaced_item.rb +11 -6
- data/lib/expressir/model/literals/binary.rb +1 -1
- data/lib/expressir/model/literals/integer.rb +1 -1
- data/lib/expressir/model/literals/logical.rb +1 -1
- data/lib/expressir/model/literals/real.rb +1 -1
- data/lib/expressir/model/literals/string.rb +2 -2
- data/lib/expressir/model/model_element.rb +29 -24
- data/lib/expressir/model/parameter.rb +9 -2
- data/lib/expressir/model/procedure.rb +12 -10
- data/lib/expressir/model/{informal_proposition.rb → remark_item.rb} +3 -6
- data/lib/expressir/model/repository.rb +1 -1
- data/lib/expressir/model/rule.rb +14 -12
- data/lib/expressir/model/schema.rb +13 -11
- data/lib/expressir/model/statements/alias.rb +5 -3
- data/lib/expressir/model/statements/assignment.rb +2 -2
- data/lib/expressir/model/statements/call.rb +2 -2
- data/lib/expressir/model/statements/case.rb +3 -3
- data/lib/expressir/model/statements/case_action.rb +2 -2
- data/lib/expressir/model/statements/compound.rb +1 -1
- data/lib/expressir/model/statements/if.rb +3 -3
- data/lib/expressir/model/statements/repeat.rb +9 -7
- data/lib/expressir/model/statements/return.rb +1 -1
- data/lib/expressir/model/subtype_constraint.rb +11 -4
- data/lib/expressir/model/type.rb +6 -4
- data/lib/expressir/model/types/aggregate.rb +8 -1
- data/lib/expressir/model/types/array.rb +5 -5
- data/lib/expressir/model/types/bag.rb +3 -3
- data/lib/expressir/model/types/binary.rb +2 -2
- data/lib/expressir/model/types/enumeration.rb +4 -4
- data/lib/expressir/model/types/generic.rb +7 -0
- data/lib/expressir/model/types/generic_entity.rb +7 -0
- data/lib/expressir/model/types/list.rb +4 -4
- data/lib/expressir/model/types/real.rb +1 -1
- data/lib/expressir/model/types/select.rb +5 -5
- data/lib/expressir/model/types/set.rb +3 -3
- data/lib/expressir/model/types/string.rb +2 -2
- data/lib/expressir/model/unique.rb +8 -1
- data/lib/expressir/model/variable.rb +9 -2
- data/lib/expressir/model/where.rb +8 -1
- data/lib/expressir/version.rb +1 -1
- data/original/examples/syntax/remark.exp +12 -10
- data/original/examples/syntax/remark.yaml +9 -3
- data/original/examples/syntax/remark_formatted.exp +3 -1
- data/spec/expressir/model/model_element_spec.rb +20 -20
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ce50a374ee7552fa79d80e286765681ed1cb808bea2a6833c53e0ddf626ab5bc
|
4
|
+
data.tar.gz: 6856209fcb72eb146ac4408e8f58d4aa45f74ccf54adbe4d7c6fd5653bcacc7b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3a4a7554be0d0348f65ca086a3238104bdd36f13c33e719f0cfb01d28724b3487f764ebd0ebf49b2f59b49112180cce512a05e36442ec90c62828f82cf805a0a
|
7
|
+
data.tar.gz: e871ff00c28957c32823c7b4ff0f3222270d1a7471426dfb335d6077a1c4fbcbb078b3924a2029502c671a54d9fb97740187be85f1cdc64993f3ed2bcacf8d4d
|
@@ -12,8 +12,27 @@ on:
|
|
12
12
|
tags: [ v* ]
|
13
13
|
|
14
14
|
jobs:
|
15
|
+
bump:
|
16
|
+
runs-on: ubuntu-18.04
|
17
|
+
steps:
|
18
|
+
- uses: actions/checkout@v2
|
19
|
+
with:
|
20
|
+
submodules: recursive
|
21
|
+
|
22
|
+
- uses: ruby/setup-ruby@v1
|
23
|
+
with:
|
24
|
+
ruby-version: '2.6'
|
25
|
+
|
26
|
+
- if: ${{ github.event_name == 'workflow_dispatch' }} # unfortunatelly cannot keep this condition on job level
|
27
|
+
run: |
|
28
|
+
git config user.name github-actions
|
29
|
+
git config user.email github-actions@github.com
|
30
|
+
gem install gem-release
|
31
|
+
gem bump --version ${{ github.event.inputs.next_version }} --tag --push
|
32
|
+
|
15
33
|
pack:
|
16
34
|
runs-on: ubuntu-18.04
|
35
|
+
needs: bump
|
17
36
|
strategy:
|
18
37
|
fail-fast: false
|
19
38
|
matrix:
|
@@ -26,13 +45,10 @@ jobs:
|
|
26
45
|
- uses: ruby/setup-ruby@v1
|
27
46
|
with:
|
28
47
|
ruby-version: '2.6'
|
29
|
-
bundler-cache: true
|
48
|
+
# bundler-cache: true important to not use cache because it leads to "cannot find -lrice"
|
49
|
+
# more info https://github.com/lutaml/expressir/runs/2097658383?check_suite_focus=true#step:7:2126
|
30
50
|
|
31
|
-
-
|
32
|
-
run: |
|
33
|
-
git config user.name github-actions
|
34
|
-
git config user.email github-actions@github.com
|
35
|
-
gem bump --version ${{ github.event.inputs.next_version }} --tag --push
|
51
|
+
- run: bundle install --jobs 4 --retry 3
|
36
52
|
|
37
53
|
# build gem WITHOUT pre-built native extension
|
38
54
|
- run: gem build expressir.gemspec
|
@@ -35,7 +35,7 @@ module Expressir
|
|
35
35
|
cache = Model::ModelElement.from_hash(hash, root_path: root_path)
|
36
36
|
|
37
37
|
if cache.version != version
|
38
|
-
raise CacheLoadError.new("Cache version mismatch, cache version is #{cache.version}, Expressir version is #{
|
38
|
+
raise CacheLoadError.new("Cache version mismatch, cache version is #{cache.version}, Expressir version is #{version}")
|
39
39
|
end
|
40
40
|
|
41
41
|
cache.content
|
@@ -107,27 +107,28 @@ module Expressir
|
|
107
107
|
target_node = node.find(path)
|
108
108
|
return target_node if target_node
|
109
109
|
|
110
|
-
# check if path
|
111
|
-
# see https://github.com/lutaml/expressir/issues/
|
110
|
+
# check if path can create implicit remark item
|
111
|
+
# see https://github.com/lutaml/expressir/issues/78
|
112
112
|
rest, _, current_path = path.rpartition(".") # get last path part
|
113
113
|
_, _, current_path = current_path.rpartition(":") # ignore prefix
|
114
|
+
parent_node = node.find(rest)
|
115
|
+
if parent_node and parent_node.class.method_defined? :remark_items
|
116
|
+
remark_item = Model::RemarkItem.new({
|
117
|
+
id: current_path
|
118
|
+
})
|
119
|
+
remark_item.parent = parent_node
|
114
120
|
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
})
|
127
|
-
target_node.informal_propositions << informal_proposition
|
128
|
-
target_node.reset_children_by_id
|
129
|
-
informal_proposition.parent = target_node
|
130
|
-
informal_proposition
|
121
|
+
# check if path can create implicit informal proposition
|
122
|
+
# see https://github.com/lutaml/expressir/issues/50
|
123
|
+
if parent_node.class.method_defined? :informal_propositions and current_path.match(/^IP\d+$/)
|
124
|
+
parent_node.informal_propositions << remark_item
|
125
|
+
else
|
126
|
+
parent_node.remark_items << remark_item
|
127
|
+
end
|
128
|
+
parent_node.reset_children_by_id
|
129
|
+
|
130
|
+
remark_item
|
131
|
+
end
|
131
132
|
end
|
132
133
|
|
133
134
|
def attach_remarks(ctx, node)
|
data/lib/expressir/model.rb
CHANGED
@@ -9,12 +9,12 @@ require 'expressir/model/constant'
|
|
9
9
|
require 'expressir/model/entity'
|
10
10
|
require 'expressir/model/enumeration_item'
|
11
11
|
require 'expressir/model/function'
|
12
|
-
require 'expressir/model/informal_proposition'
|
13
12
|
require 'expressir/model/interface'
|
14
13
|
require 'expressir/model/interface_item'
|
15
14
|
require 'expressir/model/interfaced_item'
|
16
15
|
require 'expressir/model/parameter'
|
17
16
|
require 'expressir/model/procedure'
|
17
|
+
require 'expressir/model/remark_item'
|
18
18
|
require 'expressir/model/repository'
|
19
19
|
require 'expressir/model/rule'
|
20
20
|
require 'expressir/model/schema'
|
@@ -7,15 +7,16 @@ module Expressir
|
|
7
7
|
DERIVED = :DERIVED
|
8
8
|
INVERSE = :INVERSE
|
9
9
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
10
|
+
model_attr_accessor :kind
|
11
|
+
model_attr_accessor :supertype_attribute
|
12
|
+
model_attr_accessor :optional
|
13
|
+
model_attr_accessor :type
|
14
|
+
model_attr_accessor :expression
|
15
15
|
|
16
16
|
def initialize(options = {})
|
17
17
|
@id = options[:id]
|
18
18
|
@remarks = options.fetch(:remarks, [])
|
19
|
+
@remark_items = options.fetch(:remark_items, [])
|
19
20
|
@source = options[:source]
|
20
21
|
|
21
22
|
@kind = options[:kind]
|
@@ -26,6 +27,12 @@ module Expressir
|
|
26
27
|
|
27
28
|
super
|
28
29
|
end
|
30
|
+
|
31
|
+
def children
|
32
|
+
[
|
33
|
+
*remark_items
|
34
|
+
]
|
35
|
+
end
|
29
36
|
end
|
30
37
|
end
|
31
38
|
end
|
@@ -3,12 +3,13 @@ module Expressir
|
|
3
3
|
class Constant < ModelElement
|
4
4
|
include Identifier
|
5
5
|
|
6
|
-
|
7
|
-
|
6
|
+
model_attr_accessor :type
|
7
|
+
model_attr_accessor :expression
|
8
8
|
|
9
9
|
def initialize(options = {})
|
10
10
|
@id = options[:id]
|
11
11
|
@remarks = options.fetch(:remarks, [])
|
12
|
+
@remark_items = options.fetch(:remark_items, [])
|
12
13
|
@source = options[:source]
|
13
14
|
|
14
15
|
@type = options[:type]
|
@@ -16,6 +17,12 @@ module Expressir
|
|
16
17
|
|
17
18
|
super
|
18
19
|
end
|
20
|
+
|
21
|
+
def children
|
22
|
+
[
|
23
|
+
*remark_items
|
24
|
+
]
|
25
|
+
end
|
19
26
|
end
|
20
27
|
end
|
21
28
|
end
|
@@ -3,17 +3,18 @@ module Expressir
|
|
3
3
|
class Entity < ModelElement
|
4
4
|
include Identifier
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
6
|
+
model_attr_accessor :abstract
|
7
|
+
model_attr_accessor :supertype_expression
|
8
|
+
model_attr_accessor :subtype_of
|
9
|
+
model_attr_accessor :attributes
|
10
|
+
model_attr_accessor :unique
|
11
|
+
model_attr_accessor :where
|
12
|
+
model_attr_accessor :informal_propositions
|
13
13
|
|
14
14
|
def initialize(options = {})
|
15
15
|
@id = options[:id]
|
16
16
|
@remarks = options.fetch(:remarks, [])
|
17
|
+
@remark_items = options.fetch(:remark_items, [])
|
17
18
|
@source = options[:source]
|
18
19
|
|
19
20
|
@abstract = options[:abstract]
|
@@ -32,7 +33,8 @@ module Expressir
|
|
32
33
|
*attributes,
|
33
34
|
*unique,
|
34
35
|
*where,
|
35
|
-
*informal_propositions
|
36
|
+
*informal_propositions,
|
37
|
+
*remark_items
|
36
38
|
]
|
37
39
|
end
|
38
40
|
end
|
@@ -6,10 +6,17 @@ module Expressir
|
|
6
6
|
def initialize(options = {})
|
7
7
|
@id = options[:id]
|
8
8
|
@remarks = options.fetch(:remarks, [])
|
9
|
+
@remark_items = options.fetch(:remark_items, [])
|
9
10
|
@source = options[:source]
|
10
11
|
|
11
12
|
super
|
12
13
|
end
|
14
|
+
|
15
|
+
def children
|
16
|
+
[
|
17
|
+
*remark_items
|
18
|
+
]
|
19
|
+
end
|
13
20
|
end
|
14
21
|
end
|
15
22
|
end
|
@@ -2,8 +2,8 @@ module Expressir
|
|
2
2
|
module Model
|
3
3
|
module Expressions
|
4
4
|
class AggregateItem < ModelElement
|
5
|
-
|
6
|
-
|
5
|
+
model_attr_accessor :expression
|
6
|
+
model_attr_accessor :repetition
|
7
7
|
|
8
8
|
def initialize(options = {})
|
9
9
|
@expression = options[:expression]
|
@@ -25,9 +25,9 @@ module Expressir
|
|
25
25
|
SUBTRACTION = :SUBTRACTION
|
26
26
|
XOR = :XOR
|
27
27
|
|
28
|
-
|
29
|
-
|
30
|
-
|
28
|
+
model_attr_accessor :operator
|
29
|
+
model_attr_accessor :operand1
|
30
|
+
model_attr_accessor :operand2
|
31
31
|
|
32
32
|
def initialize(options = {})
|
33
33
|
@operator = options[:operator]
|
@@ -2,8 +2,8 @@ module Expressir
|
|
2
2
|
module Model
|
3
3
|
module Expressions
|
4
4
|
class EntityConstructor < ModelElement
|
5
|
-
|
6
|
-
|
5
|
+
model_attr_accessor :entity
|
6
|
+
model_attr_accessor :parameters
|
7
7
|
|
8
8
|
def initialize(options = {})
|
9
9
|
@entity = options[:entity]
|
@@ -2,9 +2,9 @@ module Expressir
|
|
2
2
|
module Model
|
3
3
|
module Expressions
|
4
4
|
class IndexReference < ModelElement
|
5
|
-
|
6
|
-
|
7
|
-
|
5
|
+
model_attr_accessor :ref
|
6
|
+
model_attr_accessor :index1
|
7
|
+
model_attr_accessor :index2
|
8
8
|
|
9
9
|
def initialize(options = {})
|
10
10
|
@ref = options[:ref]
|
@@ -2,11 +2,11 @@ module Expressir
|
|
2
2
|
module Model
|
3
3
|
module Expressions
|
4
4
|
class Interval < ModelElement
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
5
|
+
model_attr_accessor :low
|
6
|
+
model_attr_accessor :operator1
|
7
|
+
model_attr_accessor :item
|
8
|
+
model_attr_accessor :operator2
|
9
|
+
model_attr_accessor :high
|
10
10
|
|
11
11
|
def initialize(options = {})
|
12
12
|
@low = options[:low]
|
@@ -4,12 +4,13 @@ module Expressir
|
|
4
4
|
class QueryExpression < ModelElement
|
5
5
|
include Identifier
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
model_attr_accessor :aggregate_source
|
8
|
+
model_attr_accessor :expression
|
9
9
|
|
10
10
|
def initialize(options = {})
|
11
11
|
@id = options[:id]
|
12
12
|
@remarks = options.fetch(:remarks, [])
|
13
|
+
@remark_items = options.fetch(:remark_items, [])
|
13
14
|
@source = options[:source]
|
14
15
|
|
15
16
|
@aggregate_source = options[:aggregate_source]
|
@@ -20,7 +21,8 @@ module Expressir
|
|
20
21
|
|
21
22
|
def children
|
22
23
|
[
|
23
|
-
self
|
24
|
+
self,
|
25
|
+
*remark_items
|
24
26
|
]
|
25
27
|
end
|
26
28
|
end
|
@@ -3,20 +3,21 @@ module Expressir
|
|
3
3
|
class Function < ModelElement
|
4
4
|
include Identifier
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
6
|
+
model_attr_accessor :parameters
|
7
|
+
model_attr_accessor :return_type
|
8
|
+
model_attr_accessor :types
|
9
|
+
model_attr_accessor :entities
|
10
|
+
model_attr_accessor :subtype_constraints
|
11
|
+
model_attr_accessor :functions
|
12
|
+
model_attr_accessor :procedures
|
13
|
+
model_attr_accessor :constants
|
14
|
+
model_attr_accessor :variables
|
15
|
+
model_attr_accessor :statements
|
16
16
|
|
17
17
|
def initialize(options = {})
|
18
18
|
@id = options[:id]
|
19
19
|
@remarks = options.fetch(:remarks, [])
|
20
|
+
@remark_items = options.fetch(:remark_items, [])
|
20
21
|
@source = options[:source]
|
21
22
|
|
22
23
|
@parameters = options.fetch(:parameters, [])
|
@@ -47,7 +48,8 @@ module Expressir
|
|
47
48
|
*functions,
|
48
49
|
*procedures,
|
49
50
|
*constants,
|
50
|
-
*variables
|
51
|
+
*variables,
|
52
|
+
*remark_items
|
51
53
|
]
|
52
54
|
end
|
53
55
|
end
|