xsd 2.7.5 → 2.7.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 153a03f87abecaab17a642bd1d822e102609c44f30a45bfdbd0ca4a52c6dc567
4
- data.tar.gz: 7b7e50fb7e6915c7eb13a03d9d512b73e15e1d0abbbab5400e1f40703343ae2a
3
+ metadata.gz: 8d62fa4aab11649bbbb36686518037701a98f8b0f6c7a553e4c6925eecf2f5eb
4
+ data.tar.gz: 9f75202ed5c7945d6667e81f3c5044fb2442c64294412a7a25a73cadd6993829
5
5
  SHA512:
6
- metadata.gz: 30c85bd21b725a01724e0c6b3239593d50a270a8f98c1c66af52a883a08d3f0fa91876c2f6ca4edf159ab4d6ee4eba4fbaec903cc967f3fefda757234379c6cb
7
- data.tar.gz: e567f9b119ac0528ef8b91f4b0ef5619e0b5c008e3f6652a589e37ba85181ddd596271597819059181ec36f8adaee91b04c5aa2f6998a67e38c228da8ea41859
6
+ metadata.gz: 8749bf41fa3a2449e2cec62d8d657fff5e69458e59dbb8fa2a8a93945f6cda96d704d269a39fe03b521f95ba7b7b25ca4d14061fad38e4172dea4f07d59f1844
7
+ data.tar.gz: 57160d2965a6281b7faace74f9e556d1fd78d4adce27f8b1fafd241ad979860c68560a67cbd4adaecbb69851bf47e58297bb53da6e460a5466a9b29732227494
data/CHANGELOG.md CHANGED
@@ -1,9 +1,11 @@
1
- ## [2.7.5] - 2024-04-22
1
+ ## [2.7.7] - 2024-04-22
2
2
 
3
3
  - Return <xs:any> and <xs:anyAttribute> from collect_elements/collect_attributes
4
4
  - Make multiple_allowed? available on all definitions with max occurs
5
5
  - Don't return duplicated attributes from complex restriction
6
6
  - Fix base_complex_type on restriction without base
7
+ - Improve substitutable elements detection
8
+ - Added mutiple? shorthand
7
9
 
8
10
  ## [2.6.3] - 2024-04-13
9
11
 
@@ -130,14 +130,28 @@ module XSD
130
130
  complex_type&.mixed_content? || false
131
131
  end
132
132
 
133
- # Get elements that can appear instead of this one
133
+ # Get substitutable elements
134
134
  # @return Array<Element>
135
- def substitution_elements
136
- # TODO: for now we do not search in parent schemas (that imported current schema)
137
- # TODO: refactor for better namespace handling (use xpath with namespaces or correct comparison)
138
- schema.collect_elements.select do |element|
139
- strip_prefix(element.substitution_group) == name
140
- end
135
+ def substitutable_elements
136
+ @substitutable_elements ||= begin
137
+ if ref
138
+ reference.substitutable_elements
139
+ elsif !global? || %w[#all substitution].include?(block)
140
+ []
141
+ else
142
+ # TODO: we search substituted element only in the same schema with head element, is this enough?
143
+ # TODO: maybe don't collect all elements but search with xpath first?
144
+ schema.collect_elements.select do |element|
145
+ strip_prefix(element.substitution_group) == name
146
+ end
147
+ end
148
+ end
149
+ end
150
+
151
+ # Check is this attribute is global (immediate child of schema element)
152
+ # @return Boolean
153
+ def global?
154
+ parent.is_a?(Schema)
141
155
  end
142
156
 
143
157
  # Get base data type
@@ -45,6 +45,12 @@ module XSD
45
45
 
46
46
  # Determine if element may occur multiple times
47
47
  # @return Boolean
48
+ def multiple?
49
+ max_occurs == :unbounded || max_occurs > 1
50
+ end
51
+
52
+ # Determine if element may occur multiple times, accounting parents
53
+ # @return Boolean
48
54
  def multiple_allowed?
49
55
  computed_max_occurs == :unbounded || computed_max_occurs > 1
50
56
  end
data/lib/xsd/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module XSD
4
- VERSION = '2.7.5'
4
+ VERSION = '2.7.7'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xsd
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.7.5
4
+ version: 2.7.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - d.arkhipov