openapi3_parser 0.9.2 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
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 +6 -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 -12
  40. metadata +10 -136
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 235f373ec4962d88f12123599e593440027d21029afb5b234689a9b5a452b25f
4
- data.tar.gz: 34bb8ef23dda618a8d8e00b7bb50c6192ff64725e3c7c7cc31d91c41bc30ecdd
3
+ metadata.gz: dc09689a55a25d70fd2be58c314a33732a74d9868082c35a71104f34b331ec4c
4
+ data.tar.gz: 12a9d609fd51e4ab740a2a7895ba75079e288c69925b3da8c045c1b27981e2d0
5
5
  SHA512:
6
- metadata.gz: 5fa9a10c3bec7fd12478cd18afbb89125a05078e8234b2112af93c8fbedc0b3b7e51f7adcd8d25737af9df6692ec135f1a3034fe8b89bbcfd35acb5b8348515e
7
- data.tar.gz: 6ee1b372abe88a4931d1dd294a7c125da5c88d98c21c383264c3d47aa323bb5a2fc3fffae8e8966eb357085b89797cfc9bad5510cdf983f2c3ad6b11d63cf2ff
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,9 @@
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
+
1
7
  # 0.9.2
2
8
 
3
9
  - No longer require a specific Psych dependency to instead use Ruby stdlib
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.2"
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,17 +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
-
32
- spec.add_development_dependency "bundler"
33
- spec.add_development_dependency "byebug", "~> 11.0"
34
- spec.add_development_dependency "rake"
35
- spec.add_development_dependency "rspec", "~> 3.9"
36
- spec.add_development_dependency "rubocop", "~> 1"
37
- spec.add_development_dependency "rubocop-rake", "~> 0.5"
38
- spec.add_development_dependency "rubocop-rspec", "~> 2"
39
- spec.add_development_dependency "simplecov", "~> 0.19"
40
- spec.add_development_dependency "webmock", "~> 3.8"
30
+ spec.add_dependency "commonmarker", ">= 1.0"
41
31
  end
metadata CHANGED
@@ -1,155 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openapi3_parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.2
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Dew
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-03-21 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: bundler
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: byebug
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '11.0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '11.0'
55
- - !ruby/object:Gem::Dependency
56
- name: rake
57
15
  requirement: !ruby/object:Gem::Requirement
58
16
  requirements:
59
17
  - - ">="
60
18
  - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
19
+ version: '1.0'
20
+ type: :runtime
63
21
  prerelease: false
64
22
  version_requirements: !ruby/object:Gem::Requirement
65
23
  requirements:
66
24
  - - ">="
67
25
  - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: rspec
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: '3.9'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: '3.9'
83
- - !ruby/object:Gem::Dependency
84
- name: rubocop
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: '1'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: '1'
97
- - !ruby/object:Gem::Dependency
98
- name: rubocop-rake
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '0.5'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: '0.5'
111
- - !ruby/object:Gem::Dependency
112
- name: rubocop-rspec
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: '2'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: '2'
125
- - !ruby/object:Gem::Dependency
126
- name: simplecov
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - "~>"
130
- - !ruby/object:Gem::Version
131
- version: '0.19'
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - "~>"
137
- - !ruby/object:Gem::Version
138
- version: '0.19'
139
- - !ruby/object:Gem::Dependency
140
- name: webmock
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - "~>"
144
- - !ruby/object:Gem::Version
145
- version: '3.8'
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - "~>"
151
- - !ruby/object:Gem::Version
152
- version: '3.8'
26
+ version: '1.0'
153
27
  description: |2
154
28
  A tool to parse and validate OpenAPI V3 files.
155
29
  Aims to provide complete compatibility with the OpenAPI specification and
@@ -288,7 +162,7 @@ licenses:
288
162
  - MIT
289
163
  metadata:
290
164
  rubygems_mfa_required: 'true'
291
- post_install_message:
165
+ post_install_message:
292
166
  rdoc_options: []
293
167
  require_paths:
294
168
  - lib
@@ -296,15 +170,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
296
170
  requirements:
297
171
  - - ">="
298
172
  - !ruby/object:Gem::Version
299
- version: 2.6.0
173
+ version: '3.1'
300
174
  required_rubygems_version: !ruby/object:Gem::Requirement
301
175
  requirements:
302
176
  - - ">="
303
177
  - !ruby/object:Gem::Version
304
178
  version: '0'
305
179
  requirements: []
306
- rubygems_version: 3.0.3.1
307
- signing_key:
180
+ rubygems_version: 3.3.27
181
+ signing_key:
308
182
  specification_version: 4
309
183
  summary: An OpenAPI V3 parser for Ruby
310
184
  test_files: []