xsd 2.7.0 → 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: 6ec3eb825c36a39f706cd6a684d294b443fa7c59a4e9494ef8b1a6e65f226e5e
4
- data.tar.gz: 659b6e95914a0d3a4e04c7b5e17ec54cebbda343b8154b7cd5ff6dd9f2a2ca93
3
+ metadata.gz: ac666b4ba9690ed163376b0232dec21ba29c7098f2362b6ba9b1d5751fa60ca2
4
+ data.tar.gz: 8eedebb55d21670bf6620a892073b8c4af9a269e39be1f20e66a1873749c1c76
5
5
  SHA512:
6
- metadata.gz: 7d5dc6738b374642049d316e7213f2b7c83177182cc8aeed164ff7253d8c3a349faf6c46a8781ad1734fa4daa5337462cee769d72bdd7c69d959e18b3ea8605b
7
- data.tar.gz: e1d929216f6e9239f5ab82ddaf20558b6e562917e6f1c51c392bd988c699f73af0500f9837fd85c8f76afaccb170f88c6a3ddd723b0be7660e596e1010ef7aa1
6
+ metadata.gz: def1638cb816c68f2539611eb5ff2fd5328d729dab3ea530546f54e362f08fb39c06c325f2d734f934231404242adb85f560458c2a1ca8570f482a10fe4e0144
7
+ data.tar.gz: f62492a9cec4f219cb2b966d033b66c7d7a5f1cfdb7c27ac0bef5a5d7fdc3a3aa3265e5ea8c41fba8069433041fc210ceb7521f60304e3a0704a721bf1b0f567
data/CHANGELOG.md CHANGED
@@ -1,6 +1,8 @@
1
- ## [2.7.0] - 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
+ - Make multiple_allowed? available on all definitions with max occurs
5
+ - Don't return duplicated attributes from complex restriction
4
6
 
5
7
  ## [2.6.3] - 2024-04-13
6
8
 
@@ -100,12 +100,6 @@ module XSD
100
100
  !required?
101
101
  end
102
102
 
103
- # Determine if element may occur multiple times
104
- # @return Boolean
105
- def multiple_allowed?
106
- computed_max_occurs == :unbounded || computed_max_occurs > 1
107
- end
108
-
109
103
  # Determine if element has complex content
110
104
  # @return Boolean
111
105
  def complex_content?
@@ -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
@@ -42,5 +42,11 @@ module XSD
42
42
  min_occurs
43
43
  end
44
44
  end
45
+
46
+ # Determine if element may occur multiple times
47
+ # @return Boolean
48
+ def multiple_allowed?
49
+ computed_max_occurs == :unbounded || computed_max_occurs > 1
50
+ end
45
51
  end
46
52
  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.0'
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.0
4
+ version: 2.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - d.arkhipov