expressir 0.2.27-x86-mingw32 → 1.0.0-x86-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.
Files changed (90) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rake.yml +3 -3
  3. data/.gitignore +2 -2
  4. data/demo.rb +5 -5
  5. data/exe/format +8 -8
  6. data/exe/format-test +11 -11
  7. data/expressir.gemspec +0 -1
  8. data/lib/expressir.rb +0 -1
  9. data/lib/expressir/cli.rb +0 -6
  10. data/lib/expressir/{express_exp → express}/2.4/express_parser.so +0 -0
  11. data/lib/expressir/{express_exp → express}/2.5/express_parser.so +0 -0
  12. data/lib/expressir/{express_exp → express}/2.6/express_parser.so +0 -0
  13. data/lib/expressir/{express_exp → express}/2.7/express_parser.so +0 -0
  14. data/lib/expressir/{express_exp → express}/3.0/express_parser.so +0 -0
  15. data/lib/expressir/{express_exp → express}/cache.rb +3 -6
  16. data/lib/expressir/{express_exp → express}/formatter.rb +72 -66
  17. data/lib/expressir/{express_exp → express}/hyperlink_formatter.rb +1 -1
  18. data/lib/expressir/{express_exp → express}/model_visitor.rb +1 -1
  19. data/lib/expressir/{express_exp → express}/parser.rb +3 -3
  20. data/lib/expressir/{express_exp → express}/resolve_references_model_visitor.rb +2 -2
  21. data/lib/expressir/{express_exp → express}/schema_head_formatter.rb +1 -1
  22. data/lib/expressir/{express_exp → express}/visitor.rb +21 -25
  23. data/lib/expressir/model.rb +2 -2
  24. data/lib/expressir/model/entity.rb +6 -6
  25. data/lib/expressir/model/model_element.rb +1 -1
  26. data/lib/expressir/model/rule.rb +3 -3
  27. data/lib/expressir/model/type.rb +6 -6
  28. data/lib/expressir/model/types/enumeration.rb +2 -4
  29. data/lib/expressir/model/types/select.rb +2 -4
  30. data/lib/expressir/model/{unique.rb → unique_rule.rb} +1 -1
  31. data/lib/expressir/model/{where.rb → where_rule.rb} +1 -1
  32. data/lib/expressir/version.rb +1 -1
  33. data/rakelib/cross-ruby.rake +1 -1
  34. data/spec/expressir/{express_exp → express}/cache_spec.rb +9 -9
  35. data/spec/expressir/express/formatter_spec.rb +127 -0
  36. data/spec/expressir/{express_exp → express}/parser_spec.rb +23 -23
  37. data/spec/expressir/model/model_element_spec.rb +45 -45
  38. data/{original/examples → spec}/syntax/multiple.exp +0 -0
  39. data/{original/examples → spec}/syntax/multiple.yaml +4 -4
  40. data/{original/examples → spec}/syntax/multiple_formatted.exp +0 -0
  41. data/{original/examples → spec}/syntax/multiple_hyperlink_formatted.exp +0 -0
  42. data/{original/examples → spec}/syntax/multiple_schema_head_hyperlink_formatted.exp +0 -0
  43. data/{original/examples → spec}/syntax/remark.exp +0 -0
  44. data/{original/examples → spec}/syntax/remark.yaml +13 -13
  45. data/{original/examples → spec}/syntax/remark_formatted.exp +0 -0
  46. data/{original/examples → spec}/syntax/single.exp +0 -0
  47. data/{original/examples → spec}/syntax/single.yaml +1 -1
  48. data/{original/examples → spec}/syntax/single_formatted.exp +0 -0
  49. data/{original/examples → spec}/syntax/single_formatted.yaml +1 -1
  50. data/{original/examples → spec}/syntax/syntax.exp +10 -10
  51. data/{original/examples → spec}/syntax/syntax.yaml +106 -106
  52. data/{original/examples → spec}/syntax/syntax_formatted.exp +10 -10
  53. data/{original/examples → spec}/syntax/syntax_hyperlink_formatted.exp +10 -10
  54. data/{original/examples → spec}/syntax/syntax_schema_head_formatted.exp +0 -0
  55. metadata +37 -85
  56. data/lib/expressir/express.rb +0 -11
  57. data/lib/expressir/express/aggregate_dimension.rb +0 -38
  58. data/lib/expressir/express/attribute.rb +0 -15
  59. data/lib/expressir/express/comment.rb +0 -7
  60. data/lib/expressir/express/defined_type.rb +0 -36
  61. data/lib/expressir/express/derived.rb +0 -65
  62. data/lib/expressir/express/derived_aggregate.rb +0 -43
  63. data/lib/expressir/express/entity.rb +0 -137
  64. data/lib/expressir/express/explicit.rb +0 -70
  65. data/lib/expressir/express/explicit_aggregate.rb +0 -46
  66. data/lib/expressir/express/explicit_or_derived.rb +0 -16
  67. data/lib/expressir/express/global_rule.rb +0 -44
  68. data/lib/expressir/express/interface_specification.rb +0 -51
  69. data/lib/expressir/express/interfaced_item.rb +0 -38
  70. data/lib/expressir/express/inverse.rb +0 -46
  71. data/lib/expressir/express/inverse_aggregate.rb +0 -37
  72. data/lib/expressir/express/model_element.rb +0 -7
  73. data/lib/expressir/express/named_type.rb +0 -19
  74. data/lib/expressir/express/remark.rb +0 -8
  75. data/lib/expressir/express/repository.rb +0 -306
  76. data/lib/expressir/express/schema_definition.rb +0 -96
  77. data/lib/expressir/express/subtype_constraint.rb +0 -14
  78. data/lib/expressir/express/type.rb +0 -26
  79. data/lib/expressir/express/type_aggregate.rb +0 -42
  80. data/lib/expressir/express/type_enum.rb +0 -29
  81. data/lib/expressir/express/type_parser.rb +0 -45
  82. data/lib/expressir/express/type_select.rb +0 -82
  83. data/lib/expressir/express/unique_rule.rb +0 -35
  84. data/lib/expressir/express/where_rule.rb +0 -32
  85. data/lib/expressir/express_parser.rb +0 -30
  86. data/lib/expressir/parser.rb +0 -6
  87. data/lib/expressir/parser/owl_parser.rb +0 -8
  88. data/spec/acceptance/express_to_owl_spec.rb +0 -18
  89. data/spec/expressir/express/repository_spec.rb +0 -25
  90. data/spec/expressir/express_exp/formatter_spec.rb +0 -127
@@ -1,46 +0,0 @@
1
- module Expressir
2
- module Express
3
- class Inverse < Attribute
4
- attr_accessor :reverseAttr_id, :reverseAttr, :reverseEntity
5
-
6
- def initialize(options = {})
7
- @options = options
8
- @entity = options.fetch(:entity, nil)
9
- end
10
-
11
- def parse
12
- document = @options.fetch(:document)
13
- extract_common_attributes(document)
14
- extract_type_specific_attributes(document)
15
-
16
- self
17
- end
18
-
19
- def self.parse(document, entity)
20
- new(document: document, entity: entity).parse
21
- end
22
-
23
- private
24
-
25
- def extract_type_specific_attributes(document); end
26
-
27
- def extract_common_attributes(document)
28
- @name = document.attributes["name"].to_s
29
- @reverseAttr_id = document.attributes["attribute"]
30
- @domain = document.attributes["entity"].to_s
31
-
32
- extract_redeclaration_attributes(document)
33
- end
34
-
35
- def extract_redeclaration_attributes(document)
36
- redeclaration = document.xpath("redeclaration").first
37
-
38
- if redeclaration
39
- @redeclare_entity = redeclaration.attributes["entity-ref"].to_s
40
- old_name = redeclaration.attributes["old_name"]
41
- @redeclare_oldname = old_name.to_s if old_name
42
- end
43
- end
44
- end
45
- end
46
- end
@@ -1,37 +0,0 @@
1
- module Expressir
2
- module Express
3
- class InverseAggregate < Inverse
4
- attr_accessor :aggrtype, :lower, :upper
5
-
6
- def initialize(options = {})
7
- @aggrtype = "SET"
8
- @lower = "0"
9
- @upper = "?"
10
-
11
- super(options)
12
- end
13
-
14
- private
15
-
16
- def extract_type_specific_attributes(document)
17
- @dimensions = document.xpath("aggregate").map do |aggregate|
18
- Express::AggregateDimension.parse(aggregate)
19
- end
20
-
21
-
22
- extract_inverse_aggregate(document)
23
- end
24
-
25
- def extract_inverse_aggregate(document)
26
- aggregates = document.xpath("inverse.aggregate")
27
-
28
- if !aggregates.empty?
29
- dimension = Express::AggregateDimension.parse(aggregates.first)
30
- @aggrtype = dimension.aggrtype
31
- @lower = dimension.lower
32
- @upper = dimension.upper
33
- end
34
- end
35
- end
36
- end
37
- end
@@ -1,7 +0,0 @@
1
- module Expressir
2
- module Express
3
- class ModelElement
4
- attr_accessor :definition
5
- end
6
- end
7
- end
@@ -1,19 +0,0 @@
1
- require "expressir/express/model_element"
2
-
3
- module Expressir
4
- module Express
5
- class NamedType < ModelElement
6
- attr_accessor :name, :schema, :wheres, :selectedBy
7
-
8
- def self.find_by_name(name)
9
- found = nil
10
-
11
- ObjectSpace.each_object(NamedType) do |obj|
12
- found = obj if obj.name == name
13
- end
14
-
15
- found
16
- end
17
- end
18
- end
19
- end
@@ -1,8 +0,0 @@
1
- require "expressir/express/comment"
2
-
3
- module Expressir
4
- module Express
5
- class Remark < Comment
6
- end
7
- end
8
- end
@@ -1,306 +0,0 @@
1
- require "expressir/express/interface_specification"
2
-
3
- module Expressir
4
- module Express
5
- class Repository
6
- @@next_integer_id = 0
7
- attr_accessor :name, :schemas
8
-
9
- def initialize(options = {}) @file = options.fetch(:file, nil)
10
- @schemas = options.fetch(:schemas, [])
11
- end
12
-
13
- # @todo Existing Code
14
- #
15
- # Please revisit this soon, and check if this is necessary
16
- # after our recent restrucutre, if not then delegate this
17
- # behavior to the respective instanace.
18
- #
19
- def get_next_integer
20
- @@next_integer_id += 1
21
- @@next_integer_id
22
- end
23
-
24
- # @todo Existing Code
25
- #
26
- # Please revisit this soon, and check if this is necessary
27
- # after our recent restrucutre, if not then delegate this
28
- # behavior to the respective instanace.
29
- #
30
- def get_xmlid(thing)
31
- if !thing.class.name.include? "::"
32
- "id-" + thing.class.name + "-" + get_next_integer.to_s
33
- else
34
- thing_type = thing.class.name.split("::")
35
- "id-" + thing_type[1] + "-" + get_next_integer.to_s
36
- end
37
- end
38
-
39
- # @todo Existing Code
40
- #
41
- # Please revisit this soon, and check if this is necessary
42
- # after our recent restrucutre, if not then delegate this
43
- # behavior to the respective instanace.
44
- #
45
- def find_namedtype_by_name(typename)
46
- foundtype = nil
47
-
48
- while foundtype == nil
49
- schemas.each do |schema|
50
- foundtype = schema.find_namedtype_by_name(typename)
51
- break unless foundtype.nil?
52
- end
53
- end
54
-
55
- foundtype
56
- end
57
-
58
- def parse
59
- @name = document.xpath("//express/schema/@name").to_s
60
-
61
- @schemas = document.xpath("//express/schema").map do |schema|
62
- Expressir::Express::SchemaDefinition.new(schema)
63
- end
64
-
65
- # @todo: Disabling for now
66
- #
67
- #post_process_repository
68
- self
69
- end
70
-
71
- def self.from_xml(file)
72
- new(file: file).parse
73
- end
74
-
75
- private
76
-
77
- def document
78
- @document ||= File.open(@file) { |fpath| Nokogiri::XML(fpath) }
79
- end
80
-
81
- # @todo Existing Code
82
- #
83
- # Please revisit this soon, and check if this is necessary
84
- # after our recent restrucutre, if not then delegate this
85
- # behavior to the respective instanace.
86
- #
87
- def post_process_repository
88
- schemas.each do |schema|
89
- schema.all_schema_array = get_all_interfaced_schemas(schema)
90
-
91
- schema.contents.each do |content|
92
- post_process_schema_content(content, schema)
93
- end
94
-
95
- # @todo: Copying existing code
96
- #
97
- # I'm not sure why we are running the content loop again, when
98
- # we already had that one once, but I'm keeping it as it for now
99
- # since this might be something we actually need to run after the
100
- # initial pointer/linking setup, but please revisit and clean this
101
- # up once we have more visibility.
102
- #
103
- schema.contents.each do |content|
104
- if content.is_a?(Express::Entity)
105
- content.attributes.each do |attr|
106
- if attr.is_a?(Express::Inverse)
107
- attr_to_find = attr.reverseAttr_id
108
- attr.reverseEntity = schema.find_namedtype_by_name(attr.domain)
109
- attr.reverseAttr = attr.reverseEntity.find_attr_by_name_full(
110
- attr_to_find
111
- )
112
- end
113
- end
114
- end
115
- end
116
- end
117
- end
118
-
119
- # @todo: Existing Code
120
- #
121
- # We are just copying over this method from the existing codebase
122
- # please revisit this one soon, this is recursively calling itself
123
- # and this might be one of the potential reason for slow parsing
124
- #
125
- def get_all_interfaced_schemas(schema, schema_list = [])
126
- ispec_list = schema.contents.select do |content|
127
- content.is_a? Express::InterfaceSpecification
128
- end
129
-
130
- if !ispec_list&.nil?
131
- ispec_list.each do |ispec|
132
- if !(schema_list.include? ispec.foreign_schema)
133
- schema_list.push ispec.foreign_schema
134
- end
135
-
136
- get_all_interfaced_schemas(ispec.foreign_schema, schema_list)
137
- end
138
- end
139
-
140
- schema_list
141
- end
142
-
143
- def post_process_schema_content(content, schema)
144
- post_process_interface_specification(content)
145
- post_process_type_select(content, schema)
146
- post_process_golbal_rules(content, schema)
147
- post_process_entity(content, schema)
148
- end
149
-
150
- # @todo: Existing Code
151
- #
152
- # Neeed to double check if this is actually necessary in the long
153
- # run, or use the new strucutre to handle these kind of linking.
154
- #
155
- def post_process_interface_specification(content)
156
- if content.is_a? Express::InterfaceSpecification
157
- content.explicit_items.each do |item|
158
- name_to_find = item.original_name || item.name
159
- type = content.foreign_schema.find_namedtype_by_name(name_to_find)
160
- item.foreign_type = type if type
161
- end
162
- end
163
- end
164
-
165
- # @todo: Existing Code
166
- #
167
- # Need to be double check, and see if what's the actually point
168
- # of having those linked into the instances, and if there are then
169
- # we should also look for ways to handle those with the classes.
170
- #
171
- def post_process_type_select(content, schema)
172
- if content.is_a?(Express::TypeSelect)
173
- if !content.extends.nil?
174
- content.extends_item = schema.find_namedtype_by_name(content.extends)
175
- end
176
-
177
- if !content.selectitems.nil?
178
- select_temp = content.selectitems.to_s.scan(/\w+/)
179
-
180
- select_temp.each do |name|
181
- thetype = schema.find_namedtype_by_name(name)
182
-
183
- if thetype
184
- content.selectitems_array.push(thetype)
185
- thetype.selectedBy.push(content)
186
- else
187
- Expressir.ui.error("ERROR : SELECT Item Not Found : " + name)
188
- end
189
- end
190
- end
191
- end
192
- end
193
-
194
- # @todo: Existing Code
195
- #
196
- # Please revisit this soon, and investigate the actual necessity
197
- # of this post processing, and if there are anything we can do with
198
- # the actual instance, specially when we are extracting the instance
199
- #
200
- def post_process_golbal_rules(content, schema)
201
- if content.is_a?(Express::GlobalRule)
202
- ent_temp = content.entities.to_s.scan(/\w+/)
203
-
204
- ent_temp.each do |name|
205
- thetype = schema.find_namedtype_by_name(name.to_s)
206
-
207
- if thetype
208
- content.entities_array.push(thetype)
209
- else
210
- Expressir.ui.error("ERROR : Rule Entity Not Found : " + name)
211
- end
212
- end
213
- end
214
- end
215
-
216
- # @todo: Existing Code
217
- #
218
- # Please revisit this soon, and investigate the actual necessity
219
- # of this post processing, and if there are anything we can do with
220
- # the actual instance, specially when we are extracting the instance
221
- #
222
- def post_process_entity(content, schema)
223
- if content.is_a?(Express::Entity)
224
- if content.supertypes
225
- supername_array = content.supertypes.to_s.scan(/\w+/)
226
-
227
- supername_array.each do |supername|
228
- thetype = schema.find_namedtype_by_name(supername)
229
-
230
- if thetype
231
- content.supertypes_array.push(thetype)
232
- else
233
- Expressir.ui.error(
234
- "ERROR : SUPERTYPE Item Not Found : " + supername,
235
- )
236
- end
237
- end
238
- end
239
-
240
- if content.supertypes
241
- content.supertypes_all = get_all_supertypes(content, "")
242
- end
243
-
244
- if content.supertypes_all
245
- all_supername_array = content.supertypes_all.scan(/\w+/)
246
-
247
- all_supername_array.each do |supername|
248
- supertype = schema.find_namedtype_by_name(supername)
249
-
250
- supertype.attributes.each do |superattr|
251
- content.attributes_all_array.push(superattr)
252
- end
253
- end
254
- end
255
-
256
- content.attributes.each do |localattr|
257
- content.attributes_all_array.push(localattr)
258
- end
259
-
260
- attributes_to_remove = []
261
-
262
- content.attributes_all_array.each do |next_attr|
263
- if next_attr.redeclare_entity
264
- the_entity = schema.find_namedtype_by_name(
265
- next_attr.redeclare_entity,
266
- )
267
-
268
- redattr_name = next_attr.redeclare_oldname || next_attr.name
269
- the_attr = the_entity.find_attr_by_name(redattr_name)
270
- attributes_to_remove.push(the_attr)
271
- end
272
- end
273
-
274
- attributes_to_remove.each do |attribute_remove|
275
- content.attributes_all_array.delete(attribute_remove)
276
- end
277
-
278
- subarray = schema.contents.select do |con|
279
- con.is_a?(Express::Entity) && con.supertypes
280
- end
281
-
282
- subarray.each do |subptr|
283
- subname_array = subptr.supertypes.to_s.scan(/\w+/)
284
- if subname_array.include?(content.name)
285
- content.subtypes_array.push(subptr)
286
- end
287
- end
288
- end
289
- end
290
-
291
- # @todo: Existing Code
292
- #
293
- def get_all_supertypes(content, superlist)
294
- if content.supertypes != nil
295
- superlist = content.supertypes.to_s + " " + superlist
296
-
297
- content.supertypes_array.each do |sup|
298
- superlist = get_all_supertypes(sup, superlist)
299
- end
300
- end
301
-
302
- superlist.lstrip
303
- end
304
- end
305
- end
306
- end
@@ -1,96 +0,0 @@
1
- require "expressir/express/entity"
2
- require "expressir/express/type_parser"
3
- require "expressir/express/global_rule"
4
-
5
- module Expressir
6
- module Express
7
- class SchemaDefinition < ModelElement
8
- attr_accessor :contents, :name, :identification, :all_schema_array
9
-
10
- def initialize(document = {})
11
- @document = document
12
- @all_schema_array = []
13
-
14
- extract_attributes(@document)
15
- end
16
-
17
- # @todo Existing Code
18
- #
19
- # Please revisit this soon, and check if this is necessary
20
- # after our recent restrucutre, if not then delegate this
21
- # behavior to the respective instanace.
22
- #
23
- def find_namedtype_by_name(typename)
24
- ## search current schema and interfaced item aliases
25
- nt = contents.detect do |t|
26
- t.is_a?(Express::NamedType) && t.name == typename
27
- end
28
-
29
- if nt != nil
30
- return nt
31
- end
32
-
33
- for schema in self.all_schema_array
34
- ## search all interfaced schemas
35
- nt = schema.contents.detect do |t|
36
- t.is_a?(Express::NamedType) && t.name == typename
37
- end
38
-
39
- if nt != nil
40
- return nt
41
- end
42
- end
43
-
44
- Expressir.ui.info("*** NOT HERE " + typename + " IN " + self.name)
45
- Expressir.ui.info("*** SEARCHED " + all_schema_array.size.to_s + " SCHEMAS:")
46
-
47
- all_schema_array.each do |schema|
48
- Expressir.ui.info(" - " + schema.name)
49
- end
50
-
51
- nil
52
- end
53
-
54
- private
55
-
56
- def extract_attributes(document)
57
- @name = document.attributes["name"].to_s
58
-
59
- contents = extract_interfaces(document)
60
- contents += extract_entities(document)
61
- contents += extract_types(document)
62
- contents += extract_rules(document)
63
-
64
- @contents = contents.flatten
65
- end
66
-
67
- # todo: current version does not contain any interface, so we need
68
- # a solid example to test out this funcitonaality. But keeping it
69
- # pending for now, let's revisit soon.
70
- #
71
- def extract_interfaces(document)
72
- document.xpath("interface").map do |interface|
73
- InterfaceSpecification.parse(interface, name)
74
- end
75
- end
76
-
77
- def extract_entities(document)
78
- document.xpath("//entity").map do |entity|
79
- Express::Entity.parse(entity, name)
80
- end
81
- end
82
-
83
- def extract_types(document)
84
- document.xpath("type").map do |type_document|
85
- Express::TypeParser.parse(type_document, name)
86
- end
87
- end
88
-
89
- def extract_rules(document)
90
- document.xpath("rule").map do |rule|
91
- Express::GlobalRule.parse(rule, name)
92
- end
93
- end
94
- end
95
- end
96
- end