duck_puncher 2.8.0 → 2.9.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
  SHA1:
3
- metadata.gz: 6a8db75a39d70dd7e9d2889e265ee699fb57cc69
4
- data.tar.gz: afd816328b5e7e2a525ff440713b9288310e2dad
3
+ metadata.gz: 2409edffeadeb05ea829ddc692fad6a7dce60058
4
+ data.tar.gz: c78b92d1752b593581b996266bb9ee24c43b2194
5
5
  SHA512:
6
- metadata.gz: 3f69f32294c4ccfe42c934ba0641da5da0e72caa0c205317ee6b090685695593dea1f21003bdad75dd499964d3058a00c87f109b0782ba30e91c9478a9637b65
7
- data.tar.gz: 6109c6c42f64701e35942f935af09aeaa1081747e6b7a758d5cc32a9655f690b540fcbe0cbdb61068e053bc094054a117705328d5f9d37b63db55a8d193dd311
6
+ metadata.gz: 963f2dde6d132a62362cddfda5e8037a1758942f32bef5005b31f518d85b428e0ae21eda53d0dba2328309c6b9e55f28eaa8da2e6fd80b8d3f3b4f349e8ff79e
7
+ data.tar.gz: c89454d9c4dae39e0742658a482b0eb1b09b350dd817e7f84585f29a82e1af841ce8edc23c9f887148ee0f05523dba58b9671d315189b45104519c6adad7f285
data/README.md CHANGED
@@ -89,7 +89,7 @@ If you punch `Object` then you can use `punch` on any object to get a new decora
89
89
  functionality mixed in:
90
90
 
91
91
  ```ruby
92
- # Assuming you've already done `DuckPuncher.punch! :Object, only: :punch`
92
+ DuckPuncher.punch! :Object, only: :punch
93
93
  %w[yes no 1].punch.m(:punch).punch.m(:to_boolean) #=> [true, false, true]
94
94
  ```
95
95
 
@@ -31,13 +31,9 @@ module DuckPuncher
31
31
  options = names.last.is_a?(Hash) ? names.pop : {}
32
32
  names.each do |name|
33
33
  duck = Ducks[name]
34
- if duck.punched?
35
- log.info %Q(Already punched #{name})
36
- else
37
- log.warn %Q(Punching #{name} ducky)
38
- unless duck.punch(options)
39
- log.error %Q(Failed to punch #{name}!)
40
- end
34
+ log.warn %Q(Punching #{name} ducky)
35
+ unless duck.punch(options)
36
+ log.error %Q(Failed to punch #{name}!)
41
37
  end
42
38
  end
43
39
  nil
@@ -5,7 +5,6 @@ module DuckPuncher
5
5
  def initialize(name, options = {})
6
6
  @name = name
7
7
  @options = options
8
- @punched = false
9
8
  end
10
9
 
11
10
  def load_path
@@ -17,21 +16,18 @@ module DuckPuncher
17
16
  DuckPuncher.log.warn %Q(Failed to punch #{name}!)
18
17
  return nil
19
18
  end
20
- options[:before].call if options[:before]
21
- target = opts.fetch(:target, klass)
19
+ target = opts.delete(:target) || klass
20
+ options[:before].call(target) if options[:before]
22
21
  target.extend Usable
23
22
  target.usable DuckPuncher::Ducks.const_get(name), opts
24
- @punched = true
23
+ options[:after].call(target) if options[:after]
24
+ target
25
25
  end
26
26
 
27
27
  def klass
28
28
  @klass ||= (options[:class] || name).to_s.split('::').inject(Kernel) { |k, part| k.const_get part }
29
29
  end
30
30
 
31
- def punched?
32
- @punched
33
- end
34
-
35
31
  def delegated
36
32
  DelegateClass(klass).tap { |k| punch target: k }
37
33
  end
@@ -8,7 +8,7 @@ module DuckPuncher
8
8
  Duck.new(:Numeric),
9
9
  Duck.new(:Hash),
10
10
  Duck.new(:Object),
11
- Duck.new(:Method, before: -> { DuckPuncher::GemInstaller.initialize! }),
11
+ Duck.new(:Method, before: ->(*) { DuckPuncher::GemInstaller.initialize! }),
12
12
  Duck.new(:ActiveRecord, class: 'ActiveRecord::Base', if: -> { defined? ::ActiveRecord })
13
13
  ]
14
14
  end
@@ -1,3 +1,3 @@
1
1
  module DuckPuncher
2
- VERSION = '2.8.0'.freeze
2
+ VERSION = '2.9.0'.freeze
3
3
  end
@@ -4,13 +4,13 @@ class DuckPuncherTest < MiniTest::Test
4
4
  DuckString = DuckPuncher.punch :String
5
5
  DuckNumber, DuckArray = DuckPuncher.punch :Numeric, :Array
6
6
 
7
- def test_punch
7
+ def test_duck_string
8
8
  refute_respond_to '', :underscore
9
9
  assert_respond_to DuckString.new, :underscore
10
10
  refute_respond_to '', :underscore
11
11
  end
12
12
 
13
- def test_punch_multiple
13
+ def test_duck_number_array
14
14
  refute_respond_to 25, :to_currency
15
15
  refute_respond_to [], :m
16
16
  assert_respond_to DuckNumber.new, :to_currency
@@ -18,4 +18,13 @@ class DuckPuncherTest < MiniTest::Test
18
18
  refute_respond_to 25, :to_currency
19
19
  refute_respond_to [], :m
20
20
  end
21
+
22
+ def test_excluding_punches
23
+ refute_respond_to Object.new, :punch
24
+ DuckPuncher.punch! :Object, only: :punch
25
+ assert_respond_to Object.new, :punch
26
+ refute_respond_to Object.new, :require!
27
+ DuckPuncher.punch! :Object, only: :require!
28
+ assert_respond_to Object.new, :require!
29
+ end
21
30
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: duck_puncher
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.8.0
4
+ version: 2.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Buckley
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-03 00:00:00.000000000 Z
11
+ date: 2016-02-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: usable