usable 3.9.4 → 3.10.1

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: 5cf9d19795cfe5f243f7d50765251306761edf87790628b28438503bfd28a93c
4
- data.tar.gz: 238dab15466918520cdf25408e0bad760a5013687e2025e560ada0e725bd2020
3
+ metadata.gz: 509ece6283292d0389b9cf1eeb740164e7728cbc0ed3c91e7e1ba3337dd12758
4
+ data.tar.gz: c5e29fc015a3516abd247c856de614dc847713adcf2a2bd7c4f42a137f7c5dcb
5
5
  SHA512:
6
- metadata.gz: e8d4b8b59389b40d377b23775f9f4bef80839bc833b18f0ea0d0c8bccbebd6acddf548bd28b0a745cb3908fd73cccafc74b4612df5c847d66c5cb11cb4e40076
7
- data.tar.gz: 95212036395041fcda47c5eb3c6eab5a9d422767689254736e612221175143a2088d8990db4609adc8d8cc14c524fb11d38906542e6231bc24170d18bf131907
6
+ metadata.gz: 3904738a7f701b3b3af5a1be00bd441cc9459d1476d7682620e0f9b1a1c4ec5a02962b4d940794fe5ce2a972a05c3d00b15e4c6376d0d83bf89616b7f207340b
7
+ data.tar.gz: 8b2ef88770cb4d24a858c13e41e76842314a779c33ef7de5879d28a2db99c6c70cdb5da77389359f847cfe39b18ae2bb4410ddf70ab8f65142f3e7d9667e5ae7
@@ -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
@@ -29,7 +29,7 @@ module Usable
29
29
  elsif usables[name]
30
30
  usables[name]
31
31
  elsif _config[name]
32
- usables[name] = if _config[name].is_a?(Hash)
32
+ usables[name] = if _config[name].is_a?(Hash) && _config[name].key?(:class)
33
33
  _config[name].fetch(:class).constantize.find(_config[name].fetch(:id))
34
34
  else
35
35
  _config[name]
@@ -42,7 +42,7 @@ module Usable
42
42
  def has?(setting)
43
43
  !!send(setting)
44
44
  rescue NoMethodError => e
45
- if e.message.include?("method `#{setting}'")
45
+ if ["method `#{setting}'", "method '#{setting}'"].any? { |msg| e.message.include?(msg) }
46
46
  false
47
47
  else
48
48
  raise
@@ -70,7 +70,7 @@ module Usable
70
70
  FileUtils.mkdir_p(usables.dir) unless File.directory?(usables.dir)
71
71
  filename = self.class.name ? self.class.name.downcase.gsub('::', '_') : 'usable'
72
72
  @_config_file = File.join(usables.dir, "#{filename}.yml")
73
- FileUtils.touch(@_config_file) unless File.exists?(@_config_file)
73
+ FileUtils.touch(@_config_file) unless File.exist?(@_config_file)
74
74
  @_config_file
75
75
  end
76
76
 
@@ -1,3 +1,3 @@
1
1
  module Usable
2
- VERSION = "3.9.4".freeze
2
+ VERSION = "3.10.1".freeze
3
3
  end
data/lib/usable.rb CHANGED
@@ -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
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,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: usable
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.9.4
4
+ version: 3.10.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Buckley
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2021-07-14 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: bundler
@@ -16,14 +15,14 @@ dependencies:
16
15
  requirements:
17
16
  - - "~>"
18
17
  - !ruby/object:Gem::Version
19
- version: 2.2.11
18
+ version: '2.3'
20
19
  type: :development
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
23
  - - "~>"
25
24
  - !ruby/object:Gem::Version
26
- version: 2.2.11
25
+ version: '2.3'
27
26
  - !ruby/object:Gem::Dependency
28
27
  name: rake
29
28
  requirement: !ruby/object:Gem::Requirement
@@ -80,7 +79,6 @@ homepage: https://github.com/ridiculous/usable
80
79
  licenses:
81
80
  - MIT
82
81
  metadata: {}
83
- post_install_message:
84
82
  rdoc_options: []
85
83
  require_paths:
86
84
  - lib
@@ -88,15 +86,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
88
86
  requirements:
89
87
  - - ">="
90
88
  - !ruby/object:Gem::Version
91
- version: 2.0.0
89
+ version: 2.7.0
92
90
  required_rubygems_version: !ruby/object:Gem::Requirement
93
91
  requirements:
94
92
  - - ">="
95
93
  - !ruby/object:Gem::Version
96
94
  version: '0'
97
95
  requirements: []
98
- rubygems_version: 3.2.11
99
- signing_key:
96
+ rubygems_version: 3.7.2
100
97
  specification_version: 4
101
98
  summary: Mounts and configures modules
102
99
  test_files: []