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 +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
|