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 +4 -4
- data/README.md +1 -1
- data/lib/duck_puncher.rb +3 -7
- data/lib/duck_puncher/duck.rb +4 -8
- data/lib/duck_puncher/ducks.rb +1 -1
- data/lib/duck_puncher/version.rb +1 -1
- data/test/soft_punch/duck_puncher_test.rb +11 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2409edffeadeb05ea829ddc692fad6a7dce60058
|
4
|
+
data.tar.gz: c78b92d1752b593581b996266bb9ee24c43b2194
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
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
|
|
data/lib/duck_puncher.rb
CHANGED
@@ -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
|
-
|
35
|
-
|
36
|
-
|
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
|
data/lib/duck_puncher/duck.rb
CHANGED
@@ -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
|
-
|
21
|
-
target
|
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
|
-
|
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
|
data/lib/duck_puncher/ducks.rb
CHANGED
@@ -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
|
data/lib/duck_puncher/version.rb
CHANGED
@@ -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
|
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
|
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.
|
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-
|
11
|
+
date: 2016-02-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: usable
|