usable 3.9.3 → 3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bcc17af85e47b938b6f6f86196d7a1a244e062ac1e7c77c4b6260138c18d9bdb
4
- data.tar.gz: d800dcd7e7d2cff57ba7f2d96e5168a388b503ae480b83980d67286b55d7d970
3
+ metadata.gz: 2585dd25c2d40dd7155c135d8fc0d68d0827fa2ad1941861d663f2700408ab3d
4
+ data.tar.gz: 3d8af0397933e015907b136878a1efbb7b5a61f9fd898d30b5a33ac454008f6d
5
5
  SHA512:
6
- metadata.gz: 2c03ec68bf89ff9e4b9ac0d72e2a5a72b7977375169957ae4873462a3e77c68aa01bb91afd7d18415113c5f50c58e00648292ca6932c81849ddea5dab90858a0
7
- data.tar.gz: e631aece8d224022d1d07c4e777d978111e987bb5a803ed9ea4309701ee553adf11ca516e77f02312a2523a53510ae7dfd699a84590de3027d9c3df470d3c404
6
+ metadata.gz: f3784807c7898f63fd3a2b9a73b9e867ad72127e9c33ea371ea575f3fc8567828f96ae2a622122d04c5b4f40aa19d3ccabfee30437aea3f89e07d106525fe338
7
+ data.tar.gz: 6c9aa43dcb1dc71a093190d6700633e676a97039ee619312b983598604855ac70df5eda0a7d5f2be45a7e99b089daec1b393450481a6bce49381956ae91ebb08
@@ -9,7 +9,7 @@ module Usable
9
9
  @options[:method] ||= :include
10
10
  @copy = mod
11
11
  @name = mod.name
12
- @unwanted = find_unwanted_methods(options[:only])
12
+ @unwanted = (options[:except] && Array(options[:except])) || find_unwanted_methods(options[:only])
13
13
  if @unwanted.any?
14
14
  @copy = @copy.dup
15
15
  end
@@ -1,3 +1,3 @@
1
1
  module Usable
2
- VERSION = "3.9.3".freeze
2
+ VERSION = "3.10.0".freeze
3
3
  end
data/lib/usable.rb CHANGED
@@ -53,7 +53,7 @@ module Usable
53
53
  base.instance_eval do
54
54
  def config(&block)
55
55
  if block
56
- usables.instance_eval &block
56
+ usables.instance_eval(&block)
57
57
  else
58
58
  usables
59
59
  end
@@ -115,17 +115,15 @@ module Usable
115
115
  # end
116
116
  #
117
117
  # @note Hides methods
118
- # @param [Module] mod
118
+ # @param [Array<Module>] args - array of modules to potentially modify the and then include
119
119
  # @param [Hash] options Customize the extension of the module as well as define config settings on the target
120
120
  # @option [Array,Symbol] :only Limit which methods are copied from the module
121
121
  # @option [String,Symbol] :method (:include) The method to use for including the module
122
+ # @option [Array<Symbol>] :except List of methods to exclude from the given module(s)
122
123
  # @return self
123
- def usable(*args, &block)
124
- options = args.last.is_a?(Hash) ? args.pop : {}
125
- only = options.delete(:only)
126
- extension_method = options.delete(:method)
124
+ def usable(*args, only: nil, except: nil, method: nil, **options, &block)
127
125
  args.each do |mod|
128
- ModExtender.new(mod, only: only, method: extension_method).call self
126
+ ModExtender.new(mod, only: only, method: method, except: except).call self
129
127
  # Define settings on @usables and on the scoped @usables
130
128
  scope = Config.new
131
129
  # Nest the new config under a namespace based on it's name, unless it's the default name we gave
@@ -142,7 +140,7 @@ module Usable
142
140
  [scope, usables].each { |x| options.each { |k, v| x[k] = v } }
143
141
  end
144
142
  if block_given?
145
- [scope, usables].each { |x| x.instance_eval &block }
143
+ [scope, usables].each { |x| x.instance_eval(&block) }
146
144
  end
147
145
  if mod.const_defined?(:InstanceMethods, false)
148
146
  send :include, mod.const_get(:InstanceMethods, false)
data/usable.gemspec CHANGED
@@ -19,10 +19,9 @@ Gem::Specification.new do |spec|
19
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
20
  spec.require_paths = ["lib"]
21
21
 
22
- spec.required_ruby_version = '>= 2.0.0'
22
+ spec.required_ruby_version = '>= 2.7.0'
23
23
 
24
- spec.add_development_dependency "bundler", "~> 2.2.11"
24
+ spec.add_development_dependency "bundler", "~> 2.3"
25
25
  spec.add_development_dependency "rake", ">= 12.3.3"
26
26
  spec.add_development_dependency "rspec", ">= 3.2", "< 4"
27
- # spec.add_development_dependency 'rspec-scaffold', '>= 1.0', '< 2'
28
27
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: usable
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.9.3
4
+ version: 3.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Buckley
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-04-01 00:00:00.000000000 Z
11
+ date: 2023-05-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 2.2.11
19
+ version: '2.3'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 2.2.11
26
+ version: '2.3'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -88,14 +88,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
88
88
  requirements:
89
89
  - - ">="
90
90
  - !ruby/object:Gem::Version
91
- version: 2.0.0
91
+ version: 2.7.0
92
92
  required_rubygems_version: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  requirements: []
98
- rubygems_version: 3.2.11
98
+ rubygems_version: 3.3.7
99
99
  signing_key:
100
100
  specification_version: 4
101
101
  summary: Mounts and configures modules