xsd 2.7.5 → 2.7.6

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: 7c16048b771894d38405e3b63828e12ee144fc08195ea8000b4af88e54928a8a
4
+ data.tar.gz: bffa90cda6f88776e90aff1e8beaaee1a6574ea98a871cb195fc5fd690873883
5
5
  SHA512:
6
- metadata.gz: 30c85bd21b725a01724e0c6b3239593d50a270a8f98c1c66af52a883a08d3f0fa91876c2f6ca4edf159ab4d6ee4eba4fbaec903cc967f3fefda757234379c6cb
7
- data.tar.gz: e567f9b119ac0528ef8b91f4b0ef5619e0b5c008e3f6652a589e37ba85181ddd596271597819059181ec36f8adaee91b04c5aa2f6998a67e38c228da8ea41859
6
+ metadata.gz: 57f15db00816d658965e935e1a546df73dadf2e1efe0e388c0a7280fdd139d6a5daa6a6dac366ec7d50fb647afceb5bb0d931a1c598b8718f238c862198f7777
7
+ data.tar.gz: 0a3606861353e20d98965bc4f197ed8e04f8613aa52588b88f10991ea2712ff8c9a8219d3da8f1361fd8a4cfb3be82b1ca1046a6f489cf5eeded5bbd934888d2
data/CHANGELOG.md CHANGED
@@ -1,9 +1,10 @@
1
- ## [2.7.5] - 2024-04-22
1
+ ## [2.7.6] - 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
7
8
 
8
9
  ## [2.6.3] - 2024-04-13
9
10
 
@@ -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
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.6'
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.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - d.arkhipov