hash_extend 1.1.3 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -22,7 +22,11 @@ Or install it yourself as:
22
22
 
23
23
  ## Usage
24
24
 
25
- ### stealth_delete
25
+ ### stealth_delete -- Deprecated -> Use except
26
+
27
+ method 'stealth_delete' is deprecated and will be deleted in version 2.4 - Use 'except' to fit Rails's ActiveSupport
28
+
29
+ --
26
30
 
27
31
  Delete key(s) passed by, but return the hash instead of the deleted value
28
32
 
@@ -143,6 +147,31 @@ Code
143
147
  end
144
148
  ```
145
149
 
150
+ --
151
+
152
+ FYI : ActiveSupport provide method 'slice'.
153
+
154
+ ```ruby
155
+ h = Hash[:one, 1, :two, 2, :three, 3] #=> {:one=>1, :two=>2, :three=>3}
156
+ h.slice(:one, :three) #=> {:three=>3, :one=>1}
157
+ h #=> {:one=>1, :two=>2, :three=>3}
158
+
159
+ h.slice(:six) #=> {}
160
+ ```
161
+
162
+ WARNING : slice! has not the same behavior. Check out ActiveSupport guides for more information : http://guides.rubyonrails.org/active_support_core_extensions.html
163
+
164
+ --
165
+
166
+ FYI : Rails 3's ActiveSupport provide method 'extract!'. (this gem provide method 'extract!' for Rails < 3)
167
+
168
+ ```ruby
169
+ h = Hash[:one, 1, :two, 2, :three, 3] #=> {:one=>1, :two=>2, :three=>3}
170
+ h.extract!(:one, :three) #=> {:one=>1, :three=>3}
171
+ h #=> {:two=>2}
172
+
173
+ h.extract!(:six) #=> {:six=>nil}
174
+ ```
146
175
 
147
176
  ### insert
148
177
 
@@ -230,13 +259,19 @@ Code
230
259
  ```
231
260
 
232
261
 
233
- ### select_by
262
+ ### select_by -- Deprecated -> Use except
263
+
264
+ method 'select_by' is deprecated and will be deleted in version 2.4 - Use 'slice' to fit Rails's ActiveSupport
265
+
266
+ method 'select_by!' is deprecated and will be deleted in version 2.4 - Use 'extract!' to fit Rails's ActiveSupport
267
+
268
+ --
234
269
 
235
270
  Select into hash from a collection of keys. Usefull to select correct params after a form.
236
271
 
237
272
  ```ruby
238
- select_by! *collection
239
- select_by *collection
273
+ select_by! *keys
274
+ select_by *keys
240
275
  ```
241
276
 
242
277
  Demo
@@ -255,8 +290,40 @@ Demo
255
290
  Code
256
291
 
257
292
  ```ruby
258
- def select_by! *collection
259
- self.delete_if{ |field, _| !collection.include? field.to_sym }
293
+ def select_by! *keys
294
+ self.delete_if{ |field, _| !keys.include? field.to_sym }
295
+ end
296
+ ```
297
+
298
+ ### extract -- Only for Rails < 3
299
+
300
+ Select into hash from a collection of keys
301
+
302
+ ```ruby
303
+ extract! *keys
304
+ ```
305
+
306
+ Demo
307
+
308
+ ```ruby
309
+ h = Hash[:one, 1, :two, 2, :three, 3] #=> {:two=>2, :three=>3, :one=>1}
310
+ h.extract! :one, :three #=> {:one=>1, :three=>3}
311
+ h #=> {:two=>2}
312
+
313
+ {:one=>1, :two=>2, :three=>3, :four=>4}.extract! :one, :six
314
+ #=> {:one=>1, :six=>nil}
315
+
316
+ {:one=>1, :two=>2, :three=>3, :four=>4}.extract! :six, :seven
317
+ #=> {:six=>nil, :seven=>nil}
318
+ ```
319
+
320
+ Code
321
+
322
+ ```ruby
323
+ def extract! *keys
324
+ hash = {}
325
+ keys.each {|key| hash[key] = delete(key) }
326
+ hash
260
327
  end
261
328
  ```
262
329
 
@@ -1,49 +1,19 @@
1
1
  require "hash_extend/version"
2
2
 
3
3
  class Hash
4
-
5
-
6
- unless method_defined? :except!
7
-
8
- def except! *keys
9
-
10
- p "is personnal methods"
11
-
12
- keys.each do |key|
13
- delete key
14
- end
15
- return self
16
- end
17
-
18
- end
19
-
20
- unless method_defined? :youpi
21
-
22
- def youpi
23
-
24
- p "youpi"
25
-
26
- end
27
-
28
- end
29
-
30
-
31
-
32
-
33
-
34
4
  # delete key(s) but return self instead of deleted value
35
5
  def stealth_delete! *keys
36
-
6
+ warn "WARNING : method 'stealth_delete!' is deprecated and will be deleted in version X.Y - Use 'except!' to fit Rails' ActiveSupport"
37
7
  except! keys
38
- warn "WARNING : 'stealth_delete!' is deprecated and will be deleted in version X.Y - Use 'extract!' to fit Rails 3's ActiveSupport"
39
8
  end
40
9
 
41
10
  def stealth_delete *keys
42
-
43
- except! keys
44
- warn "WARNING : method 'stealth_delete' is deprecated and will be deleted in version X.Y - Use 'extract' to fit Rails 3's ActiveSupport"
11
+ warn "WARNING : method 'stealth_delete' is deprecated and will be deleted in version X.Y - Use 'except' to fit Rails' ActiveSupport"
12
+ except keys
45
13
  end
46
14
 
15
+
16
+
47
17
  # modify values from hash through block
48
18
  def map_values!
49
19
  self.each do |key, value|
@@ -105,13 +75,26 @@ class Hash
105
75
  end
106
76
 
107
77
  # something like #keep_if, but instead of block, pass collection of keys to select
108
- def select_by! *collection
109
- self.delete_if{ |field, _| !collection.include? field.to_sym }
78
+ def select_by! *keys
79
+ warn "WARNING : method 'select_by!' is deprecated and will be deleted in version 1.3 - Use 'extract!' to fit Rails's ActiveSupport"
80
+ self.delete_if{ |field, _| !keys.include? field.to_sym }
110
81
  end
111
82
 
83
+ def select_by *keys
84
+ warn "WARNING : method 'select_by' is deprecated and will be deleted in version 1.3 - Use 'slice' to fit Rails's ActiveSupport"
85
+ slice *keys
86
+ end
87
+
88
+ unless method_defined? :extract!
89
+ def extract! *keys
90
+ hash = {}
91
+ keys.each {|key| hash[key] = delete(key) }
92
+ hash
93
+ end
94
+ end
112
95
 
113
96
  # duplicate method without self modification
114
- [:except, :map_values, :compact, :select_by].each do |method_name|
97
+ [:map_values, :compact].each do |method_name|
115
98
 
116
99
  unless method_defined? method_name
117
100
 
@@ -1,3 +1,3 @@
1
1
  module HashExtend
2
- VERSION = "1.1.3"
2
+ VERSION = "1.2.0"
3
3
  end
metadata CHANGED
@@ -1,23 +1,33 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: hash_extend
3
- version: !ruby/object:Gem::Version
4
- version: 1.1.3
3
+ version: !ruby/object:Gem::Version
4
+ hash: 31
5
5
  prerelease:
6
+ segments:
7
+ - 1
8
+ - 2
9
+ - 0
10
+ version: 1.2.0
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Thomas Petrachi
9
14
  autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
- date: 2012-12-01 00:00:00.000000000 Z
17
+
18
+ date: 2012-12-01 00:00:00 Z
13
19
  dependencies: []
20
+
14
21
  description: Extend ruby Hash. No override.
15
- email:
22
+ email:
16
23
  - thomas.petrachi@vodeclic.com
17
24
  executables: []
25
+
18
26
  extensions: []
27
+
19
28
  extra_rdoc_files: []
20
- files:
29
+
30
+ files:
21
31
  - .gitignore
22
32
  - Gemfile
23
33
  - Gemfile.lock
@@ -30,28 +40,36 @@ files:
30
40
  - spec/lib/hash_extend_spec.rb
31
41
  homepage: https://github.com/petrachi/hash_extend
32
42
  licenses: []
43
+
33
44
  post_install_message:
34
45
  rdoc_options: []
35
- require_paths:
46
+
47
+ require_paths:
36
48
  - lib
37
- required_ruby_version: !ruby/object:Gem::Requirement
49
+ required_ruby_version: !ruby/object:Gem::Requirement
38
50
  none: false
39
- requirements:
40
- - - ! '>='
41
- - !ruby/object:Gem::Version
42
- version: '0'
43
- required_rubygems_version: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ hash: 3
55
+ segments:
56
+ - 0
57
+ version: "0"
58
+ required_rubygems_version: !ruby/object:Gem::Requirement
44
59
  none: false
45
- requirements:
46
- - - ! '>='
47
- - !ruby/object:Gem::Version
48
- version: '0'
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ hash: 3
64
+ segments:
65
+ - 0
66
+ version: "0"
49
67
  requirements: []
68
+
50
69
  rubyforge_project:
51
70
  rubygems_version: 1.8.24
52
71
  signing_key:
53
72
  specification_version: 3
54
- summary: Adding methods %w{stealth_delete map_values map_keys delete_many insert compact
55
- select_by}
56
- test_files:
73
+ summary: Adding methods %w{stealth_delete map_values map_keys delete_many insert compact select_by}
74
+ test_files:
57
75
  - spec/lib/hash_extend_spec.rb