duck_puncher 1.0.0 → 2.0.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: 82d81798a5571df6798f22fb5992e6661bfaed33
4
- data.tar.gz: 4149ee3e005d014077302a4cdb58e66919a5dace
3
+ metadata.gz: 881eb46f208799b4640b03c9dd8b6ec09b32e397
4
+ data.tar.gz: 4a3e0390df363326e27979649d4b2f2a7b453961
5
5
  SHA512:
6
- metadata.gz: be39db7e9786c8e26ffb380da1d104692699b2d15521acb3ff149284ee13aabdb6b3e4de55a98528a681ee6d67cedd828de148da6f4932f3e192e7252301d65b
7
- data.tar.gz: abd91da05a36d4679d99d0710e0749b122159613dbb110366f3a26f3e83d9155fcfc03f7e78bfe27d8a4c3d7f73801fcc4aa4280dc2c9147d0ff1f7411465fb0
6
+ metadata.gz: 7beff91aaeb70e101ca4a3a6deb6b5199166e2094a23122c14af5c8542d5727a9faab40109aefec1ee5cdacb269b67c62b10772611b76c36d009507deefd82d9
7
+ data.tar.gz: de386fce999554eb93dc9b82d6720090162072f110169a33000254e56820dcd49b351482a0fddd389fc868239980c0fbbbbc6490749cf3a8d0fd305cb2bd7823
data/.ruby-gemset ADDED
@@ -0,0 +1 @@
1
+ duck_puncher
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ ruby-2.2.2
data/README.md CHANGED
@@ -1,38 +1,27 @@
1
1
  # DuckPuncher
2
2
 
3
- Currently have the following punches in our repertoire:
3
+ These are the ducks I can punch:
4
4
 
5
- * Array#m - alias for `map(&:)`, usage: `[1].m(:succ)`
6
- * Array#get - usage: `[].methods.get('ty?') #=> [:empty?]`
7
- * Hash#seek - usage: `{a: 1, b: {c: 2}}.seek(:b, :c) #=> 2`
8
- * Numeric#to_currency - usage: `25.245.to_currency #=> '25.25'`
9
- * Numeric#to_duration - usage `10_000.to_duration #=> '2 h 46 min'`
10
- * Numeric#to_time_ago - usage `10_000.to_time_ago #=> '2 hours ago'`
11
- * Numeric#to_rad - usage `10.15.to_rad #=> 0.17715091907742445`
12
- * String#pluralize - usage `'hour'.pluralize(2) #=> 'hours'`
5
+ Array#m => `[].m(:to_s)` alias for `[].map(&:to_s)`
6
+ => `[].m(:sub, /[aeiou]/, '*')` alias for `[].map { |x| x.sub(/[aeiou]/, '*') }`
7
+ Array#get => `[].methods.get('ty?')` searches the array for a string matching the 'ty?' (e.g. [:empty?])
8
+ Hash#seek => `{a: 1, b: {c: 2}}.seek(:b, :c)` returns the value of nested hash keys (e.g. 2)
9
+ Numeric#to_currency => `25.245.to_currency` formats a number in currency (e.g. '25.25' or '1.00')
10
+ Numeric#to_duration => `10_000.to_duration` turns a number into duration (e.g. '2 h 46 min')
11
+ Numeric#to_time_ago => `10_000.to_time_ago` turns a number into time ago (e.g. '2 hours ago')
12
+ Numeric#to_rad => `10.15.to_rad` returns 0.17715091907742445
13
+ String#pluralize => `'hour'.pluralize(2)` turns "hour" into "hours"
14
+ Object#clone! => `Object.new.clone!` makes a deep clone of the object (using Marshal)
13
15
 
14
- ## Installation
15
-
16
- Add this line to your application's Gemfile:
16
+ ## Install
17
17
 
18
18
  gem 'duck_puncher'
19
19
 
20
- And then execute:
21
-
22
- $ bundle
23
-
24
- Or install it yourself as:
25
-
26
- $ gem install duck_puncher
27
-
28
20
  ## Usage
29
21
 
30
- TODO: Write usage instructions here
31
-
32
- ## Contributing
22
+ Ducks need to be _loaded_ before they can be punched! Maybe do this in an initializer?
33
23
 
34
- 1. Fork it
35
- 2. Create your feature branch (`git checkout -b my-new-feature`)
36
- 3. Commit your changes (`git commit -am 'Add some feature'`)
37
- 4. Push to the branch (`git push origin my-new-feature`)
38
- 5. Create new Pull Request
24
+ ```ruby
25
+ DuckPuncher.punch! :Hash, :Object #=> only punches the specified ducks
26
+ DuckPuncher.punch_all! #=> punches all the ducks
27
+ ```
data/duck_puncher.gemspec CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
10
10
  spec.email = ["arebuckley@gmail.com"]
11
11
  spec.description = %q{Duck punches Ruby with some of my favorite class extensions}
12
12
  spec.summary = %q{Duck punches Ruby}
13
- spec.homepage = ""
13
+ spec.homepage = "https://github.com/ridiculous/duck_puncher"
14
14
  spec.license = "MIT"
15
15
 
16
16
  spec.files = `git ls-files`.split($/)
@@ -19,5 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ["lib"]
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 1.3"
22
- spec.add_development_dependency "rake"
22
+ spec.add_development_dependency "rake", '~> 10.1', '>= 10.1.1'
23
+ spec.add_development_dependency "minitest", '~> 5.0'
24
+ spec.add_development_dependency "minitest-reporters", '~> 1.1', '>= 1.1.0'
23
25
  end
data/lib/duck_puncher.rb CHANGED
@@ -11,11 +11,11 @@ module DuckPuncher
11
11
  autoload :ActiveRecordExtensions, 'duck_puncher/active_record_extensions'
12
12
  end
13
13
 
14
- def self.load!(*names)
14
+ def self.punch!(*names)
15
15
  names.each &method(:const_get)
16
16
  end
17
17
 
18
- def self.load_all!
18
+ def self.punch_all!
19
19
  constants.each &method(:const_get)
20
20
  end
21
21
  end
@@ -1,14 +1,18 @@
1
1
  module DuckPuncher
2
- module Array
3
- def m(method_name)
4
- map(&method_name)
5
- end
2
+ module Array
3
+ def m(method_name, *args)
4
+ if args.any?
5
+ map { |x| x.public_send(method_name, *args) }
6
+ else
7
+ map(&method_name)
8
+ end
9
+ end
6
10
 
7
- def get(regex_or_str)
8
- regex = regex_or_str.is_a?(Regexp) ? regex_or_str : Regexp.new(Regexp.escape(regex_or_str))
9
- select { |x| x.to_s =~ regex }
10
- end
11
- end
11
+ def get(regex_or_str)
12
+ regex = regex_or_str.is_a?(Regexp) ? regex_or_str : Regexp.new(Regexp.escape(regex_or_str))
13
+ select { |x| x.to_s =~ regex }
14
+ end
15
+ end
12
16
  end
13
17
 
14
- Array.send(:include, DuckPuncher::Array)
18
+ Array.send(:include, DuckPuncher::Array)
@@ -1,3 +1,3 @@
1
1
  module DuckPuncher
2
- VERSION = '1.0.0'.freeze
2
+ VERSION = '2.0.0'.freeze
3
3
  end
@@ -1,9 +1,22 @@
1
1
  require_relative '../test_helper'
2
2
 
3
3
  class ArrayTest < MiniTest::Test
4
+ attr_reader :subject
5
+
6
+ def setup
7
+ @subject = ('a'..'m').to_a
8
+ end
9
+
4
10
  def test_m
5
- samples = ('a'..'m').to_a
6
- assert_equal samples.map(&:upcase), samples.m(:upcase)
11
+ assert_equal subject.map(&:upcase), subject.m(:upcase)
12
+ end
13
+
14
+ def test_m_with_two_args
15
+ assert_equal subject.map { |x| x.prepend('btn-') }, subject.m(:prepend, 'btn-')
16
+ end
17
+
18
+ def test_m_with_many_args
19
+ assert_equal subject.map { |x| x.sub(/[aeiou]/, '*') }, subject.m(:sub, /[aeiou]/, '*')
7
20
  end
8
21
 
9
22
  def test_get
data/test/test_helper.rb CHANGED
@@ -1,4 +1,7 @@
1
+ require 'minitest'
1
2
  require 'minitest/autorun'
3
+ require 'minitest/reporters'
2
4
  require 'duck_puncher'
3
5
 
4
- DuckPuncher.load_all!
6
+ Minitest::Reporters.use!
7
+ DuckPuncher.punch_all!
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: 1.0.0
4
+ version: 2.0.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: 2015-08-18 00:00:00.000000000 Z
11
+ date: 2015-09-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -28,16 +28,56 @@ dependencies:
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.1'
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: 10.1.1
37
+ type: :development
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - "~>"
42
+ - !ruby/object:Gem::Version
43
+ version: '10.1'
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 10.1.1
47
+ - !ruby/object:Gem::Dependency
48
+ name: minitest
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '5.0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '5.0'
61
+ - !ruby/object:Gem::Dependency
62
+ name: minitest-reporters
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '1.1'
31
68
  - - ">="
32
69
  - !ruby/object:Gem::Version
33
- version: '0'
70
+ version: 1.1.0
34
71
  type: :development
35
72
  prerelease: false
36
73
  version_requirements: !ruby/object:Gem::Requirement
37
74
  requirements:
75
+ - - "~>"
76
+ - !ruby/object:Gem::Version
77
+ version: '1.1'
38
78
  - - ">="
39
79
  - !ruby/object:Gem::Version
40
- version: '0'
80
+ version: 1.1.0
41
81
  description: Duck punches Ruby with some of my favorite class extensions
42
82
  email:
43
83
  - arebuckley@gmail.com
@@ -46,6 +86,8 @@ extensions: []
46
86
  extra_rdoc_files: []
47
87
  files:
48
88
  - ".gitignore"
89
+ - ".ruby-gemset"
90
+ - ".ruby-version"
49
91
  - Gemfile
50
92
  - LICENSE.txt
51
93
  - README.md
@@ -65,7 +107,7 @@ files:
65
107
  - test/duck_puncher/object_test.rb
66
108
  - test/duck_puncher/string_test.rb
67
109
  - test/test_helper.rb
68
- homepage: ''
110
+ homepage: https://github.com/ridiculous/duck_puncher
69
111
  licenses:
70
112
  - MIT
71
113
  metadata: {}
@@ -85,7 +127,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
85
127
  version: '0'
86
128
  requirements: []
87
129
  rubyforge_project:
88
- rubygems_version: 2.4.6
130
+ rubygems_version: 2.4.8
89
131
  signing_key:
90
132
  specification_version: 4
91
133
  summary: Duck punches Ruby