pluckit 0.2.0 → 1.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: 42c6c3073a9907cc8cfc8dfe0fe43e4fe7a60fb5
4
- data.tar.gz: 2c978a6bbd3d96e3c040af65cf85e4266f84041c
3
+ metadata.gz: 7587bb8c7e758bd2badc023cf95087b397386c67
4
+ data.tar.gz: 0e230a36351043c05e174d0971ab28b259fca86f
5
5
  SHA512:
6
- metadata.gz: 5b18dcf896e35913022655730e469702cacad1c64e2aaffed5f1312edc223a1c735b027cf49ac7a7d19bed7737ca88fbf18120e61bb6bfa27f979051c499c66d
7
- data.tar.gz: 4b31395eaaec78888732784450b796885353e3b0b200cac26c3fc5ce510d3a90ab6bedaeb418a67f3699e390065ec94219f97c0c5609bd2a9de5cfc1739f9a70
6
+ metadata.gz: 1c0fd9d9d4e9dfaf4ffbf4699ba33105e027392b9f7a484519aacf3c065482adf6ab4e2e3979e5dfa0b6f3f2906f7890eb46ed8a5194f3301343a5a923d2a699
7
+ data.tar.gz: 7989512d5bb2373eacdef52c87c011c7953a9350472e795fee65a5f7f61c04c1155efd71b9bbdbed760635fc07d98515813ccf70072baefaa958dd58aaffc3ab
@@ -1,37 +1,11 @@
1
- module PluckIt
2
- VERSION = '0.2.0'
3
-
4
- class << self
5
-
6
- def pluck v, *handles
7
- if handles.count > 1
8
- handles.map {|h| pluck_single v, h }
9
- else
10
- pluck_single v, handles.first
11
- end
12
- end
13
-
1
+ require_relative 'pluckit/pluck.rb'
14
2
 
15
- private
16
-
17
- def pluck_single v, handle
18
- if v.is_a? Hash
19
- v[handle]
20
- elsif ([Symbol, String].include? handle.class) and v.respond_to? handle
21
- v.send handle
22
- elsif handle.is_a? Regexp and v.respond_to? :grep
23
- v.grep handle
24
- elsif v.respond_to? :[]
25
- v[handle]
26
- else
27
- raise ArgumentError.new "invalid handle: #{handle}, for value #{v}"
28
- end
29
- end
30
-
31
- end
3
+ module PluckIt
4
+ VERSION = '1.0.0'
32
5
  end
33
6
 
34
7
 
8
+
35
9
  class Array
36
10
  def pluck *handles
37
11
  each_with_object(clone.clear) do |val, res|
@@ -0,0 +1,30 @@
1
+ module PluckIt
2
+ class << self
3
+
4
+ def pluck v, *handles
5
+ if handles.count > 1
6
+ handles.map {|h| pluck_single v, h }
7
+ else
8
+ pluck_single v, handles.first
9
+ end
10
+ end
11
+
12
+
13
+ private
14
+
15
+ def pluck_single v, handle
16
+ if v.is_a? Hash
17
+ v[handle]
18
+ elsif ([Symbol, String].include? handle.class) and v.respond_to? handle
19
+ v.send handle
20
+ elsif handle.is_a? Regexp and v.respond_to? :grep
21
+ v.grep handle
22
+ elsif v.respond_to? :[]
23
+ v[handle]
24
+ else
25
+ raise ArgumentError.new "invalid handle: #{handle}, for value #{v}"
26
+ end
27
+ end
28
+
29
+ end
30
+ end
@@ -1,9 +1,11 @@
1
1
  require 'minitest/autorun'
2
- require 'pluckit'
2
+ require 'set'
3
3
 
4
+ $LOAD_PATH.unshift 'lib'
5
+ require 'pluckit/pluck'
4
6
 
5
- class PluckItTest < Minitest::Test
6
7
 
8
+ class PluckItTest < Minitest::Test
7
9
 
8
10
  def test_array
9
11
  data = [ 1, 2, 3 ]
@@ -118,4 +120,28 @@ class PluckItTest < Minitest::Test
118
120
  end
119
121
 
120
122
 
123
+ def test_not_installed
124
+ if defined? PluckIt::VERSION
125
+ # entire library was loaded, so these tests are invalid.
126
+ # this happens when run through `rake`
127
+ return
128
+ end
129
+
130
+ # `require 'pluckit/pluck'` should load PluckIt
131
+ # but not monkey patch
132
+ assert_raises NoMethodError do
133
+ [ 1, 2, 3 ].pluck 0
134
+ end
135
+
136
+ assert_raises NoMethodError do
137
+ { a: 1 }.pluck 0
138
+ end
139
+
140
+ assert_raises NoMethodError do
141
+ Set.new([ 1, 2, 3 ]).pluck 0
142
+ end
143
+
144
+ puts 'no monkey patching'
145
+ end
146
+
121
147
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pluckit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Pepper
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-11-14 00:00:00.000000000 Z
11
+ date: 2018-04-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
@@ -45,11 +45,12 @@ extensions: []
45
45
  extra_rdoc_files: []
46
46
  files:
47
47
  - lib/pluckit.rb
48
+ - lib/pluckit/pluck.rb
48
49
  - test/test_array.rb
49
50
  - test/test_hash.rb
50
51
  - test/test_pluck.rb
51
52
  - test/test_set.rb
52
- homepage: https://github.com/dpep/pluckit
53
+ homepage: https://github.com/dpep/rb_pluckit
53
54
  licenses:
54
55
  - MIT
55
56
  metadata: {}