hash_extend 1.1.3 → 1.2.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.
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