expressir 1.3.0.pre.1-x86_64-linux-gnu
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 +7 -0
- data/.cross_rubies +20 -0
- data/.github/workflows/rake.yml +312 -0
- data/.github/workflows/release.yml +124 -0
- data/.gitignore +23 -0
- data/.gitmodules +6 -0
- data/.hound.yml +3 -0
- data/.rspec +2 -0
- data/.rubocop.yml +18 -0
- data/.yardopts +11 -0
- data/Gemfile +4 -0
- data/README.adoc +155 -0
- data/Rakefile +17 -0
- data/bin/console +11 -0
- data/bin/rspec +29 -0
- data/bin/setup +8 -0
- data/docs/development.md +90 -0
- data/exe/expressir +22 -0
- data/exe/format +18 -0
- data/exe/format-test +81 -0
- data/exe/generate-parser +51 -0
- data/expressir.gemspec +48 -0
- data/lib/expressir/cli/ui.rb +36 -0
- data/lib/expressir/cli.rb +21 -0
- data/lib/expressir/config.rb +23 -0
- data/lib/expressir/express/2.7/express_parser.so +0 -0
- data/lib/expressir/express/3.0/express_parser.so +0 -0
- data/lib/expressir/express/3.1/express_parser.so +0 -0
- data/lib/expressir/express/3.2/express_parser.so +0 -0
- data/lib/expressir/express/cache.rb +51 -0
- data/lib/expressir/express/extension.rb +30 -0
- data/lib/expressir/express/formatter.rb +1608 -0
- data/lib/expressir/express/hyperlink_formatter.rb +36 -0
- data/lib/expressir/express/model_visitor.rb +24 -0
- data/lib/expressir/express/parser.rb +79 -0
- data/lib/expressir/express/resolve_references_model_visitor.rb +31 -0
- data/lib/expressir/express/schema_head_formatter.rb +23 -0
- data/lib/expressir/express/visitor.rb +2581 -0
- data/lib/expressir/model/cache.rb +17 -0
- data/lib/expressir/model/data_type.rb +9 -0
- data/lib/expressir/model/data_types/aggregate.rb +31 -0
- data/lib/expressir/model/data_types/array.rb +31 -0
- data/lib/expressir/model/data_types/bag.rb +25 -0
- data/lib/expressir/model/data_types/binary.rb +22 -0
- data/lib/expressir/model/data_types/boolean.rb +10 -0
- data/lib/expressir/model/data_types/enumeration.rb +25 -0
- data/lib/expressir/model/data_types/enumeration_item.rb +26 -0
- data/lib/expressir/model/data_types/generic.rb +26 -0
- data/lib/expressir/model/data_types/generic_entity.rb +26 -0
- data/lib/expressir/model/data_types/integer.rb +10 -0
- data/lib/expressir/model/data_types/list.rb +28 -0
- data/lib/expressir/model/data_types/logical.rb +10 -0
- data/lib/expressir/model/data_types/number.rb +10 -0
- data/lib/expressir/model/data_types/real.rb +19 -0
- data/lib/expressir/model/data_types/select.rb +28 -0
- data/lib/expressir/model/data_types/set.rb +25 -0
- data/lib/expressir/model/data_types/string.rb +22 -0
- data/lib/expressir/model/declaration.rb +9 -0
- data/lib/expressir/model/declarations/attribute.rb +47 -0
- data/lib/expressir/model/declarations/constant.rb +34 -0
- data/lib/expressir/model/declarations/entity.rb +53 -0
- data/lib/expressir/model/declarations/function.rb +67 -0
- data/lib/expressir/model/declarations/interface.rb +28 -0
- data/lib/expressir/model/declarations/interface_item.rb +23 -0
- data/lib/expressir/model/declarations/interfaced_item.rb +37 -0
- data/lib/expressir/model/declarations/parameter.rb +34 -0
- data/lib/expressir/model/declarations/procedure.rb +64 -0
- data/lib/expressir/model/declarations/remark_item.rb +21 -0
- data/lib/expressir/model/declarations/rule.rb +71 -0
- data/lib/expressir/model/declarations/schema.rb +117 -0
- data/lib/expressir/model/declarations/schema_version.rb +22 -0
- data/lib/expressir/model/declarations/schema_version_item.rb +22 -0
- data/lib/expressir/model/declarations/subtype_constraint.rb +40 -0
- data/lib/expressir/model/declarations/type.rb +45 -0
- data/lib/expressir/model/declarations/unique_rule.rb +31 -0
- data/lib/expressir/model/declarations/variable.rb +34 -0
- data/lib/expressir/model/declarations/where_rule.rb +31 -0
- data/lib/expressir/model/expression.rb +9 -0
- data/lib/expressir/model/expressions/aggregate_initializer.rb +19 -0
- data/lib/expressir/model/expressions/aggregate_initializer_item.rb +22 -0
- data/lib/expressir/model/expressions/binary_expression.rb +53 -0
- data/lib/expressir/model/expressions/entity_constructor.rb +22 -0
- data/lib/expressir/model/expressions/function_call.rb +22 -0
- data/lib/expressir/model/expressions/interval.rb +34 -0
- data/lib/expressir/model/expressions/query_expression.rb +35 -0
- data/lib/expressir/model/expressions/unary_expression.rb +27 -0
- data/lib/expressir/model/identifier.rb +34 -0
- data/lib/expressir/model/literal.rb +9 -0
- data/lib/expressir/model/literals/binary.rb +19 -0
- data/lib/expressir/model/literals/integer.rb +19 -0
- data/lib/expressir/model/literals/logical.rb +23 -0
- data/lib/expressir/model/literals/real.rb +19 -0
- data/lib/expressir/model/literals/string.rb +22 -0
- data/lib/expressir/model/model_element.rb +208 -0
- data/lib/expressir/model/reference.rb +9 -0
- data/lib/expressir/model/references/attribute_reference.rb +22 -0
- data/lib/expressir/model/references/group_reference.rb +22 -0
- data/lib/expressir/model/references/index_reference.rb +27 -0
- data/lib/expressir/model/references/simple_reference.rb +24 -0
- data/lib/expressir/model/repository.rb +23 -0
- data/lib/expressir/model/statement.rb +9 -0
- data/lib/expressir/model/statements/alias.rb +35 -0
- data/lib/expressir/model/statements/assignment.rb +22 -0
- data/lib/expressir/model/statements/case.rb +25 -0
- data/lib/expressir/model/statements/case_action.rb +22 -0
- data/lib/expressir/model/statements/compound.rb +19 -0
- data/lib/expressir/model/statements/escape.rb +10 -0
- data/lib/expressir/model/statements/if.rb +25 -0
- data/lib/expressir/model/statements/null.rb +10 -0
- data/lib/expressir/model/statements/procedure_call.rb +22 -0
- data/lib/expressir/model/statements/repeat.rb +47 -0
- data/lib/expressir/model/statements/return.rb +19 -0
- data/lib/expressir/model/statements/skip.rb +10 -0
- data/lib/expressir/model/supertype_expression.rb +9 -0
- data/lib/expressir/model/supertype_expressions/binary_supertype_expression.rb +29 -0
- data/lib/expressir/model/supertype_expressions/oneof_supertype_expression.rb +19 -0
- data/lib/expressir/model.rb +79 -0
- data/lib/expressir/version.rb +3 -0
- data/lib/expressir.rb +24 -0
- data/rakelib/antlr4-native.rake +161 -0
- data/rakelib/cross-ruby.rake +383 -0
- data/spec/acceptance/version_spec.rb +27 -0
- data/spec/expressir/express/cache_spec.rb +89 -0
- data/spec/expressir/express/formatter_spec.rb +173 -0
- data/spec/expressir/express/parser_spec.rb +141 -0
- data/spec/expressir/model/model_element_spec.rb +318 -0
- data/spec/spec_helper.rb +24 -0
- data/spec/support/console_helper.rb +29 -0
- data/spec/syntax/multiple.exp +23 -0
- data/spec/syntax/multiple.yaml +198 -0
- data/spec/syntax/multiple_formatted.exp +71 -0
- data/spec/syntax/multiple_hyperlink_formatted.exp +71 -0
- data/spec/syntax/multiple_schema_head_hyperlink_formatted.exp +13 -0
- data/spec/syntax/remark.exp +193 -0
- data/spec/syntax/remark.yaml +471 -0
- data/spec/syntax/remark_formatted.exp +228 -0
- 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/spec/syntax/syntax.exp +333 -0
- data/spec/syntax/syntax.yaml +3509 -0
- data/spec/syntax/syntax_formatted.exp +902 -0
- data/spec/syntax/syntax_hyperlink_formatted.exp +902 -0
- data/spec/syntax/syntax_schema_head_formatted.exp +18 -0
- metadata +391 -0
@@ -0,0 +1,23 @@
|
|
1
|
+
module Expressir
|
2
|
+
module Model
|
3
|
+
module Declarations
|
4
|
+
# Specified in ISO 10303-11:2004
|
5
|
+
# - section 11 Interface specification
|
6
|
+
class InterfaceItem < ModelElement
|
7
|
+
model_attr_accessor :ref, 'Reference'
|
8
|
+
model_attr_accessor :id, 'String'
|
9
|
+
|
10
|
+
# @param [Hash] options
|
11
|
+
# @option (see Identifier#initialize_identifier)
|
12
|
+
# @option options [Reference] :ref
|
13
|
+
# @option options [String] :id
|
14
|
+
def initialize(options = {})
|
15
|
+
@ref = options[:ref]
|
16
|
+
@id = options[:id]
|
17
|
+
|
18
|
+
super
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Expressir
|
2
|
+
module Model
|
3
|
+
module Declarations
|
4
|
+
# Specified in ISO 10303-11:2004
|
5
|
+
# - section 11 Interface specification
|
6
|
+
class InterfacedItem < ModelElement
|
7
|
+
model_attr_accessor :id, 'String'
|
8
|
+
model_attr_accessor :remarks, 'Array<String>'
|
9
|
+
model_attr_accessor :remark_items, 'Array<RemarkItem>'
|
10
|
+
|
11
|
+
model_attr_accessor :base_item, 'ModelElement'
|
12
|
+
|
13
|
+
# @param [Hash] options
|
14
|
+
# @option options [String] :id
|
15
|
+
# @option options [Array<String>] :remarks
|
16
|
+
# @option options [Array<RemarkItem>] :remark_items
|
17
|
+
# @option options [ModelElement] :base_item
|
18
|
+
def initialize(options = {})
|
19
|
+
@id = options[:id]
|
20
|
+
@remarks = options[:remarks] || []
|
21
|
+
@remark_items = options[:remark_items] || []
|
22
|
+
|
23
|
+
@base_item = options[:base_item]
|
24
|
+
|
25
|
+
super
|
26
|
+
end
|
27
|
+
|
28
|
+
# @return [Array<Declaration>]
|
29
|
+
def children
|
30
|
+
[
|
31
|
+
*remark_items
|
32
|
+
]
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module Expressir
|
2
|
+
module Model
|
3
|
+
module Declarations
|
4
|
+
# Specified in ISO 10303-11:2004
|
5
|
+
# - section 9.5.3 Parameters
|
6
|
+
class Parameter < Declaration
|
7
|
+
include Identifier
|
8
|
+
|
9
|
+
model_attr_accessor :var, 'Boolean'
|
10
|
+
model_attr_accessor :type, 'DataType'
|
11
|
+
|
12
|
+
# @param [Hash] options
|
13
|
+
# @option (see Identifier#initialize_identifier)
|
14
|
+
# @option options [Boolean] :var
|
15
|
+
# @option options [DataType] :type
|
16
|
+
def initialize(options = {})
|
17
|
+
initialize_identifier(options)
|
18
|
+
|
19
|
+
@var = options[:var]
|
20
|
+
@type = options[:type]
|
21
|
+
|
22
|
+
super
|
23
|
+
end
|
24
|
+
|
25
|
+
# @return [Array<Declaration>]
|
26
|
+
def children
|
27
|
+
[
|
28
|
+
*remark_items
|
29
|
+
]
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
module Expressir
|
2
|
+
module Model
|
3
|
+
module Declarations
|
4
|
+
# Specified in ISO 10303-11:2004
|
5
|
+
# - section 9.5.2 Procedure
|
6
|
+
class Procedure < Declaration
|
7
|
+
include Identifier
|
8
|
+
|
9
|
+
model_attr_accessor :parameters, 'Array<Parameter>'
|
10
|
+
model_attr_accessor :types, 'Array<Type>'
|
11
|
+
model_attr_accessor :entities, 'Array<Entity>'
|
12
|
+
model_attr_accessor :subtype_constraints, 'Array<SubtypeConstraint>'
|
13
|
+
model_attr_accessor :functions, 'Array<Function>'
|
14
|
+
model_attr_accessor :procedures, 'Array<Procedure>'
|
15
|
+
model_attr_accessor :constants, 'Array<Constant>'
|
16
|
+
model_attr_accessor :variables, 'Array<Variable>'
|
17
|
+
model_attr_accessor :statements, 'Array<Statement>'
|
18
|
+
|
19
|
+
# @param [Hash] options
|
20
|
+
# @option (see Identifier#initialize_identifier)
|
21
|
+
# @option options [Array<Parameter>] :parameters
|
22
|
+
# @option options [Array<Type>] :types
|
23
|
+
# @option options [Array<Entity>] :entities
|
24
|
+
# @option options [Array<SubtypeConstraint>] :subtype_constraints
|
25
|
+
# @option options [Array<Function>] :functions
|
26
|
+
# @option options [Array<Procedure>] :procedures
|
27
|
+
# @option options [Array<Constant>] :constants
|
28
|
+
# @option options [Array<Variable>] :variables
|
29
|
+
# @option options [Array<Statement>] :statements
|
30
|
+
def initialize(options = {})
|
31
|
+
initialize_identifier(options)
|
32
|
+
|
33
|
+
@parameters = options[:parameters] || []
|
34
|
+
@types = options[:types] || []
|
35
|
+
@entities = options[:entities] || []
|
36
|
+
@subtype_constraints = options[:subtype_constraints] || []
|
37
|
+
@functions = options[:functions] || []
|
38
|
+
@procedures = options[:procedures] || []
|
39
|
+
@constants = options[:constants] || []
|
40
|
+
@variables = options[:variables] || []
|
41
|
+
@statements = options[:statements] || []
|
42
|
+
|
43
|
+
super
|
44
|
+
end
|
45
|
+
|
46
|
+
# @return [Array<Declaration>]
|
47
|
+
def children
|
48
|
+
[
|
49
|
+
*parameters,
|
50
|
+
*types,
|
51
|
+
*types.flat_map{|x| x.enumeration_items},
|
52
|
+
*entities,
|
53
|
+
*subtype_constraints,
|
54
|
+
*functions,
|
55
|
+
*procedures,
|
56
|
+
*constants,
|
57
|
+
*variables,
|
58
|
+
*remark_items
|
59
|
+
]
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Expressir
|
2
|
+
module Model
|
3
|
+
module Declarations
|
4
|
+
# Implicit item with remarks
|
5
|
+
class RemarkItem < Declaration
|
6
|
+
model_attr_accessor :id, 'String'
|
7
|
+
model_attr_accessor :remarks, 'Array<String>'
|
8
|
+
|
9
|
+
# @param [Hash] options
|
10
|
+
# @option options [String] :id
|
11
|
+
# @option options [Array<String>] :remarks
|
12
|
+
def initialize(options = {})
|
13
|
+
@id = options[:id]
|
14
|
+
@remarks = options[:remarks] || []
|
15
|
+
|
16
|
+
super
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
module Expressir
|
2
|
+
module Model
|
3
|
+
module Declarations
|
4
|
+
# Specified in ISO 10303-11:2004
|
5
|
+
# - section 9.6 Rule
|
6
|
+
class Rule < Declaration
|
7
|
+
include Identifier
|
8
|
+
|
9
|
+
model_attr_accessor :applies_to, 'Array<Reference>'
|
10
|
+
model_attr_accessor :types, 'Array<Type>'
|
11
|
+
model_attr_accessor :entities, 'Array<Entity>'
|
12
|
+
model_attr_accessor :subtype_constraints, 'Array<SubtypeConstraint>'
|
13
|
+
model_attr_accessor :functions, 'Array<Function>'
|
14
|
+
model_attr_accessor :procedures, 'Array<Procedure>'
|
15
|
+
model_attr_accessor :constants, 'Array<Constant>'
|
16
|
+
model_attr_accessor :variables, 'Array<Variable>'
|
17
|
+
model_attr_accessor :statements, 'Array<Statement>'
|
18
|
+
model_attr_accessor :where_rules, 'Array<WhereRule>'
|
19
|
+
model_attr_accessor :informal_propositions, 'Array<RemarkItem>'
|
20
|
+
|
21
|
+
# @param [Hash] options
|
22
|
+
# @option (see Identifier#initialize_identifier)
|
23
|
+
# @option options [Array<Reference>] :applies_to
|
24
|
+
# @option options [Array<Type>] :types
|
25
|
+
# @option options [Array<Entity>] :entities
|
26
|
+
# @option options [Array<SubtypeConstraint>] :subtype_constraints
|
27
|
+
# @option options [Array<Function>] :functions
|
28
|
+
# @option options [Array<Procedure>] :procedures
|
29
|
+
# @option options [Array<Constant>] :constants
|
30
|
+
# @option options [Array<Variable>] :variables
|
31
|
+
# @option options [Array<Statement>] :statements
|
32
|
+
# @option options [Array<WhereRule>] :where_rules
|
33
|
+
# @option options [Array<RemarkItem>] :informal_propositions
|
34
|
+
def initialize(options = {})
|
35
|
+
initialize_identifier(options)
|
36
|
+
|
37
|
+
@applies_to = options[:applies_to] || []
|
38
|
+
@types = options[:types] || []
|
39
|
+
@entities = options[:entities] || []
|
40
|
+
@subtype_constraints = options[:subtype_constraints] || []
|
41
|
+
@functions = options[:functions] || []
|
42
|
+
@procedures = options[:procedures] || []
|
43
|
+
@constants = options[:constants] || []
|
44
|
+
@variables = options[:variables] || []
|
45
|
+
@statements = options[:statements] || []
|
46
|
+
@where_rules = options[:where_rules] || []
|
47
|
+
@informal_propositions = options[:informal_propositions] || []
|
48
|
+
|
49
|
+
super
|
50
|
+
end
|
51
|
+
|
52
|
+
# @return [Array<Declaration>]
|
53
|
+
def children
|
54
|
+
[
|
55
|
+
*types,
|
56
|
+
*types.flat_map{|x| x.enumeration_items},
|
57
|
+
*entities,
|
58
|
+
*subtype_constraints,
|
59
|
+
*functions,
|
60
|
+
*procedures,
|
61
|
+
*constants,
|
62
|
+
*variables,
|
63
|
+
*where_rules,
|
64
|
+
*informal_propositions,
|
65
|
+
*remark_items
|
66
|
+
]
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,117 @@
|
|
1
|
+
module Expressir
|
2
|
+
module Model
|
3
|
+
module Declarations
|
4
|
+
# Specified in ISO 10303-11:2004
|
5
|
+
# - section 9.3 Schema
|
6
|
+
class Schema < Declaration
|
7
|
+
model_attr_accessor :file, 'String'
|
8
|
+
|
9
|
+
include Identifier
|
10
|
+
|
11
|
+
model_attr_accessor :version, 'SchemaVersion'
|
12
|
+
model_attr_accessor :interfaces, 'Array<Interface>'
|
13
|
+
model_attr_accessor :constants, 'Array<Constant>'
|
14
|
+
model_attr_accessor :types, 'Array<Type>'
|
15
|
+
model_attr_accessor :entities, 'Array<Entity>'
|
16
|
+
model_attr_accessor :subtype_constraints, 'Array<SubtypeConstraint>'
|
17
|
+
model_attr_accessor :functions, 'Array<Function>'
|
18
|
+
model_attr_accessor :rules, 'Array<Rule>'
|
19
|
+
model_attr_accessor :procedures, 'Array<Procedure>'
|
20
|
+
|
21
|
+
# @param [Hash] options
|
22
|
+
# @option options [String] :file
|
23
|
+
# @option (see Identifier#initialize_identifier)
|
24
|
+
# @option options [SchemaVersion] :version
|
25
|
+
# @option options [Array<Interface>] :interfaces
|
26
|
+
# @option options [Array<Constant>] :constants
|
27
|
+
# @option options [Array<Type>] :types
|
28
|
+
# @option options [Array<Entity>] :entities
|
29
|
+
# @option options [Array<SubtypeConstraint>] :subtype_constraints
|
30
|
+
# @option options [Array<Function>] :functions
|
31
|
+
# @option options [Array<Rule>] :rules
|
32
|
+
# @option options [Array<Procedure>] :procedures
|
33
|
+
def initialize(options = {})
|
34
|
+
@file = options[:file]
|
35
|
+
|
36
|
+
initialize_identifier(options)
|
37
|
+
|
38
|
+
@version = options[:version]
|
39
|
+
@interfaces = options[:interfaces] || []
|
40
|
+
@constants = options[:constants] || []
|
41
|
+
@types = options[:types] || []
|
42
|
+
@entities = options[:entities] || []
|
43
|
+
@subtype_constraints = options[:subtype_constraints] || []
|
44
|
+
@functions = options[:functions] || []
|
45
|
+
@rules = options[:rules] || []
|
46
|
+
@procedures = options[:procedures] || []
|
47
|
+
|
48
|
+
super
|
49
|
+
end
|
50
|
+
|
51
|
+
# @return [Array<Declaration>]
|
52
|
+
def safe_children
|
53
|
+
[
|
54
|
+
*constants,
|
55
|
+
*types,
|
56
|
+
*types.flat_map{|x| x.enumeration_items},
|
57
|
+
*entities,
|
58
|
+
*subtype_constraints,
|
59
|
+
*functions,
|
60
|
+
*rules,
|
61
|
+
*procedures,
|
62
|
+
*remark_items
|
63
|
+
]
|
64
|
+
end
|
65
|
+
|
66
|
+
# @return [Array<Declaration>]
|
67
|
+
def children
|
68
|
+
[
|
69
|
+
*interfaced_items,
|
70
|
+
*safe_children
|
71
|
+
]
|
72
|
+
end
|
73
|
+
|
74
|
+
private
|
75
|
+
|
76
|
+
# @param [String] id
|
77
|
+
# @param [ModelElement] base_item
|
78
|
+
# @return [InterfacedItem]
|
79
|
+
def create_interfaced_item(id, base_item)
|
80
|
+
interfaced_item = InterfacedItem.new(
|
81
|
+
id: id
|
82
|
+
)
|
83
|
+
interfaced_item.base_item = base_item # skip overriding parent
|
84
|
+
interfaced_item.parent = self
|
85
|
+
interfaced_item
|
86
|
+
end
|
87
|
+
|
88
|
+
# @return [Array<InterfacedItem>]
|
89
|
+
def interfaced_items
|
90
|
+
return [] unless parent
|
91
|
+
|
92
|
+
interfaces.flat_map do |interface|
|
93
|
+
schema = parent.children_by_id[interface.schema.id.downcase]
|
94
|
+
if schema
|
95
|
+
schema_safe_children = schema.safe_children
|
96
|
+
schema_safe_children_by_id = schema_safe_children.select{|x| x.id}.map{|x| [x.id.downcase, x]}.to_h
|
97
|
+
if interface.items.length > 0
|
98
|
+
interface.items.map do |interface_item|
|
99
|
+
base_item = schema_safe_children_by_id[interface_item.ref.id.downcase]
|
100
|
+
if base_item
|
101
|
+
id = interface_item.id || base_item.id
|
102
|
+
create_interfaced_item(id, base_item)
|
103
|
+
end
|
104
|
+
end
|
105
|
+
else
|
106
|
+
schema_safe_children.map do |base_item|
|
107
|
+
id = base_item.id
|
108
|
+
create_interfaced_item(id, base_item)
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end.select{|x| x}
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Expressir
|
2
|
+
module Model
|
3
|
+
module Declarations
|
4
|
+
# Specified in ISO 10303-11:2004
|
5
|
+
# - section 9.3 Schema
|
6
|
+
class SchemaVersion < ModelElement
|
7
|
+
model_attr_accessor :value, 'String'
|
8
|
+
model_attr_accessor :items, 'Array<SchemaVersionItem>'
|
9
|
+
|
10
|
+
# @param [Hash] options
|
11
|
+
# @option options [String] :value
|
12
|
+
# @option options [Array<SchemaVersionItem>] :items
|
13
|
+
def initialize(options = {})
|
14
|
+
@value = options[:value]
|
15
|
+
@items = options[:items] || []
|
16
|
+
|
17
|
+
super
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Expressir
|
2
|
+
module Model
|
3
|
+
module Declarations
|
4
|
+
# Specified in ISO 10303-11:2004
|
5
|
+
# - section 9.3 Schema
|
6
|
+
class SchemaVersionItem < ModelElement
|
7
|
+
model_attr_accessor :name, 'String'
|
8
|
+
model_attr_accessor :value, 'String'
|
9
|
+
|
10
|
+
# @param [Hash] options
|
11
|
+
# @option options [String] :name
|
12
|
+
# @option options [String] :value
|
13
|
+
def initialize(options = {})
|
14
|
+
@name = options[:name]
|
15
|
+
@value = options[:value]
|
16
|
+
|
17
|
+
super
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module Expressir
|
2
|
+
module Model
|
3
|
+
module Declarations
|
4
|
+
# Specified in ISO 10303-11:2004
|
5
|
+
# - section 9.7 Subtype constraints
|
6
|
+
class SubtypeConstraint < Declaration
|
7
|
+
include Identifier
|
8
|
+
|
9
|
+
model_attr_accessor :applies_to, 'Reference'
|
10
|
+
model_attr_accessor :abstract, 'Boolean'
|
11
|
+
model_attr_accessor :total_over, 'Array<Reference>'
|
12
|
+
model_attr_accessor :supertype_expression, 'SupertypeExpression'
|
13
|
+
|
14
|
+
# @param [Hash] options
|
15
|
+
# @option (see Identifier#initialize_identifier)
|
16
|
+
# @option options [Reference] :applies_to
|
17
|
+
# @option options [Boolean] :abstract
|
18
|
+
# @option options [Array<Reference>] :total_over
|
19
|
+
# @option options [SupertypeExpression] :supertype_expression
|
20
|
+
def initialize(options = {})
|
21
|
+
initialize_identifier(options)
|
22
|
+
|
23
|
+
@applies_to = options[:applies_to]
|
24
|
+
@abstract = options[:abstract]
|
25
|
+
@total_over = options[:total_over] || []
|
26
|
+
@supertype_expression = options[:supertype_expression]
|
27
|
+
|
28
|
+
super
|
29
|
+
end
|
30
|
+
|
31
|
+
# @return [Array<Declaration>]
|
32
|
+
def children
|
33
|
+
[
|
34
|
+
*remark_items
|
35
|
+
]
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module Expressir
|
2
|
+
module Model
|
3
|
+
module Declarations
|
4
|
+
# Specified in ISO 10303-11:2004
|
5
|
+
# - section 9.1 Type declaration
|
6
|
+
class Type < Declaration
|
7
|
+
include Identifier
|
8
|
+
|
9
|
+
model_attr_accessor :underlying_type, 'DataType'
|
10
|
+
model_attr_accessor :where_rules, 'Array<WhereRule>'
|
11
|
+
model_attr_accessor :informal_propositions, 'Array<RemarkItem>'
|
12
|
+
|
13
|
+
# @param [Hash] options
|
14
|
+
# @option (see Identifier#initialize_identifier)
|
15
|
+
# @option options [DataType] :underlying_type
|
16
|
+
# @option options [Array<WhereRule>] :where_rules
|
17
|
+
# @option options [Array<RemarkItem>] :informal_propositions
|
18
|
+
def initialize(options = {})
|
19
|
+
initialize_identifier(options)
|
20
|
+
|
21
|
+
@underlying_type = options[:underlying_type]
|
22
|
+
@where_rules = options[:where_rules] || []
|
23
|
+
@informal_propositions = options[:informal_propositions] || []
|
24
|
+
|
25
|
+
super
|
26
|
+
end
|
27
|
+
|
28
|
+
# @return [Array<DataTypes::EnumerationItem>]
|
29
|
+
def enumeration_items
|
30
|
+
underlying_type.is_a?(DataTypes::Enumeration) ? underlying_type.items : []
|
31
|
+
end
|
32
|
+
|
33
|
+
# @return [Array<Declaration>]
|
34
|
+
def children
|
35
|
+
[
|
36
|
+
*enumeration_items,
|
37
|
+
*where_rules,
|
38
|
+
*informal_propositions,
|
39
|
+
*remark_items
|
40
|
+
]
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Expressir
|
2
|
+
module Model
|
3
|
+
module Declarations
|
4
|
+
# Specified in ISO 10303-11:2004
|
5
|
+
# - section 9.2.2.1 Uniqueness rule
|
6
|
+
class UniqueRule < Declaration
|
7
|
+
include Identifier
|
8
|
+
|
9
|
+
model_attr_accessor :attributes, 'Reference'
|
10
|
+
|
11
|
+
# @param [Hash] options
|
12
|
+
# @option (see Identifier#initialize_identifier)
|
13
|
+
# @option options [Reference] :attributes
|
14
|
+
def initialize(options = {})
|
15
|
+
initialize_identifier(options)
|
16
|
+
|
17
|
+
@attributes = options[:attributes] || []
|
18
|
+
|
19
|
+
super
|
20
|
+
end
|
21
|
+
|
22
|
+
# @return [Array<Declaration>]
|
23
|
+
def children
|
24
|
+
[
|
25
|
+
*remark_items
|
26
|
+
]
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module Expressir
|
2
|
+
module Model
|
3
|
+
module Declarations
|
4
|
+
# Specified in ISO 10303-11:2004
|
5
|
+
# - section 9.5.4 Local variables
|
6
|
+
class Variable < Declaration
|
7
|
+
include Identifier
|
8
|
+
|
9
|
+
model_attr_accessor :type, 'DataType'
|
10
|
+
model_attr_accessor :expression, 'Expression'
|
11
|
+
|
12
|
+
# @param [Hash] options
|
13
|
+
# @option (see Identifier#initialize_identifier)
|
14
|
+
# @option options [DataType] :type
|
15
|
+
# @option options [Expression] :expression
|
16
|
+
def initialize(options = {})
|
17
|
+
initialize_identifier(options)
|
18
|
+
|
19
|
+
@type = options[:type]
|
20
|
+
@expression = options[:expression]
|
21
|
+
|
22
|
+
super
|
23
|
+
end
|
24
|
+
|
25
|
+
# @return [Array<Declaration>]
|
26
|
+
def children
|
27
|
+
[
|
28
|
+
*remark_items
|
29
|
+
]
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Expressir
|
2
|
+
module Model
|
3
|
+
module Declarations
|
4
|
+
# Specified in ISO 10303-11:2004
|
5
|
+
# - section 9.2.2.2 Domain rules (WHERE clause)
|
6
|
+
class WhereRule < Declaration
|
7
|
+
include Identifier
|
8
|
+
|
9
|
+
model_attr_accessor :expression, 'Expression'
|
10
|
+
|
11
|
+
# @param [Hash] options
|
12
|
+
# @option (see Identifier#initialize_identifier)
|
13
|
+
# @option options [Expression] :expression
|
14
|
+
def initialize(options = {})
|
15
|
+
initialize_identifier(options)
|
16
|
+
|
17
|
+
@expression = options[:expression]
|
18
|
+
|
19
|
+
super
|
20
|
+
end
|
21
|
+
|
22
|
+
# @return [Array<Declaration>]
|
23
|
+
def children
|
24
|
+
[
|
25
|
+
*remark_items
|
26
|
+
]
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Expressir
|
2
|
+
module Model
|
3
|
+
module Expressions
|
4
|
+
# Specified in ISO 10303-11:2004
|
5
|
+
# - section 12.9 Aggregate initializer
|
6
|
+
class AggregateInitializer < Expression
|
7
|
+
model_attr_accessor :items, 'Array<AggregateInitializerItem>'
|
8
|
+
|
9
|
+
# @param [Hash] options
|
10
|
+
# @option options [Array<AggregateInitializerItem>] :items
|
11
|
+
def initialize(options = {})
|
12
|
+
@items = options[:items] || []
|
13
|
+
|
14
|
+
super
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Expressir
|
2
|
+
module Model
|
3
|
+
module Expressions
|
4
|
+
# Specified in ISO 10303-11:2004
|
5
|
+
# - section 12.9 Aggregate initializer
|
6
|
+
class AggregateInitializerItem < Expression
|
7
|
+
model_attr_accessor :expression, 'Expression'
|
8
|
+
model_attr_accessor :repetition, 'Expression'
|
9
|
+
|
10
|
+
# @param [Hash] options
|
11
|
+
# @option options [Expression] :expression
|
12
|
+
# @option options [Expression] :repetition
|
13
|
+
def initialize(options = {})
|
14
|
+
@expression = options[:expression]
|
15
|
+
@repetition = options[:repetition]
|
16
|
+
|
17
|
+
super
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|