duck_puncher 2.8.0 → 2.9.0

Sign up to get free protection for your applications and to get access to all the features.
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