mangadex 5.4.11.3 → 5.5.8

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: fbbc515fa22a74a47bc30674ac2f8f746b73651c4a02d61e50dde6dd53640d1f
4
- data.tar.gz: e2fb5177e657b300f6bc750fd000ab009acc19674510b4326776b3e16508bca7
3
+ metadata.gz: '038676da7b94f64da0e1ba27d2a0f2563153bf785fc027830132330fcaa6db41'
4
+ data.tar.gz: 219bc69785823ce34145b10103149d3f397803a7a8a77732a5ee98983162e211
5
5
  SHA512:
6
- metadata.gz: 5417e6a54522a4d9188a3fb4d15ddcaf96b613e410a20572522ed1a41d668a725ba71fff10e69d90d95f2d4652ef391f1c84d911664fa5509ba3ca929c69d927
7
- data.tar.gz: f831205af93f06716c89ae81ff3e4564fc98176f76a54c77dce4989d10c818553179d3d39d5354d5d4934d69d9b9af848faea30431e0523882be70de4b5b5ce3
6
+ metadata.gz: fab8f18bd656d148f42513e316389b6505aa63c24fc9be2722f8ac4752f9dfb2bfde8749769af69acdf2d90714aa64e87f82ad40a0405cc3bd7158240bb998cc
7
+ data.tar.gz: 4f539c62ada95b984cf96f04b2450385b3bf348d8efcbbb501ab67ac9f21f70c38fb082763b68a3c3851fb572047a07650ab4f80a975987aadea9fb5f4ae505a
@@ -0,0 +1,11 @@
1
+ # To get started with Dependabot version updates, you'll need to specify which
2
+ # package ecosystems to update and where the package manifests are located.
3
+ # Please see the documentation for all configuration options:
4
+ # https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
5
+
6
+ version: 2
7
+ updates:
8
+ - package-ecosystem: "bundler" # See documentation for possible values
9
+ directory: "/" # Location of package manifests
10
+ schedule:
11
+ interval: "daily"
data/Gemfile.lock CHANGED
@@ -1,8 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- mangadex (5.4.11)
5
- activesupport (~> 6.1)
4
+ mangadex (5.5.8)
6
5
  psych (~> 4.0.1)
7
6
  rest-client (~> 2.1)
8
7
  sorbet-runtime
@@ -10,43 +9,42 @@ PATH
10
9
  GEM
11
10
  remote: https://rubygems.org/
12
11
  specs:
13
- activesupport (6.1.4.1)
12
+ activesupport (7.0.2.3)
14
13
  concurrent-ruby (~> 1.0, >= 1.0.2)
15
14
  i18n (>= 1.6, < 2)
16
15
  minitest (>= 5.1)
17
16
  tzinfo (~> 2.0)
18
- zeitwerk (~> 2.3)
19
17
  addressable (2.8.0)
20
18
  public_suffix (>= 2.0.2, < 5.0)
21
19
  coderay (1.1.3)
22
20
  concurrent-ruby (1.1.9)
23
21
  crack (0.4.5)
24
22
  rexml
25
- diff-lcs (1.4.4)
23
+ diff-lcs (1.5.0)
26
24
  domain_name (0.5.20190701)
27
25
  unf (>= 0.0.5, < 1.0.0)
28
26
  hashdiff (1.0.1)
29
27
  http-accept (1.7.0)
30
- http-cookie (1.0.4)
28
+ http-cookie (1.0.5)
31
29
  domain_name (~> 0.5)
32
- i18n (1.8.10)
30
+ i18n (1.10.0)
33
31
  concurrent-ruby (~> 1.0)
34
32
  method_source (1.0.0)
35
33
  mime-types (3.4.1)
36
34
  mime-types-data (~> 3.2015)
37
35
  mime-types-data (3.2022.0105)
38
- minitest (5.14.4)
36
+ minitest (5.15.0)
39
37
  mustermann (1.1.1)
40
38
  ruby2_keywords (~> 0.0.1)
41
39
  netrc (0.11.0)
42
40
  pry (0.14.1)
43
41
  coderay (~> 1.1)
44
42
  method_source (~> 1.0)
45
- psych (4.0.3)
43
+ psych (4.0.4)
46
44
  stringio
47
45
  public_suffix (4.0.6)
48
46
  rack (2.2.3)
49
- rack-protection (2.1.0)
47
+ rack-protection (2.2.0)
50
48
  rack
51
49
  rake (13.0.6)
52
50
  request_interceptor (1.0.0)
@@ -61,46 +59,43 @@ GEM
61
59
  mime-types (>= 1.16, < 4.0)
62
60
  netrc (~> 0.8)
63
61
  rexml (3.2.5)
64
- rspec (3.10.0)
65
- rspec-core (~> 3.10.0)
66
- rspec-expectations (~> 3.10.0)
67
- rspec-mocks (~> 3.10.0)
68
- rspec-core (3.10.1)
69
- rspec-support (~> 3.10.0)
70
- rspec-expectations (3.10.1)
62
+ rspec (3.11.0)
63
+ rspec-core (~> 3.11.0)
64
+ rspec-expectations (~> 3.11.0)
65
+ rspec-mocks (~> 3.11.0)
66
+ rspec-core (3.11.0)
67
+ rspec-support (~> 3.11.0)
68
+ rspec-expectations (3.11.0)
71
69
  diff-lcs (>= 1.2.0, < 2.0)
72
- rspec-support (~> 3.10.0)
73
- rspec-mocks (3.10.2)
70
+ rspec-support (~> 3.11.0)
71
+ rspec-mocks (3.11.0)
74
72
  diff-lcs (>= 1.2.0, < 2.0)
75
- rspec-support (~> 3.10.0)
76
- rspec-support (3.10.2)
73
+ rspec-support (~> 3.11.0)
74
+ rspec-support (3.11.0)
77
75
  ruby2_keywords (0.0.5)
78
- sinatra (2.1.0)
76
+ sinatra (2.2.0)
79
77
  mustermann (~> 1.0)
80
78
  rack (~> 2.2)
81
- rack-protection (= 2.1.0)
79
+ rack-protection (= 2.2.0)
82
80
  tilt (~> 2.0)
83
- smart_properties (1.16.3)
84
- sorbet (0.5.9152)
85
- sorbet-static (= 0.5.9152)
86
- sorbet-runtime (0.5.9542)
87
- sorbet-static (0.5.9152-universal-darwin-20)
88
- sorbet-static (0.5.9152-x86_64-linux)
89
- stringio (3.0.1)
81
+ smart_properties (1.17.0)
82
+ sorbet (0.5.9742)
83
+ sorbet-static (= 0.5.9742)
84
+ sorbet-runtime (0.5.10030)
85
+ sorbet-static (0.5.9742-x86_64-linux)
86
+ stringio (3.0.2)
90
87
  tilt (2.0.10)
91
88
  tzinfo (2.0.4)
92
89
  concurrent-ruby (~> 1.0)
93
90
  unf (0.1.4)
94
91
  unf_ext
95
- unf_ext (0.0.8)
92
+ unf_ext (0.0.8.2)
96
93
  webmock (3.14.0)
97
94
  addressable (>= 2.8.0)
98
95
  crack (>= 0.3.2)
99
96
  hashdiff (>= 0.4.0, < 2.0.0)
100
- zeitwerk (2.4.2)
101
97
 
102
98
  PLATFORMS
103
- x86_64-darwin-20
104
99
  x86_64-linux
105
100
 
106
101
  DEPENDENCIES
data/README.md CHANGED
@@ -4,6 +4,15 @@
4
4
 
5
5
  Welcome to `mangadex`, your next favourite Ruby gem for interacting with [Mangadex](https://mangadex.org).
6
6
 
7
+ ## Important information
8
+
9
+ **By using this gem you accept**:
10
+ - To **credit [Mangadex](https://mangadex.org)**. This gem is your friendly neighbourhood wrapper on _their_ API.
11
+ - To **credit scanlation groups**, especially if you offer the ability to read chapters.
12
+ - **Not to run any ads** on the service that will use this gem. Please do not make money off of Mangadex's services.
13
+
14
+ These are Mangadex's [rules](https://api.mangadex.org/docs.html#section/Acceptable-use-policy), please follow them.
15
+
7
16
  ## Installation
8
17
 
9
18
  Add this line to your application's Gemfile:
@@ -81,6 +90,8 @@ found_manga = response.data
81
90
 
82
91
  #### Authenticate
83
92
 
93
+ with a block...:
94
+
84
95
  ```ruby
85
96
  Mangadex::Auth.login(username: 'username', password: 'password') do |user|
86
97
  # `user` is of type Mangadex::Api::User
@@ -91,6 +102,18 @@ Mangadex::Auth.login(username: 'username', password: 'password') do |user|
91
102
  end
92
103
  ```
93
104
 
105
+ ...or inline...:
106
+
107
+ ```ruby
108
+ # `user` is of type Mangadex::Api::User
109
+ user = Mangadex::Auth.login(username: 'username', password: 'password')
110
+
111
+ puts(user.mangadex_user_id)
112
+ puts(user.session)
113
+ puts(user.refresh)
114
+ puts(user.session_valid_until)
115
+ ```
116
+
94
117
  You can access the authenticated user by using context:
95
118
 
96
119
  ```ruby
data/lib/extensions.rb CHANGED
@@ -1,12 +1,206 @@
1
1
  # typed: true
2
- require "active_support/hash_with_indifferent_access"
2
+
3
+ class Array
4
+ def to_query(key)
5
+ prefix = "#{key}[]"
6
+
7
+ if empty?
8
+ nil.to_query(prefix)
9
+ else
10
+ collect { |value| value.to_query(prefix) }.join "&"
11
+ end
12
+ end
13
+
14
+ def to_param
15
+ collect(&:to_param).join "/"
16
+ end
17
+ end
3
18
 
4
19
  class Hash
5
- def with_indifferent_access
6
- ActiveSupport::HashWithIndifferentAccess.new(self)
20
+ def symbolize_keys
21
+ transform_keys { |key| key.to_sym rescue key }
22
+ end
23
+
24
+ def to_query(namespace = nil)
25
+ query = collect do |key, value|
26
+ unless (value.is_a?(Hash) || value.is_a?(Array)) && value.empty?
27
+ value.to_query(namespace ? "#{namespace}[#{key}]" : key)
28
+ end
29
+ end.compact
30
+
31
+ query.sort! unless namespace.to_s.include?("[]")
32
+ query.join("&")
33
+ end
34
+ alias_method :to_param, :to_query
35
+
36
+ def deep_transform_keys(&block)
37
+ _deep_transform_keys_in_object(self, &block)
38
+ end
39
+
40
+ private
41
+
42
+ def _deep_transform_keys_in_object(object, &block)
43
+ case object
44
+ when Hash
45
+ object.each_with_object({}) do |(key, value), result|
46
+ result[yield(key)] = _deep_transform_keys_in_object(value, &block)
47
+ end
48
+ when Array
49
+ object.map { |e| _deep_transform_keys_in_object(e, &block) }
50
+ else
51
+ object
52
+ end
53
+ end
54
+ end
55
+
56
+ class Object
57
+ def blank?
58
+ respond_to?(:empty?) ? !!empty? : !self
59
+ end
60
+
61
+ def present?
62
+ !blank?
63
+ end
64
+
65
+ def presence
66
+ present? ? self : nil
67
+ end
68
+
69
+ def to_param
70
+ to_s
71
+ end
72
+
73
+ def to_query(key)
74
+ "#{CGI.escape(key.to_param)}=#{CGI.escape(to_param.to_s)}"
75
+ end
76
+ end
77
+
78
+ class NilClass
79
+ def to_param
80
+ self
81
+ end
82
+ end
83
+
84
+ class TrueClass
85
+ def to_param
86
+ self
87
+ end
88
+ end
89
+
90
+ class FalseClass
91
+ def to_param
92
+ self
93
+ end
94
+ end
95
+
96
+ class String
97
+ def to_query(key)
98
+ "#{CGI.escape(key.to_param)}=#{CGI.escape(to_param.to_s)}"
99
+ end
100
+
101
+ def to_param
102
+ to_s
103
+ end
104
+ end
105
+
106
+ class Symbol
107
+ def to_query(key)
108
+ "#{CGI.escape(key.to_param)}=#{CGI.escape(to_param.to_s)}"
109
+ end
110
+ end
111
+
112
+ class StringInquirer < String
113
+ private
114
+
115
+ def respond_to_missing?(method_name, include_private = false)
116
+ method_name.end_with?("?") || super
117
+ end
118
+
119
+ def method_missing(method_name, *arguments)
120
+ if method_name.end_with?("?")
121
+ self == method_name[0..-2]
122
+ else
123
+ super
124
+ end
7
125
  end
126
+ end
127
+
128
+ module Concern
129
+ class MultipleIncludedBlocks < StandardError # :nodoc:
130
+ def initialize
131
+ super "Cannot define multiple 'included' blocks for a Concern"
132
+ end
133
+ end
134
+
135
+ class MultiplePrependBlocks < StandardError # :nodoc:
136
+ def initialize
137
+ super "Cannot define multiple 'prepended' blocks for a Concern"
138
+ end
139
+ end
140
+
141
+ def self.extended(base) # :nodoc:
142
+ base.instance_variable_set(:@_dependencies, [])
143
+ end
144
+
145
+ def append_features(base) # :nodoc:
146
+ if base.instance_variable_defined?(:@_dependencies)
147
+ base.instance_variable_get(:@_dependencies) << self
148
+ false
149
+ else
150
+ return false if base < self
151
+ @_dependencies.each { |dep| base.include(dep) }
152
+ super
153
+ base.extend const_get(:ClassMethods) if const_defined?(:ClassMethods)
154
+ base.class_eval(&@_included_block) if instance_variable_defined?(:@_included_block)
155
+ end
156
+ end
157
+
158
+ def prepend_features(base) # :nodoc:
159
+ if base.instance_variable_defined?(:@_dependencies)
160
+ base.instance_variable_get(:@_dependencies).unshift self
161
+ false
162
+ else
163
+ return false if base < self
164
+ @_dependencies.each { |dep| base.prepend(dep) }
165
+ super
166
+ base.singleton_class.prepend const_get(:ClassMethods) if const_defined?(:ClassMethods)
167
+ base.class_eval(&@_prepended_block) if instance_variable_defined?(:@_prepended_block)
168
+ end
169
+ end
170
+
171
+ def included(base = nil, &block)
172
+ if base.nil?
173
+ if instance_variable_defined?(:@_included_block)
174
+ if @_included_block.source_location != block.source_location
175
+ raise MultipleIncludedBlocks
176
+ end
177
+ else
178
+ @_included_block = block
179
+ end
180
+ else
181
+ super
182
+ end
183
+ end
184
+
185
+ def prepended(base = nil, &block)
186
+ if base.nil?
187
+ if instance_variable_defined?(:@_prepended_block)
188
+ if @_prepended_block.source_location != block.source_location
189
+ raise MultiplePrependBlocks
190
+ end
191
+ else
192
+ @_prepended_block = block
193
+ end
194
+ else
195
+ super
196
+ end
197
+ end
198
+
199
+ def class_methods(&class_methods_module_definition)
200
+ mod = const_defined?(:ClassMethods, false) ?
201
+ const_get(:ClassMethods) :
202
+ const_set(:ClassMethods, Module.new)
8
203
 
9
- def nested_under_indifferent_access
10
- ActiveSupport::HashWithIndifferentAccess.new(self)
204
+ mod.module_eval(&class_methods_module_definition)
11
205
  end
12
206
  end
@@ -57,6 +57,8 @@ module Mangadex
57
57
  def count
58
58
  data.is_a?(Array) ? data.count : nil
59
59
  end
60
+ alias_method :size, :count
61
+ alias_method :length, :count
60
62
 
61
63
  def each(&block)
62
64
  if data.is_a?(Array)
@@ -70,6 +72,14 @@ module Mangadex
70
72
  each.to_a
71
73
  end
72
74
 
75
+ def first
76
+ to_a.first
77
+ end
78
+
79
+ def last
80
+ to_a.last
81
+ end
82
+
73
83
  def as_json(*)
74
84
  Hash(raw_data)
75
85
  end
@@ -15,6 +15,7 @@ module Mangadex
15
15
  :uploader,
16
16
  :external_url,
17
17
  :version,
18
+ :readable_at,
18
19
  :created_at,
19
20
  :updated_at,
20
21
  :publish_at
@@ -1,7 +1,4 @@
1
1
  # typed: false
2
- require "active_support/string_inquirer"
3
- require "active_support/core_ext/module/delegation"
4
-
5
2
  module Mangadex
6
3
  class ContentRating
7
4
  extend T::Sig
@@ -21,8 +18,6 @@ module Mangadex
21
18
  PORNOGRAPHIC => 3,
22
19
  }.freeze
23
20
 
24
- delegate_missing_to :value
25
-
26
21
  sig { params(content_rating: T::Api::ContentRating).returns(T::Array[ContentRating]) }
27
22
  def self.anything_below(content_rating)
28
23
  SCORES.keys.map { |key| ContentRating.new(key) }.select { |record| record <= content_rating }.sort
@@ -38,9 +33,9 @@ module Mangadex
38
33
  @value = ensure_value!(value.to_s)
39
34
  end
40
35
 
41
- sig { returns(ActiveSupport::StringInquirer) }
36
+ sig { returns(StringInquirer) }
42
37
  def value
43
- ActiveSupport::StringInquirer.new(@value)
38
+ StringInquirer.new(@value)
44
39
  end
45
40
 
46
41
  sig { params(other: T.any(ContentRating, String, Symbol)).returns(Integer) }
@@ -67,6 +62,10 @@ module Mangadex
67
62
  value.to_s
68
63
  end
69
64
 
65
+ def method_missing(method_name, *args, **kwargs)
66
+ value.send(method_name, *args, **kwargs)
67
+ end
68
+
70
69
  private
71
70
 
72
71
  sig { params(value: T.any(T::Api::Text, T::Api::ContentRating)).returns(T.any(T::Api::Text, T::Api::ContentRating)) }
@@ -7,6 +7,7 @@ module Mangadex
7
7
  :description,
8
8
  :volume,
9
9
  :file_name,
10
+ :locale,
10
11
  :created_at,
11
12
  :updated_at,
12
13
  :version
@@ -140,8 +140,8 @@ module Mangadex
140
140
  end
141
141
 
142
142
  def validate(args, definition)
143
- args = Hash(args).with_indifferent_access
144
- definition = Hash(definition).with_indifferent_access
143
+ args = Hash(args)
144
+ definition = Hash(definition)
145
145
  return args if definition.empty?
146
146
 
147
147
  errors = []
@@ -1,8 +1,6 @@
1
1
  # typed: false
2
2
  require 'rest-client'
3
3
  require 'json'
4
- require 'active_support/core_ext/object/to_query'
5
- require 'active_support/core_ext/hash/keys'
6
4
 
7
5
  module Mangadex
8
6
  module Internal
@@ -84,7 +82,7 @@ module Mangadex
84
82
  return path if params.blank?
85
83
 
86
84
  params = params.deep_transform_keys do |key|
87
- key.to_s.camelize(:lower)
85
+ Mangadex::Utils.camelize(key.to_s)
88
86
  end
89
87
  "#{path}?#{params.to_query}"
90
88
  end
@@ -1,11 +1,9 @@
1
1
  # typed: false
2
2
 
3
- require "active_support/hash_with_indifferent_access"
4
-
5
3
  module Mangadex
6
4
  module Internal
7
5
  module WithAttributes
8
- extend ActiveSupport::Concern
6
+ extend Concern
9
7
 
10
8
  attr_accessor \
11
9
  :id,
@@ -28,16 +26,18 @@ module Mangadex
28
26
  end
29
27
 
30
28
  def type
31
- self.name.split('::').last.underscore
29
+ Mangadex::Utils.underscore(self.name.split('::').last)
32
30
  end
33
31
 
34
32
  def from_data(data, related_type: nil, source_obj: nil)
35
33
  base_class_name = self.name.gsub('::', '_')
36
34
  klass_name = self.name
37
35
  target_attributes_class_name = "#{base_class_name}_Attributes"
38
-
36
+
37
+ data = data.transform_keys(&:to_s)
38
+
39
39
  klass = if const_defined?(target_attributes_class_name)
40
- target_attributes_class_name.constantize
40
+ Object.const_get(target_attributes_class_name)
41
41
  else
42
42
  class_contents = <<-END
43
43
  # typed: true
@@ -54,13 +54,12 @@ module Mangadex
54
54
  Object.const_get(target_attributes_class_name)
55
55
  end
56
56
 
57
- data = data.with_indifferent_access
58
-
59
57
  relationships = data['relationships']&.map do |relationship_data|
60
58
  Relationship.from_data(relationship_data, MangadexObject.new(**data))
61
59
  end
62
60
 
63
- attributes = klass.new(**Hash(data['attributes']))
61
+ found_attributes = data['attributes'] || {}
62
+ attributes = klass.new(**Hash(found_attributes.symbolize_keys))
64
63
 
65
64
  initialize_hash = {
66
65
  id: data['id'],
@@ -93,6 +92,12 @@ module Mangadex
93
92
  Array(relationships).any?
94
93
  end
95
94
 
95
+ def every(relationship_type)
96
+ Array(relationships).select do |relationship|
97
+ relationship.type == relationship_type.to_s
98
+ end
99
+ end
100
+
96
101
  def method_missing(method_name, *args, **kwargs)
97
102
  if self.class.attributes.include?(method_name.to_sym)
98
103
  return if attributes.nil?
@@ -101,17 +106,13 @@ module Mangadex
101
106
  attributes.send(method_name)
102
107
  elsif any_relationships?
103
108
  existing_relationships = relationships.map(&:type)
104
- original_relationship = method_name.to_s
105
- looking_for_relationship = original_relationship.singularize
106
- is_looking_for_many = original_relationship != looking_for_relationship
109
+ looking_for_relationship = method_name.to_s
107
110
 
108
111
  if existing_relationships.include?(looking_for_relationship)
109
- search_method = is_looking_for_many ? :select : :find
110
- relationships.send(search_method) do |relationship|
112
+ relationships.find do |relationship|
111
113
  relationship.type == looking_for_relationship
112
114
  end
113
- elsif is_looking_for_many
114
- []
115
+ # result.size == 1 ? result.first : result
115
116
  else
116
117
  super
117
118
  end
@@ -19,6 +19,8 @@ module Mangadex
19
19
  :tags,
20
20
  :state,
21
21
  :version,
22
+ :chapter_numbers_reset_on_new_volume,
23
+ :available_translated_languages,
22
24
  :created_at,
23
25
  :updated_at
24
26
 
@@ -116,6 +118,7 @@ module Mangadex
116
118
  '/manga/random',
117
119
  Mangadex::Internal::Definition.validate(args, {
118
120
  includes: { accepts: Array },
121
+ content_rating: { accepts: %w(safe suggestive erotica pornographic), converts: to_a },
119
122
  })
120
123
  )
121
124
  end
@@ -1,5 +1,4 @@
1
1
  # typed: false
2
- require "active_support/inflector"
3
2
  require_relative "internal/with_attributes"
4
3
 
5
4
  module Mangadex
@@ -19,7 +18,7 @@ module Mangadex
19
18
  def initialize(**args)
20
19
  args.keys.each do |attribute|
21
20
  original_attribute = attribute
22
- attribute = attribute.to_s.underscore
21
+ attribute = Mangadex::Utils.underscore(attribute.to_s)
23
22
  attribute_to_set = "#{attribute}="
24
23
 
25
24
  if respond_to?(attribute_to_set)
@@ -25,7 +25,7 @@ module Mangadex
25
25
  # data: Relationship data
26
26
  # source_obj: The object to witch the object belongs to
27
27
  def from_data(data, source_obj = nil)
28
- data = data.with_indifferent_access
28
+ data = data.transform_keys(&:to_s)
29
29
  klass = class_for_relationship_type(data['type'])
30
30
 
31
31
  if klass && data['attributes']&.any?
@@ -0,0 +1,19 @@
1
+ # typed: false
2
+
3
+ module Mangadex
4
+ class Utils
5
+ class << self
6
+ def camelize(string, uppercase_first_letter = false)
7
+ string.split('_').each_with_index.map do |x, i|
8
+ i == 0 && !uppercase_first_letter ? x : x.capitalize
9
+ end.join
10
+ end
11
+
12
+ def underscore(string)
13
+ string.gsub(/([A-Z]+)(?=[A-Z][a-z])|([a-z\d])(?=[A-Z])/) do
14
+ ($1 || $2) << "_"
15
+ end.tr('-', '_').downcase
16
+ end
17
+ end
18
+ end
19
+ end
@@ -2,9 +2,9 @@
2
2
  module Mangadex
3
3
  module Version
4
4
  MAJOR = "5"
5
- MINOR = "4"
6
- TINY = "11"
7
- PATCH = "3"
5
+ MINOR = "5"
6
+ TINY = "8"
7
+ PATCH = nil
8
8
 
9
9
  STRING = [MAJOR, MINOR, TINY].compact.join('.')
10
10
  FULL = [MAJOR, MINOR, TINY, PATCH].compact.join('.')
data/lib/mangadex.rb CHANGED
@@ -1,8 +1,8 @@
1
1
  # typed: true
2
2
  require 'sorbet-runtime'
3
3
 
4
- require 'active_support'
5
4
  require_relative 'extensions'
5
+ require "mangadex/utils"
6
6
 
7
7
  # The insides of the gem
8
8
  require "mangadex/version"
data/mangadex.gemspec CHANGED
@@ -24,7 +24,6 @@ Gem::Specification.new do |spec|
24
24
 
25
25
  spec.add_dependency "psych", "~> 4.0.1"
26
26
  spec.add_dependency "rest-client", "~> 2.1"
27
- spec.add_dependency "activesupport", "~> 6.1"
28
27
  spec.add_dependency "sorbet-runtime"
29
28
 
30
29
  spec.add_development_dependency "bundler", "~> 2.2.19"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mangadex
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.4.11.3
4
+ version: 5.5.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Akinyele Cafe-Febrissy
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-01-22 00:00:00.000000000 Z
11
+ date: 2022-05-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: psych
@@ -38,20 +38,6 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '2.1'
41
- - !ruby/object:Gem::Dependency
42
- name: activesupport
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '6.1'
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '6.1'
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: sorbet-runtime
57
43
  requirement: !ruby/object:Gem::Requirement
@@ -157,6 +143,7 @@ executables: []
157
143
  extensions: []
158
144
  extra_rdoc_files: []
159
145
  files:
146
+ - ".github/dependabot.yml"
160
147
  - ".github/workflows/ruby.yml"
161
148
  - ".gitignore"
162
149
  - ".rspec"
@@ -210,6 +197,7 @@ files:
210
197
  - lib/mangadex/types.rb
211
198
  - lib/mangadex/upload.rb
212
199
  - lib/mangadex/user.rb
200
+ - lib/mangadex/utils.rb
213
201
  - lib/mangadex/version.rb
214
202
  - mangadex.gemspec
215
203
  - sorbet/config
@@ -262,7 +250,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
262
250
  - !ruby/object:Gem::Version
263
251
  version: '0'
264
252
  requirements: []
265
- rubygems_version: 3.2.15
253
+ rubygems_version: 3.2.32
266
254
  signing_key:
267
255
  specification_version: 4
268
256
  summary: Your next favourite Ruby gem for interacting with Mangadex.org