xsd 2.7.5 → 2.7.6

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.
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