expressir 1.2.5-x64-mingw-ucrt

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.
Files changed (142) hide show
  1. checksums.yaml +7 -0
  2. data/.cross_rubies +15 -0
  3. data/.github/workflows/rake.yml +300 -0
  4. data/.github/workflows/release.yml +120 -0
  5. data/.gitignore +23 -0
  6. data/.gitmodules +6 -0
  7. data/.hound.yml +3 -0
  8. data/.rspec +2 -0
  9. data/.rubocop.yml +17 -0
  10. data/.yardopts +11 -0
  11. data/Gemfile +4 -0
  12. data/README.adoc +147 -0
  13. data/Rakefile +17 -0
  14. data/bin/console +11 -0
  15. data/bin/rspec +29 -0
  16. data/bin/setup +8 -0
  17. data/docs/development.md +90 -0
  18. data/exe/expressir +22 -0
  19. data/exe/format +18 -0
  20. data/exe/format-test +81 -0
  21. data/exe/generate-parser +51 -0
  22. data/expressir.gemspec +48 -0
  23. data/lib/expressir/cli/ui.rb +36 -0
  24. data/lib/expressir/cli.rb +21 -0
  25. data/lib/expressir/config.rb +23 -0
  26. data/lib/expressir/express/3.1/express_parser.so +0 -0
  27. data/lib/expressir/express/cache.rb +51 -0
  28. data/lib/expressir/express/formatter.rb +1608 -0
  29. data/lib/expressir/express/hyperlink_formatter.rb +36 -0
  30. data/lib/expressir/express/model_visitor.rb +24 -0
  31. data/lib/expressir/express/parser.rb +84 -0
  32. data/lib/expressir/express/resolve_references_model_visitor.rb +31 -0
  33. data/lib/expressir/express/schema_head_formatter.rb +23 -0
  34. data/lib/expressir/express/visitor.rb +2578 -0
  35. data/lib/expressir/model/cache.rb +17 -0
  36. data/lib/expressir/model/data_type.rb +9 -0
  37. data/lib/expressir/model/data_types/aggregate.rb +31 -0
  38. data/lib/expressir/model/data_types/array.rb +31 -0
  39. data/lib/expressir/model/data_types/bag.rb +25 -0
  40. data/lib/expressir/model/data_types/binary.rb +22 -0
  41. data/lib/expressir/model/data_types/boolean.rb +10 -0
  42. data/lib/expressir/model/data_types/enumeration.rb +25 -0
  43. data/lib/expressir/model/data_types/enumeration_item.rb +26 -0
  44. data/lib/expressir/model/data_types/generic.rb +26 -0
  45. data/lib/expressir/model/data_types/generic_entity.rb +26 -0
  46. data/lib/expressir/model/data_types/integer.rb +10 -0
  47. data/lib/expressir/model/data_types/list.rb +28 -0
  48. data/lib/expressir/model/data_types/logical.rb +10 -0
  49. data/lib/expressir/model/data_types/number.rb +10 -0
  50. data/lib/expressir/model/data_types/real.rb +19 -0
  51. data/lib/expressir/model/data_types/select.rb +28 -0
  52. data/lib/expressir/model/data_types/set.rb +25 -0
  53. data/lib/expressir/model/data_types/string.rb +22 -0
  54. data/lib/expressir/model/declaration.rb +9 -0
  55. data/lib/expressir/model/declarations/attribute.rb +47 -0
  56. data/lib/expressir/model/declarations/constant.rb +34 -0
  57. data/lib/expressir/model/declarations/entity.rb +53 -0
  58. data/lib/expressir/model/declarations/function.rb +67 -0
  59. data/lib/expressir/model/declarations/interface.rb +28 -0
  60. data/lib/expressir/model/declarations/interface_item.rb +23 -0
  61. data/lib/expressir/model/declarations/interfaced_item.rb +37 -0
  62. data/lib/expressir/model/declarations/parameter.rb +34 -0
  63. data/lib/expressir/model/declarations/procedure.rb +64 -0
  64. data/lib/expressir/model/declarations/remark_item.rb +21 -0
  65. data/lib/expressir/model/declarations/rule.rb +71 -0
  66. data/lib/expressir/model/declarations/schema.rb +117 -0
  67. data/lib/expressir/model/declarations/schema_version.rb +22 -0
  68. data/lib/expressir/model/declarations/schema_version_item.rb +22 -0
  69. data/lib/expressir/model/declarations/subtype_constraint.rb +40 -0
  70. data/lib/expressir/model/declarations/type.rb +45 -0
  71. data/lib/expressir/model/declarations/unique_rule.rb +31 -0
  72. data/lib/expressir/model/declarations/variable.rb +34 -0
  73. data/lib/expressir/model/declarations/where_rule.rb +31 -0
  74. data/lib/expressir/model/expression.rb +9 -0
  75. data/lib/expressir/model/expressions/aggregate_initializer.rb +19 -0
  76. data/lib/expressir/model/expressions/aggregate_initializer_item.rb +22 -0
  77. data/lib/expressir/model/expressions/binary_expression.rb +53 -0
  78. data/lib/expressir/model/expressions/entity_constructor.rb +22 -0
  79. data/lib/expressir/model/expressions/function_call.rb +22 -0
  80. data/lib/expressir/model/expressions/interval.rb +34 -0
  81. data/lib/expressir/model/expressions/query_expression.rb +35 -0
  82. data/lib/expressir/model/expressions/unary_expression.rb +27 -0
  83. data/lib/expressir/model/identifier.rb +34 -0
  84. data/lib/expressir/model/literal.rb +9 -0
  85. data/lib/expressir/model/literals/binary.rb +19 -0
  86. data/lib/expressir/model/literals/integer.rb +19 -0
  87. data/lib/expressir/model/literals/logical.rb +23 -0
  88. data/lib/expressir/model/literals/real.rb +19 -0
  89. data/lib/expressir/model/literals/string.rb +22 -0
  90. data/lib/expressir/model/model_element.rb +208 -0
  91. data/lib/expressir/model/reference.rb +9 -0
  92. data/lib/expressir/model/references/attribute_reference.rb +22 -0
  93. data/lib/expressir/model/references/group_reference.rb +22 -0
  94. data/lib/expressir/model/references/index_reference.rb +27 -0
  95. data/lib/expressir/model/references/simple_reference.rb +24 -0
  96. data/lib/expressir/model/repository.rb +23 -0
  97. data/lib/expressir/model/statement.rb +9 -0
  98. data/lib/expressir/model/statements/alias.rb +35 -0
  99. data/lib/expressir/model/statements/assignment.rb +22 -0
  100. data/lib/expressir/model/statements/case.rb +25 -0
  101. data/lib/expressir/model/statements/case_action.rb +22 -0
  102. data/lib/expressir/model/statements/compound.rb +19 -0
  103. data/lib/expressir/model/statements/escape.rb +10 -0
  104. data/lib/expressir/model/statements/if.rb +25 -0
  105. data/lib/expressir/model/statements/null.rb +10 -0
  106. data/lib/expressir/model/statements/procedure_call.rb +22 -0
  107. data/lib/expressir/model/statements/repeat.rb +47 -0
  108. data/lib/expressir/model/statements/return.rb +19 -0
  109. data/lib/expressir/model/statements/skip.rb +10 -0
  110. data/lib/expressir/model/supertype_expression.rb +9 -0
  111. data/lib/expressir/model/supertype_expressions/binary_supertype_expression.rb +29 -0
  112. data/lib/expressir/model/supertype_expressions/oneof_supertype_expression.rb +19 -0
  113. data/lib/expressir/model.rb +79 -0
  114. data/lib/expressir/version.rb +3 -0
  115. data/lib/expressir.rb +20 -0
  116. data/rakelib/antlr4-native.rake +63 -0
  117. data/rakelib/cross-ruby.rake +367 -0
  118. data/spec/acceptance/version_spec.rb +17 -0
  119. data/spec/expressir/express/cache_spec.rb +67 -0
  120. data/spec/expressir/express/formatter_spec.rb +135 -0
  121. data/spec/expressir/express/parser_spec.rb +104 -0
  122. data/spec/expressir/model/model_element_spec.rb +274 -0
  123. data/spec/spec_helper.rb +17 -0
  124. data/spec/support/console_helper.rb +29 -0
  125. data/spec/syntax/multiple.exp +23 -0
  126. data/spec/syntax/multiple.yaml +198 -0
  127. data/spec/syntax/multiple_formatted.exp +71 -0
  128. data/spec/syntax/multiple_hyperlink_formatted.exp +71 -0
  129. data/spec/syntax/multiple_schema_head_hyperlink_formatted.exp +13 -0
  130. data/spec/syntax/remark.exp +191 -0
  131. data/spec/syntax/remark.yaml +466 -0
  132. data/spec/syntax/remark_formatted.exp +227 -0
  133. data/spec/syntax/single.exp +4 -0
  134. data/spec/syntax/single.yaml +18 -0
  135. data/spec/syntax/single_formatted.exp +10 -0
  136. data/spec/syntax/single_formatted.yaml +36 -0
  137. data/spec/syntax/syntax.exp +333 -0
  138. data/spec/syntax/syntax.yaml +3509 -0
  139. data/spec/syntax/syntax_formatted.exp +902 -0
  140. data/spec/syntax/syntax_hyperlink_formatted.exp +902 -0
  141. data/spec/syntax/syntax_schema_head_formatted.exp +18 -0
  142. metadata +387 -0
@@ -0,0 +1,17 @@
1
+ module Expressir
2
+ module Model
3
+ # Cache content object with Expressir version
4
+ class Cache < ModelElement
5
+ model_attr_accessor :version, 'String'
6
+ model_attr_accessor :content, 'ModelElement'
7
+
8
+ # @param [Hash] options
9
+ # @option options [String] :version
10
+ # @option options [ModelElement] :content
11
+ def initialize(options = {})
12
+ @version = options[:version]
13
+ @content = options[:content]
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,9 @@
1
+ module Expressir
2
+ module Model
3
+ # Specified in ISO 10303-11:2004
4
+ # - section 8 Data types
5
+ # @abstract
6
+ class DataType < ModelElement
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,31 @@
1
+ module Expressir
2
+ module Model
3
+ module DataTypes
4
+ # Specified in ISO 10303-11:2004
5
+ # - section 9.5.3.1 Aggregate data type
6
+ class Aggregate < DataType
7
+ include Identifier
8
+
9
+ model_attr_accessor :base_type, 'Type'
10
+
11
+ # @param [Hash] options
12
+ # @option (see Identifier#initialize_identifier)
13
+ # @option options [Type] :base_type
14
+ def initialize(options = {})
15
+ initialize_identifier(options)
16
+
17
+ @base_type = options[:base_type]
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,31 @@
1
+ module Expressir
2
+ module Model
3
+ module DataTypes
4
+ # Specified in ISO 10303-11:2004
5
+ # - section 8.2.1 Array data type
6
+ class Array < DataType
7
+ model_attr_accessor :bound1, 'Expression'
8
+ model_attr_accessor :bound2, 'Expression'
9
+ model_attr_accessor :optional, '::Boolean'
10
+ model_attr_accessor :unique, '::Boolean'
11
+ model_attr_accessor :base_type, 'DataType'
12
+
13
+ # @param [Hash] options
14
+ # @option options [Expression] :bound1
15
+ # @option options [Expression] :bound2
16
+ # @option options [::Boolean] :optional
17
+ # @option options [::Boolean] :unique
18
+ # @option options [DataType] :base_type
19
+ def initialize(options = {})
20
+ @bound1 = options[:bound1]
21
+ @bound2 = options[:bound2]
22
+ @optional = options[:optional]
23
+ @unique = options[:unique]
24
+ @base_type = options[:base_type]
25
+
26
+ super
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,25 @@
1
+ module Expressir
2
+ module Model
3
+ module DataTypes
4
+ # Specified in ISO 10303-11:2004
5
+ # - section 8.2.3 Bag data type
6
+ class Bag < DataType
7
+ model_attr_accessor :bound1, 'Expression'
8
+ model_attr_accessor :bound2, 'Expression'
9
+ model_attr_accessor :base_type, 'DataType'
10
+
11
+ # @param [Hash] options
12
+ # @option options [Expression] :bound1
13
+ # @option options [Expression] :bound2
14
+ # @option options [DataType] :base_type
15
+ def initialize(options = {})
16
+ @bound1 = options[:bound1]
17
+ @bound2 = options[:bound2]
18
+ @base_type = options[:base_type]
19
+
20
+ super
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,22 @@
1
+ module Expressir
2
+ module Model
3
+ module DataTypes
4
+ # Specified in ISO 10303-11:2004
5
+ # - section 8.1.7 Binary data type
6
+ class Binary < DataType
7
+ model_attr_accessor :width, 'Expression'
8
+ model_attr_accessor :fixed, '::Boolean'
9
+
10
+ # @param [Hash] options
11
+ # @option options [Expression] :width
12
+ # @option options [::Boolean] :fixed
13
+ def initialize(options = {})
14
+ @width = options[:width]
15
+ @fixed = options[:fixed]
16
+
17
+ super
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,10 @@
1
+ module Expressir
2
+ module Model
3
+ module DataTypes
4
+ # Specified in ISO 10303-11:2004
5
+ # - section 8.1.5 Boolean data type
6
+ class Boolean < DataType
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,25 @@
1
+ module Expressir
2
+ module Model
3
+ module DataTypes
4
+ # Specified in ISO 10303-11:2004
5
+ # - section 8.4.1 Enumeration data type
6
+ class Enumeration < DataType
7
+ model_attr_accessor :extensible, '::Boolean'
8
+ model_attr_accessor :based_on, 'Reference'
9
+ model_attr_accessor :items, '::Array<EnumerationItem>'
10
+
11
+ # @param [Hash] options
12
+ # @option options [::Boolean] :extensible
13
+ # @option options [Reference] :based_on
14
+ # @option options [::Array<EnumerationItem>] :items
15
+ def initialize(options = {})
16
+ @extensible = options[:extensible]
17
+ @based_on = options[:based_on]
18
+ @items = options[:items] || []
19
+
20
+ super
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,26 @@
1
+ module Expressir
2
+ module Model
3
+ module DataTypes
4
+ # Specified in ISO 10303-11:2004
5
+ # - section 8.4.1 Enumeration data type
6
+ class EnumerationItem < ModelElement
7
+ include Identifier
8
+
9
+ # @param [Hash] options
10
+ # @option (see Identifier#initialize_identifier)
11
+ def initialize(options = {})
12
+ initialize_identifier(options)
13
+
14
+ super
15
+ end
16
+
17
+ # @return [Array<Declaration>]
18
+ def children
19
+ [
20
+ *remark_items
21
+ ]
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,26 @@
1
+ module Expressir
2
+ module Model
3
+ module DataTypes
4
+ # Specified in ISO 10303-11:2004
5
+ # - section 9.5.3.2 Generic data type
6
+ class Generic < DataType
7
+ include Identifier
8
+
9
+ # @param [Hash] options
10
+ # @option (see Identifier#initialize_identifier)
11
+ def initialize(options = {})
12
+ initialize_identifier(options)
13
+
14
+ super
15
+ end
16
+
17
+ # @return [Array<Declaration>]
18
+ def children
19
+ [
20
+ *remark_items
21
+ ]
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,26 @@
1
+ module Expressir
2
+ module Model
3
+ module DataTypes
4
+ # Specified in ISO 10303-11:2004
5
+ # - section 9.5.3.3 Generic entity data type
6
+ class GenericEntity < DataType
7
+ include Identifier
8
+
9
+ # @param [Hash] options
10
+ # @option (see Identifier#initialize_identifier)
11
+ def initialize(options = {})
12
+ initialize_identifier(options)
13
+
14
+ super
15
+ end
16
+ end
17
+
18
+ # @return [Array<Declaration>]
19
+ def children
20
+ [
21
+ *remark_items
22
+ ]
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,10 @@
1
+ module Expressir
2
+ module Model
3
+ module DataTypes
4
+ # Specified in ISO 10303-11:2004
5
+ # - section 8.1.3 Integer data type
6
+ class Integer < DataType
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,28 @@
1
+ module Expressir
2
+ module Model
3
+ module DataTypes
4
+ # Specified in ISO 10303-11:2004
5
+ # - section 8.2.2 List data type
6
+ class List < DataType
7
+ model_attr_accessor :bound1, 'Expression'
8
+ model_attr_accessor :bound2, 'Expression'
9
+ model_attr_accessor :unique, '::Boolean'
10
+ model_attr_accessor :base_type, 'DataType'
11
+
12
+ # @param [Hash] options
13
+ # @option options [Expression] :bound1
14
+ # @option options [Expression] :bound2
15
+ # @option options [::Boolean] :unique
16
+ # @option options [DataType] :base_type
17
+ def initialize(options = {})
18
+ @bound1 = options[:bound1]
19
+ @bound2 = options[:bound2]
20
+ @unique = options[:unique]
21
+ @base_type = options[:base_type]
22
+
23
+ super
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,10 @@
1
+ module Expressir
2
+ module Model
3
+ module DataTypes
4
+ # Specified in ISO 10303-11:2004
5
+ # - section 8.1.4 Logical data type
6
+ class Logical < DataType
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ module Expressir
2
+ module Model
3
+ module DataTypes
4
+ # Specified in ISO 10303-11:2004
5
+ # - section 8.1.1 Number data type
6
+ class Number < DataType
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,19 @@
1
+ module Expressir
2
+ module Model
3
+ module DataTypes
4
+ # Specified in ISO 10303-11:2004
5
+ # - section 8.1.2 Real data type
6
+ class Real < DataType
7
+ model_attr_accessor :precision, 'Expression'
8
+
9
+ # @param [Hash] options
10
+ # @option options [Expression] :precision
11
+ def initialize(options = {})
12
+ @precision = options[:precision]
13
+
14
+ super
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,28 @@
1
+ module Expressir
2
+ module Model
3
+ module DataTypes
4
+ # Specified in ISO 10303-11:2004
5
+ # - section 8.4.2 Select data type
6
+ class Select < DataType
7
+ model_attr_accessor :extensible, '::Boolean'
8
+ model_attr_accessor :generic_entity, '::Boolean'
9
+ model_attr_accessor :based_on, 'Reference'
10
+ model_attr_accessor :items, '::Array<Reference>'
11
+
12
+ # @param [Hash] options
13
+ # @option options [::Boolean] :extensible
14
+ # @option options [::Boolean] :generic_entity
15
+ # @option options [Reference] :based_on
16
+ # @option options [::Array<Reference>] :items
17
+ def initialize(options = {})
18
+ @extensible = options[:extensible]
19
+ @generic_entity = options[:generic_entity]
20
+ @based_on = options[:based_on]
21
+ @items = options[:items] || []
22
+
23
+ super
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,25 @@
1
+ module Expressir
2
+ module Model
3
+ module DataTypes
4
+ # Specified in ISO 10303-11:2004
5
+ # - section 8.2.4 Set data type
6
+ class Set < DataType
7
+ model_attr_accessor :bound1, 'Expression'
8
+ model_attr_accessor :bound2, 'Expression'
9
+ model_attr_accessor :base_type, 'DataType'
10
+
11
+ # @param [Hash] options
12
+ # @option options [Expression] :bound1
13
+ # @option options [Expression] :bound2
14
+ # @option options [DataType] :base_type
15
+ def initialize(options = {})
16
+ @bound1 = options[:bound1]
17
+ @bound2 = options[:bound2]
18
+ @base_type = options[:base_type]
19
+
20
+ super
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,22 @@
1
+ module Expressir
2
+ module Model
3
+ module DataTypes
4
+ # Specified in ISO 10303-11:2004
5
+ # - section 8.1.6 String data type
6
+ class String < DataType
7
+ model_attr_accessor :width, 'Expression'
8
+ model_attr_accessor :fixed, '::Boolean'
9
+
10
+ # @param [Hash] options
11
+ # @option options [Expression] :width
12
+ # @option options [::Boolean] :fixed
13
+ def initialize(options = {})
14
+ @width = options[:width]
15
+ @fixed = options[:fixed]
16
+
17
+ super
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,9 @@
1
+ module Expressir
2
+ module Model
3
+ # Specified in ISO 10303-11:2004
4
+ # - section 9 Declarations
5
+ # @abstract
6
+ class Declaration < ModelElement
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,47 @@
1
+ module Expressir
2
+ module Model
3
+ module Declarations
4
+ # Specified in ISO 10303-11:2004
5
+ # - section 9.2.1 Attributes
6
+ class Attribute < Declaration
7
+ include Identifier
8
+
9
+ EXPLICIT = :EXPLICIT
10
+ DERIVED = :DERIVED
11
+ INVERSE = :INVERSE
12
+
13
+ model_attr_accessor :kind, ':EXPLICIT, :DERIVED, :INVERSE'
14
+ model_attr_accessor :supertype_attribute, 'Reference'
15
+ model_attr_accessor :optional, 'Boolean'
16
+ model_attr_accessor :type, 'DataType'
17
+ model_attr_accessor :expression, 'Expression'
18
+
19
+ # @param [Hash] options
20
+ # @option (see Identifier#initialize_identifier)
21
+ # @option options [:EXPLICIT, :DERIVED, :INVERSE] :kind
22
+ # @option options [Reference] :supertype_attribute
23
+ # @option options [Boolean] :optional
24
+ # @option options [DataType] :type
25
+ # @option options [Expression] :operand
26
+ def initialize(options = {})
27
+ initialize_identifier(options)
28
+
29
+ @kind = options[:kind]
30
+ @supertype_attribute = options[:supertype_attribute]
31
+ @optional = options[:optional]
32
+ @type = options[:type]
33
+ @expression = options[:expression]
34
+
35
+ super
36
+ end
37
+
38
+ # @return [Array<Declaration>]
39
+ def children
40
+ [
41
+ *remark_items
42
+ ]
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,34 @@
1
+ module Expressir
2
+ module Model
3
+ module Declarations
4
+ # Specified in ISO 10303-11:2004
5
+ # - section 9.4 Constant
6
+ class Constant < 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,53 @@
1
+ module Expressir
2
+ module Model
3
+ module Declarations
4
+ # Specified in ISO 10303-11:2004
5
+ # - section 9.2 Entity declaration
6
+ class Entity < Declaration
7
+ include Identifier
8
+
9
+ model_attr_accessor :abstract, 'Boolean'
10
+ model_attr_accessor :supertype_expression, 'SupertypeExpression'
11
+ model_attr_accessor :subtype_of, 'Array<Reference>'
12
+ model_attr_accessor :attributes, 'Array<Attribute>'
13
+ model_attr_accessor :unique_rules, 'Array<UniqueRule>'
14
+ model_attr_accessor :where_rules, 'Array<WhereRule>'
15
+ model_attr_accessor :informal_propositions, 'Array<RemarkItem>'
16
+
17
+ # @param [Hash] options
18
+ # @option (see Identifier#initialize_identifier)
19
+ # @option options [Boolean] :abstract
20
+ # @option options [SupertypeExpression] :supertype_expression
21
+ # @option options [Array<Reference>] :subtype_of
22
+ # @option options [Array<Attribute>] :attributes
23
+ # @option options [Array<UniqueRule>] :unique_rules
24
+ # @option options [Array<WhereRule>] :where_rules
25
+ # @option options [Array<RemarkItem>] :informal_propositions
26
+ def initialize(options = {})
27
+ initialize_identifier(options)
28
+
29
+ @abstract = options[:abstract]
30
+ @supertype_expression = options[:supertype_expression]
31
+ @subtype_of = options[:subtype_of] || []
32
+ @attributes = options[:attributes] || []
33
+ @unique_rules = options[:unique_rules] || []
34
+ @where_rules = options[:where_rules] || []
35
+ @informal_propositions = options[:informal_propositions] || []
36
+
37
+ super
38
+ end
39
+
40
+ # @return [Array<Declaration>]
41
+ def children
42
+ [
43
+ *attributes,
44
+ *unique_rules,
45
+ *where_rules,
46
+ *informal_propositions,
47
+ *remark_items
48
+ ]
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,67 @@
1
+ module Expressir
2
+ module Model
3
+ module Declarations
4
+ # Specified in ISO 10303-11:2004
5
+ # - section 9.5.1 Function
6
+ class Function < Declaration
7
+ include Identifier
8
+
9
+ model_attr_accessor :parameters, 'Array<Parameter>'
10
+ model_attr_accessor :return_type, 'DataType'
11
+ model_attr_accessor :types, 'Array<Type>'
12
+ model_attr_accessor :entities, 'Array<Entity>'
13
+ model_attr_accessor :subtype_constraints, 'Array<SubtypeConstraint>'
14
+ model_attr_accessor :functions, 'Array<Function>'
15
+ model_attr_accessor :procedures, 'Array<Procedure>'
16
+ model_attr_accessor :constants, 'Array<Constant>'
17
+ model_attr_accessor :variables, 'Array<Variable>'
18
+ model_attr_accessor :statements, 'Array<Statement>'
19
+
20
+ # @param [Hash] options
21
+ # @option (see Identifier#initialize_identifier)
22
+ # @option options [Array<Parameter>] :parameters
23
+ # @option options [DataType] :return_type
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
+ def initialize(options = {})
33
+ initialize_identifier(options)
34
+
35
+ @parameters = options[:parameters] || []
36
+ @return_type = options[:return_type]
37
+ @types = options[:types] || []
38
+ @entities = options[:entities] || []
39
+ @subtype_constraints = options[:subtype_constraints] || []
40
+ @functions = options[:functions] || []
41
+ @procedures = options[:procedures] || []
42
+ @constants = options[:constants] || []
43
+ @variables = options[:variables] || []
44
+ @statements = options[:statements] || []
45
+
46
+ super
47
+ end
48
+
49
+ # @return [Array<Declaration>]
50
+ def children
51
+ [
52
+ *parameters,
53
+ *types,
54
+ *types.flat_map{|x| x.enumeration_items},
55
+ *entities,
56
+ *subtype_constraints,
57
+ *functions,
58
+ *procedures,
59
+ *constants,
60
+ *variables,
61
+ *remark_items
62
+ ]
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,28 @@
1
+ module Expressir
2
+ module Model
3
+ module Declarations
4
+ # Specified in ISO 10303-11:2004
5
+ # - section 11 Interface specification
6
+ class Interface < Declaration
7
+ USE = :USE
8
+ REFERENCE = :REFERENCE
9
+
10
+ model_attr_accessor :kind, ':USE, :REFERENCE'
11
+ model_attr_accessor :schema, 'Reference'
12
+ model_attr_accessor :items, 'Array<InterfaceItem>'
13
+
14
+ # @param [Hash] options
15
+ # @option options [:USE, :REFERENCE] :kind
16
+ # @option options [Reference] :schema
17
+ # @option options [Array<InterfaceItem>] :items
18
+ def initialize(options = {})
19
+ @kind = options[:kind]
20
+ @schema = options[:schema]
21
+ @items = options[:items] || []
22
+
23
+ super
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end