expressir 1.0.0-x86-linux → 1.1.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.
Files changed (147) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +11 -0
  3. data/Rakefile +3 -0
  4. data/expressir.gemspec +3 -0
  5. data/lib/expressir/express/2.4/express_parser.so +0 -0
  6. data/lib/expressir/express/2.5/express_parser.so +0 -0
  7. data/lib/expressir/express/2.6/express_parser.so +0 -0
  8. data/lib/expressir/express/2.7/express_parser.so +0 -0
  9. data/lib/expressir/express/3.0/express_parser.so +0 -0
  10. data/lib/expressir/express/cache.rb +16 -10
  11. data/lib/expressir/express/formatter.rb +231 -180
  12. data/lib/expressir/express/hyperlink_formatter.rb +15 -1
  13. data/lib/expressir/express/model_visitor.rb +1 -0
  14. data/lib/expressir/express/parser.rb +16 -10
  15. data/lib/expressir/express/resolve_references_model_visitor.rb +7 -5
  16. data/lib/expressir/express/schema_head_formatter.rb +16 -2
  17. data/lib/expressir/express/visitor.rb +280 -254
  18. data/lib/expressir/model.rb +52 -45
  19. data/lib/expressir/model/cache.rb +6 -2
  20. data/lib/expressir/model/data_type.rb +9 -0
  21. data/lib/expressir/model/data_types/aggregate.rb +31 -0
  22. data/lib/expressir/model/data_types/array.rb +31 -0
  23. data/lib/expressir/model/data_types/bag.rb +25 -0
  24. data/lib/expressir/model/data_types/binary.rb +22 -0
  25. data/lib/expressir/model/data_types/boolean.rb +10 -0
  26. data/lib/expressir/model/data_types/enumeration.rb +25 -0
  27. data/lib/expressir/model/data_types/enumeration_item.rb +26 -0
  28. data/lib/expressir/model/data_types/generic.rb +26 -0
  29. data/lib/expressir/model/data_types/generic_entity.rb +26 -0
  30. data/lib/expressir/model/data_types/integer.rb +10 -0
  31. data/lib/expressir/model/data_types/list.rb +28 -0
  32. data/lib/expressir/model/data_types/logical.rb +10 -0
  33. data/lib/expressir/model/data_types/number.rb +10 -0
  34. data/lib/expressir/model/data_types/real.rb +19 -0
  35. data/lib/expressir/model/data_types/select.rb +28 -0
  36. data/lib/expressir/model/data_types/set.rb +25 -0
  37. data/lib/expressir/model/data_types/string.rb +22 -0
  38. data/lib/expressir/model/declaration.rb +9 -0
  39. data/lib/expressir/model/declarations/attribute.rb +47 -0
  40. data/lib/expressir/model/declarations/constant.rb +34 -0
  41. data/lib/expressir/model/declarations/entity.rb +53 -0
  42. data/lib/expressir/model/declarations/function.rb +67 -0
  43. data/lib/expressir/model/declarations/interface.rb +28 -0
  44. data/lib/expressir/model/declarations/interface_item.rb +23 -0
  45. data/lib/expressir/model/declarations/interfaced_item.rb +37 -0
  46. data/lib/expressir/model/declarations/parameter.rb +34 -0
  47. data/lib/expressir/model/declarations/procedure.rb +64 -0
  48. data/lib/expressir/model/declarations/remark_item.rb +21 -0
  49. data/lib/expressir/model/declarations/rule.rb +71 -0
  50. data/lib/expressir/model/declarations/schema.rb +117 -0
  51. data/lib/expressir/model/declarations/schema_version.rb +22 -0
  52. data/lib/expressir/model/declarations/schema_version_item.rb +22 -0
  53. data/lib/expressir/model/declarations/subtype_constraint.rb +40 -0
  54. data/lib/expressir/model/declarations/type.rb +45 -0
  55. data/lib/expressir/model/declarations/unique_rule.rb +31 -0
  56. data/lib/expressir/model/declarations/variable.rb +34 -0
  57. data/lib/expressir/model/declarations/where_rule.rb +31 -0
  58. data/lib/expressir/model/expression.rb +9 -0
  59. data/lib/expressir/model/expressions/aggregate_initializer.rb +6 -2
  60. data/lib/expressir/model/expressions/aggregate_initializer_item.rb +22 -0
  61. data/lib/expressir/model/expressions/binary_expression.rb +16 -5
  62. data/lib/expressir/model/expressions/entity_constructor.rb +8 -3
  63. data/lib/expressir/model/expressions/function_call.rb +22 -0
  64. data/lib/expressir/model/expressions/interval.rb +17 -6
  65. data/lib/expressir/model/expressions/query_expression.rb +11 -7
  66. data/lib/expressir/model/expressions/unary_expression.rb +9 -3
  67. data/lib/expressir/model/identifier.rb +26 -4
  68. data/lib/expressir/model/literal.rb +9 -0
  69. data/lib/expressir/model/literals/binary.rb +6 -2
  70. data/lib/expressir/model/literals/integer.rb +6 -2
  71. data/lib/expressir/model/literals/logical.rb +6 -2
  72. data/lib/expressir/model/literals/real.rb +6 -2
  73. data/lib/expressir/model/literals/string.rb +8 -3
  74. data/lib/expressir/model/model_element.rb +63 -37
  75. data/lib/expressir/model/reference.rb +9 -0
  76. data/lib/expressir/model/references/attribute_reference.rb +22 -0
  77. data/lib/expressir/model/references/group_reference.rb +22 -0
  78. data/lib/expressir/model/references/index_reference.rb +27 -0
  79. data/lib/expressir/model/references/simple_reference.rb +24 -0
  80. data/lib/expressir/model/repository.rb +7 -1
  81. data/lib/expressir/model/statement.rb +9 -0
  82. data/lib/expressir/model/statements/alias.rb +11 -7
  83. data/lib/expressir/model/statements/assignment.rb +8 -3
  84. data/lib/expressir/model/statements/case.rb +10 -4
  85. data/lib/expressir/model/statements/case_action.rb +7 -2
  86. data/lib/expressir/model/statements/compound.rb +6 -2
  87. data/lib/expressir/model/statements/escape.rb +3 -1
  88. data/lib/expressir/model/statements/if.rb +10 -4
  89. data/lib/expressir/model/statements/null.rb +3 -1
  90. data/lib/expressir/model/statements/procedure_call.rb +22 -0
  91. data/lib/expressir/model/statements/repeat.rb +19 -11
  92. data/lib/expressir/model/statements/return.rb +6 -2
  93. data/lib/expressir/model/statements/skip.rb +3 -1
  94. data/lib/expressir/model/supertype_expression.rb +9 -0
  95. data/lib/expressir/model/supertype_expressions/binary_supertype_expression.rb +29 -0
  96. data/lib/expressir/model/supertype_expressions/oneof_supertype_expression.rb +19 -0
  97. data/lib/expressir/version.rb +1 -1
  98. data/spec/expressir/model/model_element_spec.rb +131 -131
  99. data/spec/syntax/multiple.yaml +68 -68
  100. data/spec/syntax/remark.yaml +64 -64
  101. data/spec/syntax/single.yaml +5 -5
  102. data/spec/syntax/single_formatted.yaml +5 -5
  103. data/spec/syntax/syntax.yaml +1003 -1030
  104. metadata +97 -45
  105. data/lib/expressir/model/attribute.rb +0 -38
  106. data/lib/expressir/model/constant.rb +0 -28
  107. data/lib/expressir/model/entity.rb +0 -42
  108. data/lib/expressir/model/enumeration_item.rb +0 -22
  109. data/lib/expressir/model/expressions/aggregate_item.rb +0 -17
  110. data/lib/expressir/model/expressions/attribute_reference.rb +0 -17
  111. data/lib/expressir/model/expressions/call.rb +0 -17
  112. data/lib/expressir/model/expressions/group_reference.rb +0 -17
  113. data/lib/expressir/model/expressions/index_reference.rb +0 -19
  114. data/lib/expressir/model/expressions/simple_reference.rb +0 -19
  115. data/lib/expressir/model/function.rb +0 -57
  116. data/lib/expressir/model/interface.rb +0 -20
  117. data/lib/expressir/model/interface_item.rb +0 -15
  118. data/lib/expressir/model/interfaced_item.rb +0 -27
  119. data/lib/expressir/model/parameter.rb +0 -28
  120. data/lib/expressir/model/procedure.rb +0 -55
  121. data/lib/expressir/model/remark_item.rb +0 -15
  122. data/lib/expressir/model/rule.rb +0 -60
  123. data/lib/expressir/model/schema.rb +0 -100
  124. data/lib/expressir/model/schema_version.rb +0 -15
  125. data/lib/expressir/model/schema_version_item.rb +0 -15
  126. data/lib/expressir/model/statements/call.rb +0 -17
  127. data/lib/expressir/model/subtype_constraint.rb +0 -32
  128. data/lib/expressir/model/type.rb +0 -37
  129. data/lib/expressir/model/types/aggregate.rb +0 -28
  130. data/lib/expressir/model/types/array.rb +0 -23
  131. data/lib/expressir/model/types/bag.rb +0 -19
  132. data/lib/expressir/model/types/binary.rb +0 -17
  133. data/lib/expressir/model/types/boolean.rb +0 -8
  134. data/lib/expressir/model/types/enumeration.rb +0 -19
  135. data/lib/expressir/model/types/generic.rb +0 -24
  136. data/lib/expressir/model/types/generic_entity.rb +0 -24
  137. data/lib/expressir/model/types/integer.rb +0 -8
  138. data/lib/expressir/model/types/list.rb +0 -21
  139. data/lib/expressir/model/types/logical.rb +0 -8
  140. data/lib/expressir/model/types/number.rb +0 -8
  141. data/lib/expressir/model/types/real.rb +0 -15
  142. data/lib/expressir/model/types/select.rb +0 -21
  143. data/lib/expressir/model/types/set.rb +0 -19
  144. data/lib/expressir/model/types/string.rb +0 -17
  145. data/lib/expressir/model/unique_rule.rb +0 -26
  146. data/lib/expressir/model/variable.rb +0 -28
  147. data/lib/expressir/model/where_rule.rb +0 -26
@@ -1,57 +0,0 @@
1
- module Expressir
2
- module Model
3
- class Function < ModelElement
4
- include Identifier
5
-
6
- model_attr_accessor :parameters
7
- model_attr_accessor :return_type
8
- model_attr_accessor :types
9
- model_attr_accessor :entities
10
- model_attr_accessor :subtype_constraints
11
- model_attr_accessor :functions
12
- model_attr_accessor :procedures
13
- model_attr_accessor :constants
14
- model_attr_accessor :variables
15
- model_attr_accessor :statements
16
-
17
- def initialize(options = {})
18
- @id = options[:id]
19
- @remarks = options[:remarks] || []
20
- @remark_items = options[:remark_items] || []
21
- @source = options[:source]
22
-
23
- @parameters = options[:parameters] || []
24
- @return_type = options[:return_type]
25
- @types = options[:types] || []
26
- @entities = options[:entities] || []
27
- @subtype_constraints = options[:subtype_constraints] || []
28
- @functions = options[:functions] || []
29
- @procedures = options[:procedures] || []
30
- @constants = options[:constants] || []
31
- @variables = options[:variables] || []
32
- @statements = options[:statements] || []
33
-
34
- super
35
- end
36
-
37
- def enumeration_items
38
- types.flat_map{|x| x.enumeration_items}
39
- end
40
-
41
- def children
42
- [
43
- *parameters,
44
- *types,
45
- *enumeration_items,
46
- *entities,
47
- *subtype_constraints,
48
- *functions,
49
- *procedures,
50
- *constants,
51
- *variables,
52
- *remark_items
53
- ]
54
- end
55
- end
56
- end
57
- end
@@ -1,20 +0,0 @@
1
- module Expressir
2
- module Model
3
- class Interface < ModelElement
4
- USE = :USE
5
- REFERENCE = :REFERENCE
6
-
7
- model_attr_accessor :kind
8
- model_attr_accessor :schema
9
- model_attr_accessor :items
10
-
11
- def initialize(options = {})
12
- @kind = options[:kind]
13
- @schema = options[:schema]
14
- @items = options[:items] || []
15
-
16
- super
17
- end
18
- end
19
- end
20
- end
@@ -1,15 +0,0 @@
1
- module Expressir
2
- module Model
3
- class InterfaceItem < ModelElement
4
- model_attr_accessor :ref
5
- model_attr_accessor :id
6
-
7
- def initialize(options = {})
8
- @ref = options[:ref]
9
- @id = options[:id]
10
-
11
- super
12
- end
13
- end
14
- end
15
- end
@@ -1,27 +0,0 @@
1
- module Expressir
2
- module Model
3
- class InterfacedItem < ModelElement
4
- model_attr_accessor :id
5
- model_attr_accessor :remarks
6
- model_attr_accessor :remark_items
7
-
8
- model_attr_accessor :base_item
9
-
10
- def initialize(options = {})
11
- @id = options[:id]
12
- @remarks = options[:remarks] || []
13
- @remark_items = options[:remark_items] || []
14
-
15
- @base_item = options[:base_item]
16
-
17
- super
18
- end
19
-
20
- def children
21
- [
22
- *remark_items
23
- ]
24
- end
25
- end
26
- end
27
- end
@@ -1,28 +0,0 @@
1
- module Expressir
2
- module Model
3
- class Parameter < ModelElement
4
- include Identifier
5
-
6
- model_attr_accessor :var
7
- model_attr_accessor :type
8
-
9
- def initialize(options = {})
10
- @id = options[:id]
11
- @remarks = options[:remarks] || []
12
- @remark_items = options[:remark_items] || []
13
- @source = options[:source]
14
-
15
- @var = options[:var]
16
- @type = options[:type]
17
-
18
- super
19
- end
20
-
21
- def children
22
- [
23
- *remark_items
24
- ]
25
- end
26
- end
27
- end
28
- end
@@ -1,55 +0,0 @@
1
- module Expressir
2
- module Model
3
- class Procedure < ModelElement
4
- include Identifier
5
-
6
- model_attr_accessor :parameters
7
- model_attr_accessor :types
8
- model_attr_accessor :entities
9
- model_attr_accessor :subtype_constraints
10
- model_attr_accessor :functions
11
- model_attr_accessor :procedures
12
- model_attr_accessor :constants
13
- model_attr_accessor :variables
14
- model_attr_accessor :statements
15
-
16
- def initialize(options = {})
17
- @id = options[:id]
18
- @remarks = options[:remarks] || []
19
- @remark_items = options[:remark_items] || []
20
- @source = options[:source]
21
-
22
- @parameters = options[:parameters] || []
23
- @types = options[:types] || []
24
- @entities = options[:entities] || []
25
- @subtype_constraints = options[:subtype_constraints] || []
26
- @functions = options[:functions] || []
27
- @procedures = options[:procedures] || []
28
- @constants = options[:constants] || []
29
- @variables = options[:variables] || []
30
- @statements = options[:statements] || []
31
-
32
- super
33
- end
34
-
35
- def enumeration_items
36
- types.flat_map{|x| x.enumeration_items}
37
- end
38
-
39
- def children
40
- [
41
- *parameters,
42
- *types,
43
- *enumeration_items,
44
- *entities,
45
- *subtype_constraints,
46
- *functions,
47
- *procedures,
48
- *constants,
49
- *variables,
50
- *remark_items
51
- ]
52
- end
53
- end
54
- end
55
- end
@@ -1,15 +0,0 @@
1
- module Expressir
2
- module Model
3
- class RemarkItem < ModelElement
4
- model_attr_accessor :id
5
- model_attr_accessor :remarks
6
-
7
- def initialize(options = {})
8
- @id = options[:id]
9
- @remarks = options[:remarks] || []
10
-
11
- super
12
- end
13
- end
14
- end
15
- end
@@ -1,60 +0,0 @@
1
- module Expressir
2
- module Model
3
- class Rule < ModelElement
4
- include Identifier
5
-
6
- model_attr_accessor :applies_to
7
- model_attr_accessor :types
8
- model_attr_accessor :entities
9
- model_attr_accessor :subtype_constraints
10
- model_attr_accessor :functions
11
- model_attr_accessor :procedures
12
- model_attr_accessor :constants
13
- model_attr_accessor :variables
14
- model_attr_accessor :statements
15
- model_attr_accessor :where_rules
16
- model_attr_accessor :informal_propositions
17
-
18
- def initialize(options = {})
19
- @id = options[:id]
20
- @remarks = options[:remarks] || []
21
- @remark_items = options[:remark_items] || []
22
- @source = options[:source]
23
-
24
- @applies_to = options[:applies_to] || []
25
- @types = options[:types] || []
26
- @entities = options[:entities] || []
27
- @subtype_constraints = options[:subtype_constraints] || []
28
- @functions = options[:functions] || []
29
- @procedures = options[:procedures] || []
30
- @constants = options[:constants] || []
31
- @variables = options[:variables] || []
32
- @statements = options[:statements] || []
33
- @where_rules = options[:where_rules] || []
34
- @informal_propositions = options[:informal_propositions] || []
35
-
36
- super
37
- end
38
-
39
- def enumeration_items
40
- types.flat_map{|x| x.enumeration_items}
41
- end
42
-
43
- def children
44
- [
45
- *types,
46
- *enumeration_items,
47
- *entities,
48
- *subtype_constraints,
49
- *functions,
50
- *procedures,
51
- *constants,
52
- *variables,
53
- *where_rules,
54
- *informal_propositions,
55
- *remark_items
56
- ]
57
- end
58
- end
59
- end
60
- end
@@ -1,100 +0,0 @@
1
- module Expressir
2
- module Model
3
- class Schema < ModelElement
4
- model_attr_accessor :file
5
-
6
- include Identifier
7
-
8
- model_attr_accessor :version
9
- model_attr_accessor :interfaces
10
- model_attr_accessor :constants
11
- model_attr_accessor :types
12
- model_attr_accessor :entities
13
- model_attr_accessor :subtype_constraints
14
- model_attr_accessor :functions
15
- model_attr_accessor :rules
16
- model_attr_accessor :procedures
17
-
18
- def initialize(options = {})
19
- @file = options[:file]
20
-
21
- @id = options[:id]
22
- @remarks = options[:remarks] || []
23
- @remark_items = options[:remark_items] || []
24
- @source = options[:source]
25
-
26
- @version = options[:version]
27
- @interfaces = options[:interfaces] || []
28
- @constants = options[:constants] || []
29
- @types = options[:types] || []
30
- @entities = options[:entities] || []
31
- @subtype_constraints = options[:subtype_constraints] || []
32
- @functions = options[:functions] || []
33
- @rules = options[:rules] || []
34
- @procedures = options[:procedures] || []
35
-
36
- super
37
- end
38
-
39
- def create_interfaced_item(id, base_item)
40
- interfaced_item = InterfacedItem.new({
41
- id: id
42
- })
43
- interfaced_item.base_item = base_item # skip overriding parent
44
- interfaced_item.parent = self
45
- interfaced_item
46
- end
47
-
48
- def interfaced_items
49
- return [] unless parent
50
-
51
- interfaces.flat_map do |interface|
52
- schema = parent.children_by_id[interface.schema.id.downcase]
53
- if schema
54
- schema_safe_children = schema.safe_children
55
- schema_safe_children_by_id = schema_safe_children.select{|x| x.id}.map{|x| [x.id.downcase, x]}.to_h
56
- if interface.items.length > 0
57
- interface.items.map do |interface_item|
58
- base_item = schema_safe_children_by_id[interface_item.ref.id.downcase]
59
- if base_item
60
- id = interface_item.id || base_item.id
61
- create_interfaced_item(id, base_item)
62
- end
63
- end
64
- else
65
- schema_safe_children.map do |base_item|
66
- id = base_item.id
67
- create_interfaced_item(id, base_item)
68
- end
69
- end
70
- end
71
- end.select{|x| x}
72
- end
73
-
74
- def enumeration_items
75
- types.flat_map{|x| x.enumeration_items}
76
- end
77
-
78
- def safe_children
79
- [
80
- *constants,
81
- *types,
82
- *enumeration_items,
83
- *entities,
84
- *subtype_constraints,
85
- *functions,
86
- *rules,
87
- *procedures,
88
- *remark_items
89
- ]
90
- end
91
-
92
- def children
93
- [
94
- *interfaced_items,
95
- *safe_children
96
- ]
97
- end
98
- end
99
- end
100
- end
@@ -1,15 +0,0 @@
1
- module Expressir
2
- module Model
3
- class SchemaVersion < ModelElement
4
- model_attr_accessor :value
5
- model_attr_accessor :items
6
-
7
- def initialize(options = {})
8
- @value = options[:value]
9
- @items = options[:items] || []
10
-
11
- super
12
- end
13
- end
14
- end
15
- end
@@ -1,15 +0,0 @@
1
- module Expressir
2
- module Model
3
- class SchemaVersionItem < ModelElement
4
- model_attr_accessor :name
5
- model_attr_accessor :value
6
-
7
- def initialize(options = {})
8
- @name = options[:name]
9
- @value = options[:value]
10
-
11
- super
12
- end
13
- end
14
- end
15
- end
@@ -1,17 +0,0 @@
1
- module Expressir
2
- module Model
3
- module Statements
4
- class Call < ModelElement
5
- model_attr_accessor :ref
6
- model_attr_accessor :parameters
7
-
8
- def initialize(options = {})
9
- @ref = options[:ref]
10
- @parameters = options[:parameters] || []
11
-
12
- super
13
- end
14
- end
15
- end
16
- end
17
- end
@@ -1,32 +0,0 @@
1
- module Expressir
2
- module Model
3
- class SubtypeConstraint < ModelElement
4
- include Identifier
5
-
6
- model_attr_accessor :applies_to
7
- model_attr_accessor :abstract
8
- model_attr_accessor :total_over
9
- model_attr_accessor :supertype_expression
10
-
11
- def initialize(options = {})
12
- @id = options[:id]
13
- @remarks = options[:remarks] || []
14
- @remark_items = options[:remark_items] || []
15
- @source = options[:source]
16
-
17
- @applies_to = options[:applies_to]
18
- @abstract = options[:abstract]
19
- @total_over = options[:total_over] || []
20
- @supertype_expression = options[:supertype_expression]
21
-
22
- super
23
- end
24
-
25
- def children
26
- [
27
- *remark_items
28
- ]
29
- end
30
- end
31
- end
32
- end