openapi3_parser 0.9.1 → 0.10.0

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.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +4 -4
  3. data/.ruby-version +1 -1
  4. data/CHANGELOG.md +10 -0
  5. data/Gemfile +10 -0
  6. data/README.md +2 -2
  7. data/lib/openapi3_parser/document/reference_registry.rb +1 -1
  8. data/lib/openapi3_parser/markdown.rb +1 -1
  9. data/lib/openapi3_parser/node/array.rb +2 -2
  10. data/lib/openapi3_parser/node/context.rb +1 -1
  11. data/lib/openapi3_parser/node/map.rb +2 -2
  12. data/lib/openapi3_parser/node/object.rb +2 -2
  13. data/lib/openapi3_parser/node/placeholder.rb +2 -2
  14. data/lib/openapi3_parser/node_factory/array.rb +2 -2
  15. data/lib/openapi3_parser/node_factory/context.rb +4 -4
  16. data/lib/openapi3_parser/node_factory/field.rb +1 -1
  17. data/lib/openapi3_parser/node_factory/map.rb +2 -2
  18. data/lib/openapi3_parser/node_factory/object_factory/dsl.rb +2 -2
  19. data/lib/openapi3_parser/node_factory/object_factory/node_builder.rb +1 -1
  20. data/lib/openapi3_parser/node_factory/object_factory/validator.rb +5 -5
  21. data/lib/openapi3_parser/node_factory/paths.rb +1 -1
  22. data/lib/openapi3_parser/node_factory/request_body.rb +1 -1
  23. data/lib/openapi3_parser/node_factory/responses.rb +2 -2
  24. data/lib/openapi3_parser/node_factory/type_checker.rb +2 -2
  25. data/lib/openapi3_parser/node_factory.rb +1 -1
  26. data/lib/openapi3_parser/source/pointer.rb +8 -3
  27. data/lib/openapi3_parser/source.rb +2 -2
  28. data/lib/openapi3_parser/source_input/file.rb +1 -1
  29. data/lib/openapi3_parser/source_input/raw.rb +2 -2
  30. data/lib/openapi3_parser/validation/error_collection.rb +2 -2
  31. data/lib/openapi3_parser/validators/component_keys.rb +1 -1
  32. data/lib/openapi3_parser/validators/email.rb +1 -1
  33. data/lib/openapi3_parser/validators/media_type.rb +1 -1
  34. data/lib/openapi3_parser/validators/mutually_exclusive_fields.rb +3 -3
  35. data/lib/openapi3_parser/validators/required_fields.rb +1 -1
  36. data/lib/openapi3_parser/validators/unexpected_fields.rb +1 -1
  37. data/lib/openapi3_parser/version.rb +1 -1
  38. data/lib/openapi3_parser.rb +1 -1
  39. data/openapi3_parser.gemspec +2 -13
  40. metadata +7 -147
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5904884ad75e5d50acec8b37e27d4888ee903adab23998a78f884b4595e271dc
4
- data.tar.gz: 8af9725d24ae912bac01b9be995be1d0105801cd245b7698508bb840b7e6da6a
3
+ metadata.gz: dc09689a55a25d70fd2be58c314a33732a74d9868082c35a71104f34b331ec4c
4
+ data.tar.gz: 12a9d609fd51e4ab740a2a7895ba75079e288c69925b3da8c045c1b27981e2d0
5
5
  SHA512:
6
- metadata.gz: 4edb5b8d4eec5c510ba62f58a2fb99b5156271548183d4dbc14039d17a0f14c504f466c359543cd871f8530d520e144ec03db1782fb8bcf6c006efb1434c6b45
7
- data.tar.gz: 48f873eb9a0731fb8918b2015cb5263db8b9aeb0c6c24fe4e03e4d0d2be752f728efdecbff08064db915278e6862ad98f77259ed5a7d723e0f9c31cfd82debea
6
+ metadata.gz: 41873fba14f02dc8c94603dabdfde709fa4a8b10ea1e40090314c086f80c40345b4f342f54b6fbeb0eb33a3e0ca2a17fb863acbe2952005108341895462b59a2
7
+ data.tar.gz: 86b516a12e7eacce495b208554dccdeb4f1e7478156f808f1e503bbe34c49a88a9a3aa05b22998ff0186341835f8fb417c004969a74d4cbe30fb48e58795bc95
@@ -3,21 +3,21 @@ jobs:
3
3
  test:
4
4
  strategy:
5
5
  matrix:
6
- ruby: [2.6, 2.7, 3.0, 3.1]
6
+ ruby: [3.1, 3.2, 3.3]
7
7
  runs-on: ubuntu-latest
8
8
  steps:
9
- - uses: actions/checkout@v2
9
+ - uses: actions/checkout@v4
10
10
  - uses: ruby/setup-ruby@v1
11
11
  with:
12
12
  bundler-cache: true
13
13
  ruby-version: ${{ matrix.ruby }}
14
14
  - name: Test Ruby ${{ matrix.ruby }}
15
15
  run: bundle exec rake
16
- if: matrix.ruby != '2.6'
16
+ if: matrix.ruby != '3.1'
17
17
  - name: Test and publish coverage for Ruby ${{ matrix.ruby }}
18
18
  uses: paambaati/codeclimate-action@v2.7.5
19
19
  env:
20
20
  CC_TEST_REPORTER_ID: 8bc2d8e54331569aeb442094c21cb64a58d6efa0670f65ff00d9ae887f63c0b4
21
21
  with:
22
22
  coverageCommand: bundle exec rake
23
- if: matrix.ruby == '2.6'
23
+ if: matrix.ruby == '3.1'
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.6.9
1
+ 3.1.5
data/CHANGELOG.md CHANGED
@@ -1,3 +1,13 @@
1
+ # 0.10.0
2
+
3
+ - Support JSON pointer tokens of ~0 and ~1, thanks @kuboon
4
+ - Require Commonmarker > 1, fixing warnings in Ruby > 3.1
5
+ - Drop support for Ruby < 3.1
6
+
7
+ # 0.9.2
8
+
9
+ - No longer require a specific Psych dependency to instead use Ruby stdlib
10
+
1
11
  # 0.9.1
2
12
 
3
13
  - Fix Schema#requires? incorrectly returning true for referenced properties -
data/Gemfile CHANGED
@@ -3,3 +3,13 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gemspec
6
+
7
+ gem "bundler"
8
+ gem "byebug", "~> 11.0"
9
+ gem "rake"
10
+ gem "rspec", "~> 3.9"
11
+ gem "rubocop", "~> 1"
12
+ gem "rubocop-rake", "~> 0.5"
13
+ gem "rubocop-rspec", "~> 2"
14
+ gem "simplecov", "~> 0.19"
15
+ gem "webmock", "~> 3.8"
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # OpenAPI 3 Parser
2
2
 
3
- [![Build Status](https://travis-ci.org/kevindew/openapi3_parser.svg?branch=main)](https://travis-ci.org/kevindew/openapi3_parser)
3
+ ![ci workflow](https://github.com/kevindew/openapi3_parser/actions/workflows/ci.yml/badge.svg)
4
4
 
5
5
  This a Ruby based parser/validator for [OpenAPI 3][openapi-3]. It is used to
6
6
  convert an OpenAPI file (can be a local file, a URL, a string or even a Ruby
@@ -121,7 +121,7 @@ You can install this gem into your bundler application by adding this line to
121
121
  your Gemfile:
122
122
 
123
123
  ```
124
- gem "openapi3_parser", "~> 0.9.0"
124
+ gem "openapi3_parser", "~> 0.10.0"
125
125
  ```
126
126
 
127
127
  and then running `$ bundle install`
@@ -58,7 +58,7 @@ module Openapi3Parser
58
58
  reference_factory_context)
59
59
  next_context = NodeFactory::Context.resolved_reference(
60
60
  reference_factory_context,
61
- source_location: source_location
61
+ source_location:
62
62
  )
63
63
 
64
64
  if unbuilt_factory.is_a?(Class)
@@ -9,7 +9,7 @@ module Openapi3Parser
9
9
  # @param [String] text
10
10
  # @return [String]
11
11
  def self.to_html(text)
12
- CommonMarker.render_doc(text).to_html
12
+ Commonmarker.to_html(text)
13
13
  end
14
14
  end
15
15
  end
@@ -31,8 +31,8 @@ module Openapi3Parser
31
31
  # Iterates through the data of this node, used by Enumerable
32
32
  #
33
33
  # @return [Object]
34
- def each(&block)
35
- Placeholder.each(node_data, &block)
34
+ def each(&)
35
+ Placeholder.each(node_data, &)
36
36
  end
37
37
 
38
38
  # @param [Any] other
@@ -39,7 +39,7 @@ module Openapi3Parser
39
39
  )
40
40
 
41
41
  new(factory_context.input,
42
- document_location: document_location,
42
+ document_location:,
43
43
  source_location: factory_context.source_location)
44
44
  end
45
45
 
@@ -59,8 +59,8 @@ module Openapi3Parser
59
59
  # Iterates through the data of this node, used by Enumerable
60
60
  #
61
61
  # @return [Object]
62
- def each(&block)
63
- Placeholder.each(node_data, &block)
62
+ def each(&)
63
+ Placeholder.each(node_data, &)
64
64
  end
65
65
 
66
66
  # Provide an array of values for this object, a partner to the #keys
@@ -59,8 +59,8 @@ module Openapi3Parser
59
59
  # Iterates through the data of this node, used by Enumerable
60
60
  #
61
61
  # @return [Object]
62
- def each(&block)
63
- Placeholder.each(node_data, &block)
62
+ def each(&)
63
+ Placeholder.each(node_data, &)
64
64
  end
65
65
 
66
66
  # Provide an array of values for this object, a partner to the #keys
@@ -18,7 +18,7 @@ module Openapi3Parser
18
18
  # Used to iterate through hashes or arrays that may contain
19
19
  # Placeholder objects where these are resolved to being nodes
20
20
  # before iteration
21
- def self.each(node_data, &block)
21
+ def self.each(node_data, &)
22
22
  resolved =
23
23
  if node_data.respond_to?(:keys)
24
24
  node_data.transform_values do |value|
@@ -28,7 +28,7 @@ module Openapi3Parser
28
28
  node_data.map { |item| resolve(item) }
29
29
  end
30
30
 
31
- resolved.each(&block)
31
+ resolved.each(&)
32
32
  end
33
33
 
34
34
  attr_reader :node_factory, :field, :parent_context
@@ -174,7 +174,7 @@ module Openapi3Parser
174
174
  else
175
175
  TypeChecker.validate_type(validatable,
176
176
  type: factory.value_input_type,
177
- context: context)
177
+ context:)
178
178
  end
179
179
  end
180
180
 
@@ -185,7 +185,7 @@ module Openapi3Parser
185
185
 
186
186
  first_error = validatable.errors.first
187
187
  raise Openapi3Parser::Error::InvalidData,
188
- "Invalid data for #{first_error.context.location_summary}: "\
188
+ "Invalid data for #{first_error.context.location_summary}: " \
189
189
  "#{first_error.message}"
190
190
  end
191
191
 
@@ -42,7 +42,7 @@ module Openapi3Parser
42
42
  end
43
43
  source_location = Source::Location.next_field(pc.source_location, field)
44
44
  new(input,
45
- source_location: source_location,
45
+ source_location:,
46
46
  reference_locations: pc.reference_locations)
47
47
  end
48
48
 
@@ -57,8 +57,8 @@ module Openapi3Parser
57
57
 
58
58
  data = source_location.data if source_location.source_available?
59
59
  new(data,
60
- source_location: source_location,
61
- reference_locations: reference_locations)
60
+ source_location:,
61
+ reference_locations:)
62
62
  end
63
63
 
64
64
  attr_reader :input, :source_location, :reference_locations
@@ -91,7 +91,7 @@ module Openapi3Parser
91
91
  # @param [Boolean] recursive
92
92
  # @return [Source::ResolvedReference]
93
93
  def resolve_reference(reference, factory, recursive: false)
94
- source.resolve_reference(reference, factory, self, recursive: recursive)
94
+ source.resolve_reference(reference, factory, self, recursive:)
95
95
  end
96
96
 
97
97
  # Used to show when an recursive reference loop has begun
@@ -108,7 +108,7 @@ module Openapi3Parser
108
108
 
109
109
  first_error = validatable.errors.first
110
110
  raise Openapi3Parser::Error::InvalidData,
111
- "Invalid data for #{first_error.context.location_summary}: "\
111
+ "Invalid data for #{first_error.context.location_summary}: " \
112
112
  "#{first_error.message}"
113
113
  end
114
114
 
@@ -193,7 +193,7 @@ module Openapi3Parser
193
193
  else
194
194
  TypeChecker.validate_type(validatable,
195
195
  type: factory.value_input_type,
196
- context: context)
196
+ context:)
197
197
  end
198
198
  end
199
199
 
@@ -204,7 +204,7 @@ module Openapi3Parser
204
204
 
205
205
  first_error = validatable.errors.first
206
206
  raise Openapi3Parser::Error::InvalidData,
207
- "Invalid data for #{first_error.context.location_summary}: "\
207
+ "Invalid data for #{first_error.context.location_summary}: " \
208
208
  "#{first_error.message}"
209
209
  end
210
210
 
@@ -32,8 +32,8 @@ module Openapi3Parser
32
32
  def mutually_exclusive(*fields, required: false)
33
33
  @mutually_exclusive_fields ||= []
34
34
  @mutually_exclusive_fields << MutuallyExclusiveField.new(
35
- fields: fields,
36
- required: required
35
+ fields:,
36
+ required:
37
37
  )
38
38
  end
39
39
 
@@ -46,7 +46,7 @@ module Openapi3Parser
46
46
  end
47
47
 
48
48
  def validate(raise_on_invalid:)
49
- Validator.call(factory, raise_on_invalid: raise_on_invalid)
49
+ Validator.call(factory, raise_on_invalid:)
50
50
  end
51
51
 
52
52
  def build_node_data(node_context)
@@ -34,7 +34,7 @@ module Openapi3Parser
34
34
  Validators::RequiredFields.call(
35
35
  validatable,
36
36
  required_fields: factory.required_fields,
37
- raise_on_invalid: raise_on_invalid
37
+ raise_on_invalid:
38
38
  )
39
39
  end
40
40
 
@@ -43,7 +43,7 @@ module Openapi3Parser
43
43
  validatable,
44
44
  allow_extensions: factory.allowed_extensions?,
45
45
  allowed_fields: factory.allowed_fields,
46
- raise_on_invalid: raise_on_invalid
46
+ raise_on_invalid:
47
47
  )
48
48
  end
49
49
 
@@ -51,7 +51,7 @@ module Openapi3Parser
51
51
  Validators::MutuallyExclusiveFields.call(
52
52
  validatable,
53
53
  mutually_exclusive_fields: factory.mutually_exclusive_fields,
54
- raise_on_invalid: raise_on_invalid
54
+ raise_on_invalid:
55
55
  )
56
56
  end
57
57
 
@@ -112,7 +112,7 @@ module Openapi3Parser
112
112
  name,
113
113
  factory.raw_input[name])
114
114
  field_validatable = Validation::Validatable.new(factory,
115
- context: context)
115
+ context:)
116
116
 
117
117
  valid_input_type = field_config.check_input_type(
118
118
  field_validatable,
@@ -145,7 +145,7 @@ module Openapi3Parser
145
145
 
146
146
  location_summary = errors.first.context.location_summary
147
147
  raise Error::InvalidData,
148
- "Invalid data for #{location_summary}: "\
148
+ "Invalid data for #{location_summary}: " \
149
149
  "#{errors.first.message}"
150
150
  end
151
151
 
@@ -18,7 +18,7 @@ module Openapi3Parser
18
18
  /?
19
19
  )*
20
20
  \Z
21
- }x.freeze
21
+ }x
22
22
 
23
23
  def initialize(context)
24
24
  factory = NodeFactory::OptionalReference.new(NodeFactory::PathItem)
@@ -32,7 +32,7 @@ module Openapi3Parser
32
32
  def call(validatable)
33
33
  # This validation isn't actually mentioned in the spec, but it
34
34
  # doesn't seem to make sense if this is an empty hash.
35
- return validatable.add_error("Expected to have at least 1 item") if validatable.input.size.zero?
35
+ return validatable.add_error("Expected to have at least 1 item") if validatable.input.empty?
36
36
 
37
37
  validatable.input.each_key do |key|
38
38
  message = Validators::MediaType.call(key)
@@ -13,7 +13,7 @@ module Openapi3Parser
13
13
  [1-5]([0-9][0-9]|XX)
14
14
  )
15
15
  \Z
16
- /x.freeze
16
+ /x
17
17
 
18
18
  def initialize(context)
19
19
  factory = NodeFactory::OptionalReference.new(NodeFactory::Response)
@@ -39,7 +39,7 @@ module Openapi3Parser
39
39
  return if invalid.empty?
40
40
 
41
41
  codes = invalid.map { |k| "'#{k}'" }.join(", ")
42
- validatable.add_error("Invalid responses keys: #{codes} - default, "\
42
+ validatable.add_error("Invalid responses keys: #{codes} - default, " \
43
43
  "status codes and status code ranges allowed")
44
44
  end
45
45
  end
@@ -53,7 +53,7 @@ module Openapi3Parser
53
53
  return true if !type || valid_type?(context.input)
54
54
 
55
55
  raise Error::InvalidType,
56
- "Invalid type for #{context.location_summary}: "\
56
+ "Invalid type for #{context.location_summary}: " \
57
57
  "#{field_error_message}"
58
58
  end
59
59
 
@@ -61,7 +61,7 @@ module Openapi3Parser
61
61
  return true if !type || valid_keys?(context.input)
62
62
 
63
63
  raise Error::InvalidType,
64
- "Invalid keys for #{context.location_summary}: "\
64
+ "Invalid keys for #{context.location_summary}: " \
65
65
  "#{keys_error_message}"
66
66
  end
67
67
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Openapi3Parser
4
4
  module NodeFactory
5
- EXTENSION_REGEX = /^x-(.*)/.freeze
5
+ EXTENSION_REGEX = /^x-(.*)/
6
6
  end
7
7
  end
@@ -13,10 +13,12 @@ module Openapi3Parser
13
13
  segments = fragment.split("/").map do |part|
14
14
  next if part == ""
15
15
 
16
+ # replace JSON pointer specific encodings
17
+ part = part.gsub("~1", "/").gsub("~0", "~")
16
18
  unescaped = CGI.unescape(part.gsub("%20", "+"))
17
19
  unescaped.match?(/\A\d+\z/) ? unescaped.to_i : unescaped
18
20
  end
19
- new(segments.compact, absolute: absolute)
21
+ new(segments.compact, absolute:)
20
22
  end
21
23
 
22
24
  def self.merge_pointers(base_pointer, new_pointer)
@@ -37,8 +39,11 @@ module Openapi3Parser
37
39
  end
38
40
 
39
41
  def fragment
40
- fragment = segments.map { |s| CGI.escape(s.to_s).gsub("+", "%20") }
41
- .join("/")
42
+ escaped = segments.map do |s|
43
+ part = s.to_s.gsub("~", "~0").gsub("/", "~1")
44
+ CGI.escape(part).gsub("+", "%20")
45
+ end
46
+ fragment = escaped.join("/")
42
47
  "##{absolute ? fragment.prepend('/') : fragment}"
43
48
  end
44
49
 
@@ -59,9 +59,9 @@ module Openapi3Parser
59
59
  end
60
60
 
61
61
  ResolvedReference.new(
62
- source_location: source_location,
62
+ source_location:,
63
63
  object_type: unbuilt_factory.object_type,
64
- reference_registry: reference_registry
64
+ reference_registry:
65
65
  )
66
66
  end
67
67
 
@@ -31,7 +31,7 @@ module Openapi3Parser
31
31
  # @param [Source::Reference] reference
32
32
  # @return [SourceInput]
33
33
  def resolve_next(reference)
34
- ResolveNext.call(reference, self, working_directory: working_directory)
34
+ ResolveNext.call(reference, self, working_directory:)
35
35
  end
36
36
 
37
37
  # @see SourceInput#other
@@ -35,8 +35,8 @@ module Openapi3Parser
35
35
  def resolve_next(reference)
36
36
  ResolveNext.call(reference,
37
37
  self,
38
- base_url: base_url,
39
- working_directory: working_directory)
38
+ base_url:,
39
+ working_directory:)
40
40
  end
41
41
 
42
42
  # @see SourceInput#other
@@ -27,8 +27,8 @@ module Openapi3Parser
27
27
  errors.empty?
28
28
  end
29
29
 
30
- def each(&block)
31
- errors.each(&block)
30
+ def each(&)
31
+ errors.each(&)
32
32
  end
33
33
 
34
34
  # Group errors by those in the same location for the same node
@@ -6,7 +6,7 @@ module Openapi3Parser
6
6
  # defined for a Components node.
7
7
  # As defined: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.1.md#components-object
8
8
  class ComponentKeys
9
- REGEX = /\A[a-zA-Z0-9.\-_]+\Z/.freeze
9
+ REGEX = /\A[a-zA-Z0-9.\-_]+\Z/
10
10
 
11
11
  def self.call(input)
12
12
  invalid = input.keys.reject { |key| REGEX.match(key) }
@@ -12,7 +12,7 @@ module Openapi3Parser
12
12
  [a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?
13
13
  (?:.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*
14
14
  \Z
15
- }x.freeze
15
+ }x
16
16
 
17
17
  def self.call(input)
18
18
  message = %("#{input}" is not a valid email address)
@@ -9,7 +9,7 @@ module Openapi3Parser
9
9
  / # separating slash
10
10
  ([-+.\w]+|\*) # word (with +, - & .) or asterisk
11
11
  \Z
12
- }x.freeze
12
+ }x
13
13
 
14
14
  def self.call(input)
15
15
  message = %("#{input}" is not a valid media type)
@@ -37,7 +37,7 @@ module Openapi3Parser
37
37
  if raise_on_invalid
38
38
  location_summary = validatable.context.location_summary
39
39
  raise Error::MissingFields,
40
- "Mutually exclusive fields for "\
40
+ "Mutually exclusive fields for " \
41
41
  "#{location_summary}: #{required_errors.first}"
42
42
  else
43
43
  validatable.add_errors(required_errors)
@@ -52,8 +52,8 @@ module Openapi3Parser
52
52
  if raise_on_invalid
53
53
  location_summary = validatable.context.location_summary
54
54
  raise Error::UnexpectedFields,
55
- "Mutually exclusive fields for "\
56
- "#{location_summary}: "\
55
+ "Mutually exclusive fields for " \
56
+ "#{location_summary}: " \
57
57
  "#{exclusive_errors.first}"
58
58
  else
59
59
  validatable.add_errors(exclusive_errors)
@@ -23,7 +23,7 @@ module Openapi3Parser
23
23
  if raise_on_invalid
24
24
  location_summary = validatable.context.location_summary
25
25
  raise Openapi3Parser::Error::MissingFields,
26
- "Missing required fields for "\
26
+ "Missing required fields for " \
27
27
  "#{location_summary}: #{missing_fields.sentence_join}"
28
28
  else
29
29
  validatable.add_error(
@@ -24,7 +24,7 @@ module Openapi3Parser
24
24
  if raise_on_invalid
25
25
  location_summary = validatable.context.location_summary
26
26
  raise Openapi3Parser::Error::UnexpectedFields,
27
- "Unexpected fields for #{location_summary}: "\
27
+ "Unexpected fields for #{location_summary}: " \
28
28
  "#{fields.sentence_join}"
29
29
  else
30
30
  validatable.add_error(
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Openapi3Parser
4
- VERSION = "0.9.1"
4
+ VERSION = "0.10.0"
5
5
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- files = Dir.glob(File.join(__dir__, "openapi3_parser", "**", "*.rb")).sort
3
+ files = Dir.glob(File.join(__dir__, "openapi3_parser", "**", "*.rb"))
4
4
  files.each { |file| require file }
5
5
 
6
6
  module Openapi3Parser
@@ -25,18 +25,7 @@ Gem::Specification.new do |spec|
25
25
  f.match(%r{^spec/})
26
26
  end
27
27
 
28
- spec.required_ruby_version = ">= 2.6.0"
28
+ spec.required_ruby_version = ">= 3.1"
29
29
 
30
- spec.add_dependency "commonmarker", "~> 0.17"
31
- spec.add_dependency "psych", "~> 3.1"
32
-
33
- spec.add_development_dependency "bundler"
34
- spec.add_development_dependency "byebug", "~> 11.0"
35
- spec.add_development_dependency "rake"
36
- spec.add_development_dependency "rspec", "~> 3.9"
37
- spec.add_development_dependency "rubocop", "~> 1"
38
- spec.add_development_dependency "rubocop-rake", "~> 0.5"
39
- spec.add_development_dependency "rubocop-rspec", "~> 2"
40
- spec.add_development_dependency "simplecov", "~> 0.19"
41
- spec.add_development_dependency "webmock", "~> 3.8"
30
+ spec.add_dependency "commonmarker", ">= 1.0"
42
31
  end
metadata CHANGED
@@ -1,169 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openapi3_parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.1
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Dew
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-12-27 00:00:00.000000000 Z
11
+ date: 2024-05-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: commonmarker
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '0.17'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '0.17'
27
- - !ruby/object:Gem::Dependency
28
- name: psych
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '3.1'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '3.1'
41
- - !ruby/object:Gem::Dependency
42
- name: bundler
43
15
  requirement: !ruby/object:Gem::Requirement
44
16
  requirements:
45
17
  - - ">="
46
18
  - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: byebug
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '11.0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '11.0'
69
- - !ruby/object:Gem::Dependency
70
- name: rake
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
19
+ version: '1.0'
20
+ type: :runtime
77
21
  prerelease: false
78
22
  version_requirements: !ruby/object:Gem::Requirement
79
23
  requirements:
80
24
  - - ">="
81
25
  - !ruby/object:Gem::Version
82
- version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: rspec
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: '3.9'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: '3.9'
97
- - !ruby/object:Gem::Dependency
98
- name: rubocop
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '1'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: '1'
111
- - !ruby/object:Gem::Dependency
112
- name: rubocop-rake
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: '0.5'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: '0.5'
125
- - !ruby/object:Gem::Dependency
126
- name: rubocop-rspec
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - "~>"
130
- - !ruby/object:Gem::Version
131
- version: '2'
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - "~>"
137
- - !ruby/object:Gem::Version
138
- version: '2'
139
- - !ruby/object:Gem::Dependency
140
- name: simplecov
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - "~>"
144
- - !ruby/object:Gem::Version
145
- version: '0.19'
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - "~>"
151
- - !ruby/object:Gem::Version
152
- version: '0.19'
153
- - !ruby/object:Gem::Dependency
154
- name: webmock
155
- requirement: !ruby/object:Gem::Requirement
156
- requirements:
157
- - - "~>"
158
- - !ruby/object:Gem::Version
159
- version: '3.8'
160
- type: :development
161
- prerelease: false
162
- version_requirements: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - "~>"
165
- - !ruby/object:Gem::Version
166
- version: '3.8'
26
+ version: '1.0'
167
27
  description: |2
168
28
  A tool to parse and validate OpenAPI V3 files.
169
29
  Aims to provide complete compatibility with the OpenAPI specification and
@@ -310,14 +170,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
310
170
  requirements:
311
171
  - - ">="
312
172
  - !ruby/object:Gem::Version
313
- version: 2.6.0
173
+ version: '3.1'
314
174
  required_rubygems_version: !ruby/object:Gem::Requirement
315
175
  requirements:
316
176
  - - ">="
317
177
  - !ruby/object:Gem::Version
318
178
  version: '0'
319
179
  requirements: []
320
- rubygems_version: 3.0.3.1
180
+ rubygems_version: 3.3.27
321
181
  signing_key:
322
182
  specification_version: 4
323
183
  summary: An OpenAPI V3 parser for Ruby