duck_puncher 2.5.0 → 2.5.1

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: 2afbd4dd98468db97339d8094564c7830a8f6aa8
4
- data.tar.gz: 2cabadf15f55e7b38b5028d0c702fb71ac809a4b
3
+ metadata.gz: d79a3c56a872b1cf8fae50ea0828bd3deefb8804
4
+ data.tar.gz: 255d03afeb29676c3c1ed4bef631c5048848f143
5
5
  SHA512:
6
- metadata.gz: f3016a12e3e5ba11571b05ad62a58163a25db0fc4866d0c82c39cfeeaeada1c7ff44999bfabcb81021b3f4c810973e2b8b0a79e9c522426597b17e5f9f6d4d9e
7
- data.tar.gz: c35a7d1dd77ac403f42884935f56963354e4aa5e75dcc36442b7a125ae000f3417a991da536aa8bcdb6b30ddb95f6619ced25004a6c44ce4efddfce85b6f0745
6
+ metadata.gz: 9c68f506755fc0ecf2c622d3c3b78b62396abdab23bef915f5496206f7ef1cdc89ed939c9b53169c9bf6ee37e8978a229fd3eb3abf47fe34c794473ccdb5c0c6
7
+ data.tar.gz: 9315f784c53760449790f9de0df096c77b11e5fc0ef24b751c8c7bdb36dd1539d23adb40a86fa70c1d9f315d66179af0387f52f553dab07b3e421d17501dab83
@@ -21,16 +21,7 @@ module DuckPuncher
21
21
  # @description Extends functionality to a copy of the specified class
22
22
  def punch(*names)
23
23
  singular = names.size == 1
24
- punched_ducks = names.map do |name|
25
- duck = Ducks[name]
26
- duck_class = Class.new(duck.klass)
27
- if duck.punch duck_class
28
- duck_class
29
- else
30
- log.error %Q(Failed to punch #{name}!)
31
- end
32
- end
33
- punched_ducks.compact!
24
+ punched_ducks = names.map { |name| Ducks[name].dup.classify }.compact
34
25
  punched_ducks = punched_ducks.first if singular
35
26
  punched_ducks
36
27
  end
@@ -11,15 +11,18 @@ module DuckPuncher
11
11
  # @note Assumes the String duck is loaded first
12
12
  def load_path
13
13
  path_name = if name == :String
14
- name.to_s.downcase
15
- else
16
- Object.send(:punch, :String, name.to_s).underscore
17
- end
14
+ name.to_s.downcase
15
+ else
16
+ Object.send(:punch, :String, name.to_s).underscore
17
+ end
18
18
  "duck_puncher/ducks/#{path_name}"
19
19
  end
20
20
 
21
21
  def punch(target = nil)
22
- return false if options[:if] && !options[:if].call
22
+ if options[:if] && !options[:if].call
23
+ DuckPuncher.log.warn %Q(Failed to punch #{name}!)
24
+ return nil
25
+ end
23
26
  options[:before].call if options[:before]
24
27
  (target || klass).send :include, DuckPuncher::Ducks.const_get(name)
25
28
  options[:after].call if options[:after]
@@ -35,7 +38,11 @@ module DuckPuncher
35
38
  end
36
39
 
37
40
  def delegated
38
- DelegateClass(klass).tap { |k| punch k }
41
+ DelegateClass(klass).tap &method(:punch)
42
+ end
43
+
44
+ def classify
45
+ Class.new(klass).tap &method(:punch)
39
46
  end
40
47
  end
41
48
  end
@@ -8,6 +8,14 @@ module DuckPuncher
8
8
  def underscore
9
9
  gsub(/\B([A-Z])([a-z_0-9])/, '_\1\2').gsub('::', '/').downcase
10
10
  end unless method_defined?(:underscore)
11
+
12
+ def to_boolean(strict = false)
13
+ @boolean_map ||= begin
14
+ truths, falsities = %w(true 1 yes y on), ['false', '0', 'no', 'n', 'off', '']
15
+ Hash[truths.product([true]) + falsities.product([false])]
16
+ end
17
+ strict ? !downcase.in?(falsities) : @boolean_map[downcase]
18
+ end
11
19
  end
12
20
  end
13
21
  end
@@ -1,3 +1,3 @@
1
1
  module DuckPuncher
2
- VERSION = '2.5.0'.freeze
2
+ VERSION = '2.5.1'.freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: duck_puncher
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.0
4
+ version: 2.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Buckley