duck_puncher 1.0.0 → 2.0.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/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/README.md +17 -28
- data/duck_puncher.gemspec +4 -2
- data/lib/duck_puncher.rb +2 -2
- data/lib/duck_puncher/array.rb +14 -10
- data/lib/duck_puncher/version.rb +1 -1
- data/test/duck_puncher/array_test.rb +15 -2
- data/test/test_helper.rb +4 -1
- metadata +48 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 881eb46f208799b4640b03c9dd8b6ec09b32e397
|
4
|
+
data.tar.gz: 4a3e0390df363326e27979649d4b2f2a7b453961
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
3
|
+
These are the ducks I can punch:
|
4
4
|
|
5
|
-
|
6
|
-
*
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
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
|
-
##
|
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
|
-
|
31
|
-
|
32
|
-
## Contributing
|
22
|
+
Ducks need to be _loaded_ before they can be punched! Maybe do this in an initializer?
|
33
23
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
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.
|
14
|
+
def self.punch!(*names)
|
15
15
|
names.each &method(:const_get)
|
16
16
|
end
|
17
17
|
|
18
|
-
def self.
|
18
|
+
def self.punch_all!
|
19
19
|
constants.each &method(:const_get)
|
20
20
|
end
|
21
21
|
end
|
data/lib/duck_puncher/array.rb
CHANGED
@@ -1,14 +1,18 @@
|
|
1
1
|
module DuckPuncher
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
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
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
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)
|
data/lib/duck_puncher/version.rb
CHANGED
@@ -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
|
-
|
6
|
-
|
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
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:
|
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-
|
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:
|
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:
|
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.
|
130
|
+
rubygems_version: 2.4.8
|
89
131
|
signing_key:
|
90
132
|
specification_version: 4
|
91
133
|
summary: Duck punches Ruby
|