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,43 +0,0 @@
1
- module Expressir
2
- module Express
3
- class DerivedAggregate < Derived
4
- attr_accessor :rank, :dimensions
5
-
6
- def initialize(options = {})
7
- @rank = 0
8
- @dimensions = []
9
-
10
- super(options)
11
- end
12
-
13
- private
14
-
15
- def extract_type_specific_attributes(document)
16
- @dimensions = document.xpath("aggregate").map do |aggregate|
17
- Express::AggregateDimension.parse(aggregate)
18
- end
19
-
20
- @rank = @dimensions.size
21
- extract_inverse_aggregate(document)
22
- end
23
-
24
- # @todo: Non existance attributes
25
- #
26
- # In the codebase, they are trying to add couple of aggregate
27
- # dimensions related attributes that was never a part of the
28
- # Explict class, but for consistency we are keeping those as
29
- # it is for now. let's revist those later and fix it.
30
- #
31
- def extract_inverse_aggregate(document)
32
- aggregates = document.xpath("inverse.aggregate")
33
-
34
- if !aggregates.empty?
35
- dimension = Express::AggregateDimension.parse(aggregates.first)
36
- @aggrtype = dimension.aggrtype
37
- @lower = dimension.lower
38
- @upper = dimension.upper
39
- end
40
- end
41
- end
42
- end
43
- end
@@ -1,137 +0,0 @@
1
- require "expressir/express/explicit"
2
- require "expressir/express/inverse"
3
- require "expressir/express/derived"
4
- require "expressir/express/named_type"
5
- require "expressir/express/where_rule"
6
- require "expressir/express/unique_rule"
7
-
8
- require "expressir/express/explicit_aggregate"
9
- require "expressir/express/inverse_aggregate"
10
- require "expressir/express/derived_aggregate"
11
-
12
- module Expressir
13
- module Express
14
- class Entity < NamedType
15
- attr_accessor :supertypes, :attributes, :isAbs, :superexpression,
16
- :uniques, :subtypes_array, :supertypes_array, :attributes_all_array,
17
- :supertypes_all
18
-
19
- def initialize(document: nil, schema: nil, **options)
20
- @isAbs = false
21
- @attributes = []
22
- @uniques = []
23
- @wheres = []
24
- @subtypes_array = []
25
- @supertypes_array = []
26
- @attributes_all_array = []
27
- @supertypes = nil
28
- @supertypes_all = nil
29
- @superexpression = nil
30
- @selectedBy = []
31
-
32
- @schema = schema
33
- @document = document
34
- @options = options
35
- end
36
-
37
- def find_attr_by_name( attrname )
38
- for attribute in attributes
39
- if attrname == attribute.name
40
- return attribute
41
- end
42
- end
43
- return nil
44
- end
45
-
46
- def find_attr_by_name_full( attrname )
47
- attr = find_attr_by_name( attrname )
48
- if attr != nil
49
- return attr
50
- end
51
- for supertype in supertypes_array
52
- attr = supertype.find_attr_by_name_full (attrname)
53
- if attr != nil
54
- return attr
55
- end
56
- end
57
- end
58
-
59
- def parse
60
- extract_attributes(@document, @schema)
61
- self
62
- end
63
-
64
- def self.parse(document, schema)
65
- new(document: document, schema: schema).parse
66
- end
67
-
68
- private
69
-
70
- def extract_attributes(document, schema)
71
- @name = document.attributes["name"].to_s
72
- @supertypes = document.attributes["supertypes"]
73
- @superexpression = document.attributes["super.expression"]
74
-
75
- @wheres = extract_where_rules(document)
76
- @uniques = extract_unique_rules(document)
77
-
78
- @isAbs = document.attributes["supertypes"] == "YES" ||
79
- document.attributes["abstract.entity"] == "YES"
80
-
81
- @attributes = [
82
- extract_eplicits(document),
83
- extract_inverses(document),
84
- extract_derivedes(document),
85
- ].flatten
86
- end
87
-
88
- def extract_eplicits(document)
89
- document.xpath("explicit").map do |explicit|
90
- explicit_type = Express::Explicit
91
-
92
- if !explicit.xpath("aggregate").empty?
93
- explicit_type = Express::ExplicitAggregate
94
- end
95
-
96
- explicit_type.parse(explicit, self)
97
- end
98
- end
99
-
100
- def extract_inverses(document)
101
- document.xpath("inverse").map do |inverse|
102
- inverse_type = Express::Inverse
103
-
104
- if !inverse.xpath("inverse.aggregate").empty?
105
- inverse_type = Express::InverseAggregate
106
- end
107
-
108
- inverse_type.parse(inverse, self)
109
- end
110
- end
111
-
112
- def extract_derivedes(document)
113
- document.xpath("derived").map do |derived|
114
- derived_type = Express::Derived
115
-
116
- if !derived.xpath("aggregate").empty?
117
- derived_type = Express::DerivedAggregate
118
- end
119
-
120
- derived_type.parse(derived, self)
121
- end
122
- end
123
-
124
- def extract_unique_rules(document)
125
- document.xpath("unique").map do |unique|
126
- Express::UniqueRule.parse(unique)
127
- end
128
- end
129
-
130
- def extract_where_rules(document)
131
- document.xpath("where").map do |where|
132
- Express::WhereRule.parse(where)
133
- end
134
- end
135
- end
136
- end
137
- end
@@ -1,70 +0,0 @@
1
- require "expressir/express/explicit_or_derived"
2
-
3
- module Expressir
4
- module Express
5
- class Explicit < ExplicitOrDerived
6
- attr_accessor :isOptional
7
-
8
- def initialize(options = {})
9
- @isOptional = false
10
- @options = options
11
- @entity = options.fetch(:entity, nil)
12
- end
13
-
14
- def parse
15
- document = options.fetch(:document)
16
- extract_common_attributes(document)
17
- extract_type_specific_attributes(document)
18
-
19
- self
20
- end
21
-
22
- def self.parse(document, entity)
23
- new(document: document, entity: entity).parse
24
- end
25
-
26
- private
27
-
28
- attr_reader :options
29
-
30
- def extract_type_specific_attributes(document); end
31
-
32
- def extract_common_attributes(document)
33
- @name = document.attributes["name"].to_s
34
- @domain = extract_domain_name(document.xpath("typename"))
35
- @isOptional = document.attributes["optional"].to_s == "YES"
36
-
37
- extract_builtintype_attributes(document)
38
- extract_redeclaration_attributes(document)
39
- end
40
-
41
- def extract_domain_name(typename)
42
- unless typename.empty?
43
- typename.first.attributes["name"].to_s
44
- end
45
- end
46
-
47
- def extract_builtintype_attributes(document)
48
- builtin_type = document.xpath("builtintype").first
49
-
50
- if builtin_type
51
- @isBuiltin = true
52
- @domain = builtin_type.attributes["type"].to_s
53
- @width = builtin_type.attributes["width"].to_s
54
- @fixed = builtin_type.attributes["fixed"] == "YES"
55
- @precision = builtin_type.attributes["precision"].to_s
56
- end
57
- end
58
-
59
- def extract_redeclaration_attributes(document)
60
- redeclaration = document.xpath("redeclaration").first
61
-
62
- if redeclaration
63
- @redeclare_entity = redeclaration.attributes["entity-ref"].to_s
64
- old_name = redeclaration.attributes["old_name"]
65
- @redeclare_oldname = old_name.to_s if old_name
66
- end
67
- end
68
- end
69
- end
70
- end
@@ -1,46 +0,0 @@
1
- require "expressir/express/aggregate_dimension"
2
-
3
- module Expressir
4
- module Express
5
- class ExplicitAggregate < Explicit
6
- attr_accessor :rank, :dimensions
7
-
8
- def initialize(options = {})
9
- @rank = 0
10
- @dimensions = []
11
- @isOptional = false
12
-
13
- super(options)
14
- end
15
-
16
- private
17
-
18
- def extract_type_specific_attributes(document)
19
- @dimensions = document.xpath("aggregate").map do |aggregate|
20
- Express::AggregateDimension.parse(aggregate)
21
- end
22
-
23
- @rank = @dimensions.size
24
- extract_inverse_aggregate(document)
25
- end
26
-
27
- # @todo: Non existance attributes
28
- #
29
- # In the codebase, they are trying to add couple of aggregate
30
- # dimensions related attributes that was never a part of the
31
- # Explict class, but for consistency we are keeping those as
32
- # it is for now. let's revist those later and fix it.
33
- #
34
- def extract_inverse_aggregate(document)
35
- aggregates = document.xpath("inverse.aggregate")
36
-
37
- if !aggregates.empty?
38
- dimension = Express::AggregateDimension.parse(aggregates.first)
39
- @aggrtype = dimension.aggrtype
40
- @lower = dimension.lower
41
- @upper = dimension.upper
42
- end
43
- end
44
- end
45
- end
46
- end
@@ -1,16 +0,0 @@
1
- require "expressir/express/attribute"
2
-
3
- module Expressir
4
- module Express
5
- class ExplicitOrDerived < Attribute
6
- attr_accessor :isBuiltin, :isFixed, :width, :precision
7
-
8
- def initialize
9
- @isBuiltin = false
10
- @isFixed = false
11
- @width = nil
12
- @precision = nil
13
- end
14
- end
15
- end
16
- end
@@ -1,44 +0,0 @@
1
- require "expressir/express/model_element"
2
-
3
- module Expressir
4
- module Express
5
- class GlobalRule < ModelElement
6
- attr_accessor :name, :entities, :algorithm, :wheres,
7
- :schema, :entities_array
8
-
9
- def initialize(options = {})
10
- @entities_array = []
11
- @wheres = []
12
-
13
- @options = options
14
- @schema = options.fetch(:schema, nil)
15
- end
16
-
17
- def parse
18
- document = @options.fetch(:document)
19
- extract_rule_attributes(document)
20
-
21
- self
22
- end
23
-
24
- def self.parse(document, schema)
25
- new(document: document, schema: schema).parse
26
- end
27
-
28
- private
29
-
30
- def extract_rule_attributes(document)
31
- @wheres = extract_where_rules(document)
32
- @name = document.attributes["name"].to_s
33
- @entities = document.attributes["appliesto"].to_s
34
- @algorithm = document.attributes["algorithm"]
35
- end
36
-
37
- def extract_where_rules(document)
38
- document.xpath("where").map do |where|
39
- Express::WhereRule.parse(where)
40
- end
41
- end
42
- end
43
- end
44
- end
@@ -1,51 +0,0 @@
1
- require "expressir/express/model_element"
2
-
3
- module Expressir
4
- module Express
5
- class InterfaceSpecification < ModelElement
6
- attr_accessor :kind, :current_schema, :explicit_items,
7
- :current_schema_id, :foreign_schema_id, :foreign_schema
8
-
9
- def initialize(attributes = {})
10
- @explicit_items = []
11
- @attributes = attributes
12
- end
13
-
14
- def parse
15
- extract_attributes(@attributes)
16
- end
17
-
18
- def self.parse(document, schema)
19
- new(document: document, schema: schema).parse
20
- end
21
-
22
- private
23
-
24
- # Note:
25
- #
26
- # The the old version was passing around the whole instance
27
- # of the schema, and that might be one of the reason why the
28
- # parsing was super slow.
29
- #
30
- # So, we are not passing around an instnace anymore, but the
31
- # name of the schema, and later if we find out there is actually
32
- # a reason to do that then we wil add it back.
33
- #
34
- def extract_attributes(document, options)
35
- @foreign_schema = options.fetch("schema")
36
- @foreign_schema_id = foreign_schema&.name&.to_s
37
- @current_schema = foreign_schema
38
- @foreign_schema_id = foreign_schema_id
39
-
40
- @kind = document.attributes["kind"].to_s
41
- @explicit_items = extract_items(document, foreign_schema)
42
- end
43
-
44
- def extract_items(document, schema)
45
- document.xpath("interfaced.item").map do |item|
46
- InterfacedItem.parse(document, schema)
47
- end
48
- end
49
- end
50
- end
51
- end
@@ -1,38 +0,0 @@
1
- module Expressir
2
- module Express
3
- class InterfacedItem
4
- attr_accessor :name, :original_name, :foreign_schema, :foreign_type
5
-
6
- def initialize(attributes = {})
7
- @original_name = nil
8
- @attributes = attributes
9
- end
10
-
11
- def parse
12
- schema = attributes.extract(:schema, nil)
13
- document = attributes.extract(:document, nil)
14
-
15
- extract_attributes(document, schema)
16
- end
17
-
18
- def self.parse(document, schema)
19
- new(document: document, schema: schema).parse
20
- end
21
-
22
- private
23
-
24
- attr_reader :attributes
25
-
26
- def extract_attributes(document, schema)
27
- @foreign_schema = schema
28
- @name = document.attributes["name"].to_s
29
-
30
- if document.attributes["alias"] != nil
31
- @name = document.attributes["alias"].to_s
32
- @original_name = document.attributes["name"].to_s
33
- end
34
- end
35
- end
36
- end
37
- end
38
-