expressir 1.0.0-x64-mingw32 → 1.1.0-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/.yardopts +11 -0
- data/Rakefile +3 -0
- data/expressir.gemspec +3 -0
- data/lib/expressir/express/2.4/express_parser.so +0 -0
- data/lib/expressir/express/2.5/express_parser.so +0 -0
- data/lib/expressir/express/2.6/express_parser.so +0 -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/cache.rb +16 -10
- data/lib/expressir/express/formatter.rb +231 -180
- data/lib/expressir/express/hyperlink_formatter.rb +15 -1
- data/lib/expressir/express/model_visitor.rb +1 -0
- data/lib/expressir/express/parser.rb +16 -10
- data/lib/expressir/express/resolve_references_model_visitor.rb +7 -5
- data/lib/expressir/express/schema_head_formatter.rb +16 -2
- data/lib/expressir/express/visitor.rb +280 -254
- data/lib/expressir/model.rb +52 -45
- data/lib/expressir/model/cache.rb +6 -2
- 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 +6 -2
- data/lib/expressir/model/expressions/aggregate_initializer_item.rb +22 -0
- data/lib/expressir/model/expressions/binary_expression.rb +16 -5
- data/lib/expressir/model/expressions/entity_constructor.rb +8 -3
- data/lib/expressir/model/expressions/function_call.rb +22 -0
- data/lib/expressir/model/expressions/interval.rb +17 -6
- data/lib/expressir/model/expressions/query_expression.rb +11 -7
- data/lib/expressir/model/expressions/unary_expression.rb +9 -3
- data/lib/expressir/model/identifier.rb +26 -4
- data/lib/expressir/model/literal.rb +9 -0
- data/lib/expressir/model/literals/binary.rb +6 -2
- data/lib/expressir/model/literals/integer.rb +6 -2
- data/lib/expressir/model/literals/logical.rb +6 -2
- data/lib/expressir/model/literals/real.rb +6 -2
- data/lib/expressir/model/literals/string.rb +8 -3
- data/lib/expressir/model/model_element.rb +63 -37
- 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 +7 -1
- data/lib/expressir/model/statement.rb +9 -0
- data/lib/expressir/model/statements/alias.rb +11 -7
- data/lib/expressir/model/statements/assignment.rb +8 -3
- data/lib/expressir/model/statements/case.rb +10 -4
- data/lib/expressir/model/statements/case_action.rb +7 -2
- data/lib/expressir/model/statements/compound.rb +6 -2
- data/lib/expressir/model/statements/escape.rb +3 -1
- data/lib/expressir/model/statements/if.rb +10 -4
- data/lib/expressir/model/statements/null.rb +3 -1
- data/lib/expressir/model/statements/procedure_call.rb +22 -0
- data/lib/expressir/model/statements/repeat.rb +19 -11
- data/lib/expressir/model/statements/return.rb +6 -2
- data/lib/expressir/model/statements/skip.rb +3 -1
- 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/version.rb +1 -1
- data/spec/expressir/model/model_element_spec.rb +131 -131
- data/spec/syntax/multiple.yaml +68 -68
- data/spec/syntax/remark.yaml +64 -64
- data/spec/syntax/single.yaml +5 -5
- data/spec/syntax/single_formatted.yaml +5 -5
- data/spec/syntax/syntax.yaml +1003 -1030
- metadata +97 -45
- data/lib/expressir/model/attribute.rb +0 -38
- data/lib/expressir/model/constant.rb +0 -28
- data/lib/expressir/model/entity.rb +0 -42
- data/lib/expressir/model/enumeration_item.rb +0 -22
- data/lib/expressir/model/expressions/aggregate_item.rb +0 -17
- data/lib/expressir/model/expressions/attribute_reference.rb +0 -17
- data/lib/expressir/model/expressions/call.rb +0 -17
- data/lib/expressir/model/expressions/group_reference.rb +0 -17
- data/lib/expressir/model/expressions/index_reference.rb +0 -19
- data/lib/expressir/model/expressions/simple_reference.rb +0 -19
- data/lib/expressir/model/function.rb +0 -57
- data/lib/expressir/model/interface.rb +0 -20
- data/lib/expressir/model/interface_item.rb +0 -15
- data/lib/expressir/model/interfaced_item.rb +0 -27
- data/lib/expressir/model/parameter.rb +0 -28
- data/lib/expressir/model/procedure.rb +0 -55
- data/lib/expressir/model/remark_item.rb +0 -15
- data/lib/expressir/model/rule.rb +0 -60
- data/lib/expressir/model/schema.rb +0 -100
- data/lib/expressir/model/schema_version.rb +0 -15
- data/lib/expressir/model/schema_version_item.rb +0 -15
- data/lib/expressir/model/statements/call.rb +0 -17
- data/lib/expressir/model/subtype_constraint.rb +0 -32
- data/lib/expressir/model/type.rb +0 -37
- data/lib/expressir/model/types/aggregate.rb +0 -28
- data/lib/expressir/model/types/array.rb +0 -23
- data/lib/expressir/model/types/bag.rb +0 -19
- data/lib/expressir/model/types/binary.rb +0 -17
- data/lib/expressir/model/types/boolean.rb +0 -8
- data/lib/expressir/model/types/enumeration.rb +0 -19
- data/lib/expressir/model/types/generic.rb +0 -24
- data/lib/expressir/model/types/generic_entity.rb +0 -24
- data/lib/expressir/model/types/integer.rb +0 -8
- data/lib/expressir/model/types/list.rb +0 -21
- data/lib/expressir/model/types/logical.rb +0 -8
- data/lib/expressir/model/types/number.rb +0 -8
- data/lib/expressir/model/types/real.rb +0 -15
- data/lib/expressir/model/types/select.rb +0 -21
- data/lib/expressir/model/types/set.rb +0 -19
- data/lib/expressir/model/types/string.rb +0 -17
- data/lib/expressir/model/unique_rule.rb +0 -26
- data/lib/expressir/model/variable.rb +0 -28
- data/lib/expressir/model/where_rule.rb +0 -26
@@ -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
|