expressir 0.2.21-x86-linux → 1.0.0-x86-linux
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/.github/workflows/rake.yml +7 -6
- data/.github/workflows/release.yml +22 -6
- data/.gitignore +2 -2
- data/demo.rb +5 -5
- data/exe/format +10 -73
- data/exe/format-test +81 -0
- data/expressir.gemspec +0 -1
- data/lib/expressir.rb +0 -1
- data/lib/expressir/cli.rb +0 -6
- data/lib/expressir/{express_exp → express}/2.4/express_parser.so +0 -0
- data/lib/expressir/{express_exp → express}/2.5/express_parser.so +0 -0
- data/lib/expressir/{express_exp → express}/2.6/express_parser.so +0 -0
- data/lib/expressir/{express_exp → express}/2.7/express_parser.so +0 -0
- data/lib/expressir/{express_exp → express}/3.0/express_parser.so +0 -0
- data/lib/expressir/{express_exp → express}/cache.rb +3 -6
- data/lib/expressir/{express_exp → express}/formatter.rb +84 -68
- data/lib/expressir/express/hyperlink_formatter.rb +22 -0
- data/lib/expressir/express/model_visitor.rb +23 -0
- data/lib/expressir/{express_exp → express}/parser.rb +16 -5
- data/lib/expressir/express/resolve_references_model_visitor.rb +29 -0
- data/lib/expressir/{express_exp → express}/schema_head_formatter.rb +1 -1
- data/lib/expressir/{express_exp → express}/visitor.rb +67 -44
- data/lib/expressir/model.rb +5 -3
- data/lib/expressir/model/attribute.rb +13 -6
- data/lib/expressir/model/cache.rb +2 -2
- data/lib/expressir/model/constant.rb +10 -3
- data/lib/expressir/model/entity.rb +18 -16
- data/lib/expressir/model/enumeration_item.rb +8 -1
- data/lib/expressir/model/expressions/aggregate_initializer.rb +2 -2
- 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 +3 -3
- data/lib/expressir/model/expressions/entity_constructor.rb +3 -3
- 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 +6 -4
- data/lib/expressir/model/expressions/simple_reference.rb +5 -1
- data/lib/expressir/model/expressions/unary_expression.rb +2 -2
- data/lib/expressir/model/function.rb +23 -21
- data/lib/expressir/model/identifier.rb +6 -3
- data/lib/expressir/model/interface.rb +4 -4
- data/lib/expressir/model/interface_item.rb +2 -2
- data/lib/expressir/model/interfaced_item.rb +10 -9
- 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 +39 -27
- data/lib/expressir/model/parameter.rb +10 -3
- data/lib/expressir/model/procedure.rb +22 -20
- data/lib/expressir/model/remark_item.rb +15 -0
- data/lib/expressir/model/repository.rb +2 -2
- data/lib/expressir/model/rule.rb +27 -25
- data/lib/expressir/model/schema.rb +24 -20
- data/lib/expressir/model/schema_version.rb +15 -0
- data/lib/expressir/model/schema_version_item.rb +15 -0
- data/lib/expressir/model/statements/alias.rb +7 -5
- data/lib/expressir/model/statements/assignment.rb +2 -2
- data/lib/expressir/model/statements/call.rb +3 -3
- data/lib/expressir/model/statements/case.rb +4 -4
- data/lib/expressir/model/statements/case_action.rb +3 -3
- data/lib/expressir/model/statements/compound.rb +2 -2
- data/lib/expressir/model/statements/if.rb +5 -5
- data/lib/expressir/model/statements/repeat.rb +11 -9
- data/lib/expressir/model/statements/return.rb +1 -1
- data/lib/expressir/model/subtype_constraint.rb +13 -6
- data/lib/expressir/model/type.rb +12 -10
- data/lib/expressir/model/types/aggregate.rb +9 -2
- 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 +5 -7
- data/lib/expressir/model/types/generic.rb +8 -1
- data/lib/expressir/model/types/generic_entity.rb +8 -1
- 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 +6 -8
- data/lib/expressir/model/types/set.rb +3 -3
- data/lib/expressir/model/types/string.rb +2 -2
- data/lib/expressir/model/unique_rule.rb +26 -0
- data/lib/expressir/model/variable.rb +10 -3
- data/lib/expressir/model/where_rule.rb +26 -0
- data/lib/expressir/version.rb +1 -1
- data/rakelib/cross-ruby.rake +1 -1
- data/spec/expressir/{express_exp → express}/cache_spec.rb +9 -9
- data/spec/expressir/express/formatter_spec.rb +127 -0
- data/spec/expressir/{express_exp → express}/parser_spec.rb +24 -24
- data/spec/expressir/model/model_element_spec.rb +112 -60
- data/{original/examples → spec}/syntax/multiple.exp +1 -1
- data/{original/examples → spec}/syntax/multiple.yaml +19 -5
- data/{original/examples → spec}/syntax/multiple_formatted.exp +1 -1
- data/{original/examples → spec}/syntax/multiple_hyperlink_formatted.exp +4 -4
- data/{original/examples → spec}/syntax/multiple_schema_head_hyperlink_formatted.exp +1 -1
- data/{original/examples → spec}/syntax/remark.exp +12 -10
- data/{original/examples → spec}/syntax/remark.yaml +36 -16
- data/{original/examples → spec}/syntax/remark_formatted.exp +3 -1
- data/spec/syntax/single.exp +4 -0
- data/spec/syntax/single.yaml +18 -0
- data/spec/syntax/single_formatted.exp +10 -0
- data/spec/syntax/single_formatted.yaml +36 -0
- data/{original/examples → spec}/syntax/syntax.exp +11 -11
- data/{original/examples → spec}/syntax/syntax.yaml +205 -108
- data/{original/examples → spec}/syntax/syntax_formatted.exp +11 -11
- data/spec/syntax/syntax_hyperlink_formatted.exp +902 -0
- data/{original/examples → spec}/syntax/syntax_schema_head_formatted.exp +1 -1
- metadata +41 -83
- data/lib/expressir/express.rb +0 -11
- data/lib/expressir/express/aggregate_dimension.rb +0 -38
- data/lib/expressir/express/attribute.rb +0 -15
- data/lib/expressir/express/comment.rb +0 -7
- data/lib/expressir/express/defined_type.rb +0 -36
- data/lib/expressir/express/derived.rb +0 -65
- data/lib/expressir/express/derived_aggregate.rb +0 -43
- data/lib/expressir/express/entity.rb +0 -137
- data/lib/expressir/express/explicit.rb +0 -70
- data/lib/expressir/express/explicit_aggregate.rb +0 -46
- data/lib/expressir/express/explicit_or_derived.rb +0 -16
- data/lib/expressir/express/global_rule.rb +0 -44
- data/lib/expressir/express/interface_specification.rb +0 -51
- data/lib/expressir/express/interfaced_item.rb +0 -38
- data/lib/expressir/express/inverse.rb +0 -46
- data/lib/expressir/express/inverse_aggregate.rb +0 -37
- data/lib/expressir/express/model_element.rb +0 -7
- data/lib/expressir/express/named_type.rb +0 -19
- data/lib/expressir/express/remark.rb +0 -8
- data/lib/expressir/express/repository.rb +0 -306
- data/lib/expressir/express/schema_definition.rb +0 -96
- data/lib/expressir/express/subtype_constraint.rb +0 -14
- data/lib/expressir/express/type.rb +0 -26
- data/lib/expressir/express/type_aggregate.rb +0 -42
- data/lib/expressir/express/type_enum.rb +0 -29
- data/lib/expressir/express/type_parser.rb +0 -45
- data/lib/expressir/express/type_select.rb +0 -82
- data/lib/expressir/express/unique_rule.rb +0 -35
- data/lib/expressir/express/where_rule.rb +0 -32
- data/lib/expressir/express_exp/hyperlink_formatter.rb +0 -27
- data/lib/expressir/express_parser.rb +0 -30
- data/lib/expressir/model/informal_proposition.rb +0 -18
- data/lib/expressir/model/unique.rb +0 -19
- data/lib/expressir/model/where.rb +0 -19
- data/lib/expressir/parser.rb +0 -6
- data/lib/expressir/parser/owl_parser.rb +0 -8
- data/original/examples/syntax/single.exp +0 -3
- data/original/examples/syntax/single.yaml +0 -9
- data/original/examples/syntax/single_formatted.exp +0 -6
- data/original/examples/syntax/single_formatted.yaml +0 -19
- data/spec/acceptance/express_to_owl_spec.rb +0 -18
- data/spec/expressir/express/repository_spec.rb +0 -25
- data/spec/expressir/express_exp/formatter_spec.rb +0 -111
@@ -0,0 +1,22 @@
|
|
1
|
+
module Expressir
|
2
|
+
module Express
|
3
|
+
module HyperlinkFormatter
|
4
|
+
def format_expressions_simple_reference(node)
|
5
|
+
return node.id unless node.base_path
|
6
|
+
|
7
|
+
# find closest node with path
|
8
|
+
current_node = node
|
9
|
+
while !current_node.path
|
10
|
+
current_node = current_node.parent
|
11
|
+
end
|
12
|
+
|
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
|
+
|
18
|
+
"{{{<<express:#{node.base_path},#{node.id}>>}}}"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require "expressir/model"
|
2
|
+
|
3
|
+
module Expressir
|
4
|
+
module Express
|
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
|
@@ -4,7 +4,8 @@ begin
|
|
4
4
|
rescue LoadError
|
5
5
|
require_relative "express_parser"
|
6
6
|
end
|
7
|
-
require 'expressir/
|
7
|
+
require 'expressir/express/visitor'
|
8
|
+
require 'expressir/express/resolve_references_model_visitor'
|
8
9
|
|
9
10
|
=begin
|
10
11
|
char_stream = Antlr4::Runtime::CharStreams.from_string(input, 'String')
|
@@ -22,9 +23,11 @@ repo = visitor.visit(parse_tree)
|
|
22
23
|
=end
|
23
24
|
|
24
25
|
module Expressir
|
25
|
-
module
|
26
|
+
module Express
|
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,29 @@
|
|
1
|
+
require "expressir/express/model_visitor"
|
2
|
+
require "expressir/model"
|
3
|
+
|
4
|
+
module Expressir
|
5
|
+
module Express
|
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
|
+
node.base_path = base_item.path
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -32,7 +32,7 @@ require "set"
|
|
32
32
|
# - e.g. see visit_schema_decl
|
33
33
|
|
34
34
|
module Expressir
|
35
|
-
module
|
35
|
+
module Express
|
36
36
|
class Visitor < ::ExpressParser::Visitor
|
37
37
|
REMARK_CHANNEL = 2
|
38
38
|
|
@@ -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)
|
@@ -693,7 +694,7 @@ module Expressir
|
|
693
694
|
id = visit_if(ctx__rule_label_id)
|
694
695
|
expression = visit_if(ctx__expression)
|
695
696
|
|
696
|
-
Model::
|
697
|
+
Model::WhereRule.new({
|
697
698
|
id: id,
|
698
699
|
expression: expression
|
699
700
|
})
|
@@ -758,8 +759,8 @@ module Expressir
|
|
758
759
|
*visit_if(ctx__entity_body__derive_clause),
|
759
760
|
*visit_if(ctx__entity_body__inverse_clause)
|
760
761
|
]
|
761
|
-
|
762
|
-
|
762
|
+
unique_rules = visit_if(ctx__entity_body__unique_clause, [])
|
763
|
+
where_rules = visit_if(ctx__entity_body__where_clause, [])
|
763
764
|
|
764
765
|
Model::Entity.new({
|
765
766
|
id: id,
|
@@ -767,8 +768,8 @@ module Expressir
|
|
767
768
|
supertype_expression: supertype_expression,
|
768
769
|
subtype_of: subtype_of,
|
769
770
|
attributes: attributes,
|
770
|
-
|
771
|
-
|
771
|
+
unique_rules: unique_rules,
|
772
|
+
where_rules: where_rules
|
772
773
|
})
|
773
774
|
end
|
774
775
|
|
@@ -833,15 +834,13 @@ module Expressir
|
|
833
834
|
ctx__enumeration_extension__enumeration_items = ctx__enumeration_extension&.enumeration_items
|
834
835
|
|
835
836
|
extensible = ctx__EXTENSIBLE && true
|
836
|
-
|
837
|
-
|
838
|
-
extension_items = visit_if(ctx__enumeration_extension__enumeration_items, [])
|
837
|
+
based_on = visit_if(ctx__enumeration_extension__type_ref)
|
838
|
+
items = visit_if(ctx__enumeration_items || ctx__enumeration_extension__enumeration_items, [])
|
839
839
|
|
840
840
|
Model::Types::Enumeration.new({
|
841
841
|
extensible: extensible,
|
842
|
-
|
843
|
-
|
844
|
-
extension_items: extension_items
|
842
|
+
based_on: based_on,
|
843
|
+
items: items
|
845
844
|
})
|
846
845
|
end
|
847
846
|
|
@@ -1869,7 +1868,7 @@ module Expressir
|
|
1869
1868
|
constants = visit_if(ctx__algorithm_head__constant_decl, [])
|
1870
1869
|
variables = visit_if(ctx__algorithm_head__local_decl, [])
|
1871
1870
|
statements = visit_if_map(ctx__stmt)
|
1872
|
-
|
1871
|
+
where_rules = visit_if(ctx__where_clause, [])
|
1873
1872
|
|
1874
1873
|
Model::Rule.new({
|
1875
1874
|
id: id,
|
@@ -1882,7 +1881,7 @@ module Expressir
|
|
1882
1881
|
constants: constants,
|
1883
1882
|
variables: variables,
|
1884
1883
|
statements: statements,
|
1885
|
-
|
1884
|
+
where_rules: where_rules
|
1886
1885
|
})
|
1887
1886
|
end
|
1888
1887
|
|
@@ -1956,7 +1955,33 @@ module Expressir
|
|
1956
1955
|
def visit_schema_version_id(ctx)
|
1957
1956
|
ctx__string_literal = ctx.string_literal
|
1958
1957
|
|
1959
|
-
visit_if(ctx__string_literal)
|
1958
|
+
value = visit_if(ctx__string_literal)
|
1959
|
+
value = value.value
|
1960
|
+
|
1961
|
+
items = if value.start_with?('{') and value.end_with?('}')
|
1962
|
+
parts = value.sub(/^\{/, '').sub(/\}$/, '').split(' ')
|
1963
|
+
parts.map do |part|
|
1964
|
+
if match = part.match(/^(.+)\((\d+)\)$/)
|
1965
|
+
Model::SchemaVersionItem.new({
|
1966
|
+
name: match[1],
|
1967
|
+
value: match[2]
|
1968
|
+
})
|
1969
|
+
elsif part.match(/^\d+$/)
|
1970
|
+
Model::SchemaVersionItem.new({
|
1971
|
+
value: part
|
1972
|
+
})
|
1973
|
+
else
|
1974
|
+
Model::SchemaVersionItem.new({
|
1975
|
+
name: part
|
1976
|
+
})
|
1977
|
+
end
|
1978
|
+
end
|
1979
|
+
end
|
1980
|
+
|
1981
|
+
Model::SchemaVersion.new({
|
1982
|
+
value: value,
|
1983
|
+
items: items
|
1984
|
+
})
|
1960
1985
|
end
|
1961
1986
|
|
1962
1987
|
def visit_selector(ctx)
|
@@ -1985,16 +2010,14 @@ module Expressir
|
|
1985
2010
|
|
1986
2011
|
extensible = ctx__EXTENSIBLE && true
|
1987
2012
|
generic_entity = ctx__GENERIC_ENTITY && true
|
1988
|
-
|
1989
|
-
|
1990
|
-
extension_items = visit_if(ctx__select_extension__select_list, [])
|
2013
|
+
based_on = visit_if(ctx__select_extension__type_ref)
|
2014
|
+
items = visit_if(ctx__select_list || ctx__select_extension__select_list, [])
|
1991
2015
|
|
1992
2016
|
Model::Types::Select.new({
|
1993
2017
|
extensible: extensible,
|
1994
2018
|
generic_entity: generic_entity,
|
1995
|
-
|
1996
|
-
|
1997
|
-
extension_items: extension_items
|
2019
|
+
based_on: based_on,
|
2020
|
+
items: items
|
1998
2021
|
})
|
1999
2022
|
end
|
2000
2023
|
|
@@ -2288,13 +2311,13 @@ module Expressir
|
|
2288
2311
|
ctx__where_clause = ctx.where_clause
|
2289
2312
|
|
2290
2313
|
id = visit_if(ctx__type_id)
|
2291
|
-
|
2292
|
-
|
2314
|
+
underlying_type = visit_if(ctx__underlying_type)
|
2315
|
+
where_rules = visit_if(ctx__where_clause, [])
|
2293
2316
|
|
2294
2317
|
Model::Type.new({
|
2295
2318
|
id: id,
|
2296
|
-
|
2297
|
-
|
2319
|
+
underlying_type: underlying_type,
|
2320
|
+
where_rules: where_rules
|
2298
2321
|
})
|
2299
2322
|
end
|
2300
2323
|
|
@@ -2354,7 +2377,7 @@ module Expressir
|
|
2354
2377
|
id = visit_if(ctx__rule_label_id)
|
2355
2378
|
attributes = visit_if_map(ctx__referenced_attribute)
|
2356
2379
|
|
2357
|
-
Model::
|
2380
|
+
Model::UniqueRule.new({
|
2358
2381
|
id: id,
|
2359
2382
|
attributes: attributes
|
2360
2383
|
})
|
data/lib/expressir/model.rb
CHANGED
@@ -9,20 +9,22 @@ 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'
|
21
|
+
require 'expressir/model/schema_version'
|
22
|
+
require 'expressir/model/schema_version_item'
|
21
23
|
require 'expressir/model/subtype_constraint'
|
22
24
|
require 'expressir/model/type'
|
23
|
-
require 'expressir/model/
|
25
|
+
require 'expressir/model/unique_rule'
|
24
26
|
require 'expressir/model/variable'
|
25
|
-
require 'expressir/model/
|
27
|
+
require 'expressir/model/where_rule'
|
26
28
|
require 'expressir/model/expressions/aggregate_initializer'
|
27
29
|
require 'expressir/model/expressions/aggregate_item'
|
28
30
|
require 'expressir/model/expressions/binary_expression'
|
@@ -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
|
-
@remarks = options
|
18
|
+
@remarks = options[:remarks] || []
|
19
|
+
@remark_items = options[: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
|
-
@remarks = options
|
11
|
+
@remarks = options[:remarks] || []
|
12
|
+
@remark_items = options[: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
|