xsd 2.7.1 → 2.7.2

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: a204e10bdaaac5744ae8f38bf10e7d83a030a570134739e71a28db641bc955c3
4
- data.tar.gz: e61695c62db5a99877b3d87098a42021df2b416a3ee00dfdeac13a8377ccdea8
3
+ metadata.gz: ac666b4ba9690ed163376b0232dec21ba29c7098f2362b6ba9b1d5751fa60ca2
4
+ data.tar.gz: 8eedebb55d21670bf6620a892073b8c4af9a269e39be1f20e66a1873749c1c76
5
5
  SHA512:
6
- metadata.gz: a70c3ac790859ee1d7a649f5ee1ee41b21aacc5fd29d6465a5dd3a113c755856f92f8aafeb937d42e98f57d6f6e3a4e1bb7231a5aeb12e78de8aee66b9cc7cbd
7
- data.tar.gz: 77ae1a10ed5165d71b065814e5466a00f3831ccda312a7a18d4646f2d0d44b7775570ccade57731e75d51f9016c91c4721084f991692f53c6075949051dc5be9
6
+ metadata.gz: def1638cb816c68f2539611eb5ff2fd5328d729dab3ea530546f54e362f08fb39c06c325f2d734f934231404242adb85f560458c2a1ca8570f482a10fe4e0144
7
+ data.tar.gz: f62492a9cec4f219cb2b966d033b66c7d7a5f1cfdb7c27ac0bef5a5d7fdc3a3aa3265e5ea8c41fba8069433041fc210ceb7521f60304e3a0704a721bf1b0f567
data/CHANGELOG.md CHANGED
@@ -1,7 +1,8 @@
1
- ## [2.7.1] - 2024-04-17
1
+ ## [2.7.2] - 2024-04-17
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
+ - Don't return duplicated attributes from complex restriction
5
6
 
6
7
  ## [2.6.3] - 2024-04-13
7
8
 
@@ -62,8 +62,18 @@ module XSD
62
62
  # @param [Boolean] include_base
63
63
  # @return Array<Element>
64
64
  def collect_elements(include_base = false)
65
- # By default we do not include base element for complex restrictions
66
- super
65
+ # Don't include elements from base by default, that will lead to element duplicates because
66
+ # elements in complex restriction MUST be all listen in restricting type
67
+ super(include_base)
68
+ end
69
+
70
+ # Get all available attributes on the current stack level, optionally including base type attributes
71
+ # @param [Boolean] include_base
72
+ # @return Array<Attribute>
73
+ def collect_attributes(include_base = true)
74
+ result = super(include_base)
75
+ # Filter restricted attributes to avoid duplicates from restricting and restricted type
76
+ result.inject({}) { |hash, item| hash[item.name] = item; hash }.values if include_base
67
77
  end
68
78
  end
69
79
  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.1'
4
+ VERSION = '2.7.2'
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.1
4
+ version: 2.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - d.arkhipov