hash-hooked 1.1.2 → 1.2.1
Sign up to get free protection for your applications and to get access to all the features.
- data/{CHANGELOG.rdoc → CHANGELOG.md} +6 -2
- data/lib/hash/hooked/hash_interface.rb +217 -54
- metadata +4 -4
@@ -1,8 +1,12 @@
|
|
1
1
|
|
2
|
-
|
2
|
+
## 6/15/2012 ##
|
3
3
|
|
4
4
|
Initial release - split from compositing-hash.
|
5
5
|
|
6
|
-
|
6
|
+
## 6/30/2012 ##
|
7
7
|
|
8
8
|
Renamed from hooked-hash to hash-hooked. File schema updated to reflect gem name.
|
9
|
+
|
10
|
+
## 2/15/2013 ##
|
11
|
+
|
12
|
+
Minor update for initialization args to match Hash.
|
@@ -9,16 +9,30 @@ module ::Hash::Hooked::HashInterface
|
|
9
9
|
# initialize #
|
10
10
|
################
|
11
11
|
|
12
|
+
###
|
12
13
|
# Initialize with reference a configuration instance.
|
13
|
-
#
|
14
|
-
#
|
15
|
-
#
|
16
|
-
#
|
17
|
-
|
14
|
+
#
|
15
|
+
# @overload initialize( configuration_instance, hash_initialization_arg, ... )
|
16
|
+
#
|
17
|
+
# @param [Object] configuration_instance
|
18
|
+
#
|
19
|
+
# Object that instance will be attached to; primarily useful for reference from hooks.
|
20
|
+
#
|
21
|
+
# @param [Object] hash_initialization_arg
|
22
|
+
#
|
23
|
+
# Parameters passed through super to Hash#initialize.
|
24
|
+
#
|
25
|
+
def initialize( configuration_instance = nil, default_value = nil, & default_value_block )
|
18
26
|
|
19
27
|
@configuration_instance = configuration_instance
|
20
|
-
|
21
|
-
|
28
|
+
|
29
|
+
if default_value
|
30
|
+
super( default_value )
|
31
|
+
elsif default_value_block
|
32
|
+
super( & default_value_block )
|
33
|
+
else
|
34
|
+
super()
|
35
|
+
end
|
22
36
|
|
23
37
|
end
|
24
38
|
|
@@ -26,6 +40,13 @@ module ::Hash::Hooked::HashInterface
|
|
26
40
|
# configuration_instance #
|
27
41
|
############################
|
28
42
|
|
43
|
+
###
|
44
|
+
# @!attribute [r]
|
45
|
+
#
|
46
|
+
# @return [Object]
|
47
|
+
#
|
48
|
+
# Object that instance is attached to; primarily useful for reference from hooks.
|
49
|
+
#
|
29
50
|
attr_accessor :configuration_instance
|
30
51
|
|
31
52
|
###################################### Subclass Hooks ##########################################
|
@@ -34,10 +55,21 @@ module ::Hash::Hooked::HashInterface
|
|
34
55
|
# pre_set_hook #
|
35
56
|
##################
|
36
57
|
|
58
|
+
###
|
37
59
|
# A hook that is called before setting a value; return value is used in place of object.
|
38
|
-
#
|
39
|
-
# @param [Object]
|
40
|
-
#
|
60
|
+
#
|
61
|
+
# @param [Object] key
|
62
|
+
#
|
63
|
+
# Key where object is to be stored.
|
64
|
+
#
|
65
|
+
# @param [Object] object
|
66
|
+
#
|
67
|
+
# Element being stored.
|
68
|
+
#
|
69
|
+
# @return [true,false]
|
70
|
+
#
|
71
|
+
# Return value is used in place of object.
|
72
|
+
#
|
41
73
|
def pre_set_hook( key, object )
|
42
74
|
|
43
75
|
return object
|
@@ -48,10 +80,21 @@ module ::Hash::Hooked::HashInterface
|
|
48
80
|
# post_set_hook #
|
49
81
|
###################
|
50
82
|
|
83
|
+
###
|
51
84
|
# A hook that is called after setting a value.
|
52
|
-
#
|
53
|
-
# @param [Object]
|
54
|
-
#
|
85
|
+
#
|
86
|
+
# @param [Object] key
|
87
|
+
#
|
88
|
+
# Key where object is to be stored.
|
89
|
+
#
|
90
|
+
# @param [Object] object
|
91
|
+
#
|
92
|
+
# Element being stored.
|
93
|
+
#
|
94
|
+
# @return [Object]
|
95
|
+
#
|
96
|
+
# Ignored.
|
97
|
+
#
|
55
98
|
def post_set_hook( key, object )
|
56
99
|
|
57
100
|
return object
|
@@ -62,9 +105,17 @@ module ::Hash::Hooked::HashInterface
|
|
62
105
|
# pre_get_hook #
|
63
106
|
##################
|
64
107
|
|
108
|
+
###
|
65
109
|
# A hook that is called before getting a value; if return value is false, get does not occur.
|
66
|
-
#
|
67
|
-
# @
|
110
|
+
#
|
111
|
+
# @param [Object] key
|
112
|
+
#
|
113
|
+
# Key where object is to be retrieved.
|
114
|
+
#
|
115
|
+
# @return [true,false]
|
116
|
+
#
|
117
|
+
# If return value is false, get does not occur.
|
118
|
+
#
|
68
119
|
def pre_get_hook( key )
|
69
120
|
|
70
121
|
return true
|
@@ -75,10 +126,21 @@ module ::Hash::Hooked::HashInterface
|
|
75
126
|
# post_get_hook #
|
76
127
|
###################
|
77
128
|
|
129
|
+
###
|
78
130
|
# A hook that is called after getting a value.
|
79
|
-
#
|
80
|
-
# @param [Object]
|
81
|
-
#
|
131
|
+
#
|
132
|
+
# @param [Object] key
|
133
|
+
#
|
134
|
+
# Key where object has been retrieved.
|
135
|
+
#
|
136
|
+
# @param [Object] object
|
137
|
+
#
|
138
|
+
# Element retrieved.
|
139
|
+
#
|
140
|
+
# @return [Object]
|
141
|
+
#
|
142
|
+
# Object returned in place of get result.
|
143
|
+
#
|
82
144
|
def post_get_hook( key, object )
|
83
145
|
|
84
146
|
return object
|
@@ -89,9 +151,17 @@ module ::Hash::Hooked::HashInterface
|
|
89
151
|
# pre_delete_hook #
|
90
152
|
#####################
|
91
153
|
|
154
|
+
###
|
92
155
|
# A hook that is called before deleting a value; if return value is false, delete does not occur.
|
93
|
-
#
|
94
|
-
# @
|
156
|
+
#
|
157
|
+
# @param [Object] key
|
158
|
+
#
|
159
|
+
# Key where object is to be deleted.
|
160
|
+
#
|
161
|
+
# @return [true,false]
|
162
|
+
#
|
163
|
+
# If return value is false, delete does not occur.
|
164
|
+
#
|
95
165
|
def pre_delete_hook( key )
|
96
166
|
|
97
167
|
return true
|
@@ -102,10 +172,21 @@ module ::Hash::Hooked::HashInterface
|
|
102
172
|
# post_delete_hook #
|
103
173
|
######################
|
104
174
|
|
175
|
+
###
|
105
176
|
# A hook that is called after deleting a value.
|
106
|
-
#
|
107
|
-
# @param [Object]
|
108
|
-
#
|
177
|
+
#
|
178
|
+
# @param [Object] key
|
179
|
+
#
|
180
|
+
# Key where object has been deleted.
|
181
|
+
#
|
182
|
+
# @param [Object] object
|
183
|
+
#
|
184
|
+
# Element deleted.
|
185
|
+
#
|
186
|
+
# @return [Object]
|
187
|
+
#
|
188
|
+
# Object returned in place of delete result.
|
189
|
+
#
|
109
190
|
def post_delete_hook( key, object )
|
110
191
|
|
111
192
|
return object
|
@@ -146,9 +227,17 @@ module ::Hash::Hooked::HashInterface
|
|
146
227
|
# get_without_hooks #
|
147
228
|
#######################
|
148
229
|
|
149
|
-
|
150
|
-
#
|
151
|
-
#
|
230
|
+
###
|
231
|
+
# Alias to #[] that bypasses hooks.
|
232
|
+
#
|
233
|
+
# @param [Object] key
|
234
|
+
#
|
235
|
+
# Key where object is to be stored.
|
236
|
+
#
|
237
|
+
# @return [Object]
|
238
|
+
#
|
239
|
+
# Object retrieved.
|
240
|
+
#
|
152
241
|
def get_without_hooks( key )
|
153
242
|
|
154
243
|
@without_hooks = true
|
@@ -187,10 +276,21 @@ module ::Hash::Hooked::HashInterface
|
|
187
276
|
# store_without_hooks #
|
188
277
|
#########################
|
189
278
|
|
190
|
-
|
191
|
-
#
|
192
|
-
#
|
193
|
-
# @
|
279
|
+
###
|
280
|
+
# Alias to #[]= that bypasses hooks.
|
281
|
+
#
|
282
|
+
# @param [Object] key
|
283
|
+
#
|
284
|
+
# Key where object is to be stored.
|
285
|
+
#
|
286
|
+
# @param [Object] object
|
287
|
+
#
|
288
|
+
# Element being stored.
|
289
|
+
#
|
290
|
+
# @return [Object]
|
291
|
+
#
|
292
|
+
# Element returned.
|
293
|
+
#
|
194
294
|
def store_without_hooks( key, object )
|
195
295
|
|
196
296
|
@without_hooks = true
|
@@ -235,9 +335,17 @@ module ::Hash::Hooked::HashInterface
|
|
235
335
|
# delete_without_hooks #
|
236
336
|
##########################
|
237
337
|
|
238
|
-
|
239
|
-
#
|
240
|
-
#
|
338
|
+
###
|
339
|
+
# Alias to #delete that bypasses hooks.
|
340
|
+
#
|
341
|
+
# @param [Object] object
|
342
|
+
#
|
343
|
+
# Element being deleted.
|
344
|
+
#
|
345
|
+
# @return [Object]
|
346
|
+
#
|
347
|
+
# Element returned.
|
348
|
+
#
|
241
349
|
def delete_without_hooks( key )
|
242
350
|
|
243
351
|
@without_hooks = true
|
@@ -274,9 +382,17 @@ module ::Hash::Hooked::HashInterface
|
|
274
382
|
# delete_if_without_hooks #
|
275
383
|
#############################
|
276
384
|
|
277
|
-
|
278
|
-
#
|
279
|
-
#
|
385
|
+
###
|
386
|
+
# Alias to #delete_if that bypasses hooks.
|
387
|
+
#
|
388
|
+
# @yield
|
389
|
+
#
|
390
|
+
# Block passed to :delete_if.
|
391
|
+
#
|
392
|
+
# @return [Object]
|
393
|
+
#
|
394
|
+
# Deleted element.
|
395
|
+
#
|
280
396
|
def delete_if_without_hooks( & block )
|
281
397
|
|
282
398
|
@without_hooks = true
|
@@ -312,9 +428,17 @@ module ::Hash::Hooked::HashInterface
|
|
312
428
|
# reject_without_hooks! #
|
313
429
|
###########################
|
314
430
|
|
315
|
-
|
316
|
-
#
|
317
|
-
#
|
431
|
+
###
|
432
|
+
# Alias to #reject that bypasses hooks.
|
433
|
+
#
|
434
|
+
# @yield
|
435
|
+
#
|
436
|
+
# Block passed to :keep_if.
|
437
|
+
#
|
438
|
+
# @return [Object]
|
439
|
+
#
|
440
|
+
# Self.
|
441
|
+
#
|
318
442
|
def reject_without_hooks!
|
319
443
|
|
320
444
|
@without_hooks = true
|
@@ -352,9 +476,17 @@ module ::Hash::Hooked::HashInterface
|
|
352
476
|
# keep_if_without_hooks #
|
353
477
|
###########################
|
354
478
|
|
355
|
-
|
356
|
-
#
|
357
|
-
#
|
479
|
+
###
|
480
|
+
# Alias to #keep_if that bypasses hooks.
|
481
|
+
#
|
482
|
+
# @yield
|
483
|
+
#
|
484
|
+
# Block passed to :keep_if.
|
485
|
+
#
|
486
|
+
# @return [Object]
|
487
|
+
#
|
488
|
+
# Deleted element.
|
489
|
+
#
|
358
490
|
def keep_if_without_hooks( & block )
|
359
491
|
|
360
492
|
@without_hooks = true
|
@@ -392,9 +524,17 @@ module ::Hash::Hooked::HashInterface
|
|
392
524
|
# select_without_hooks! #
|
393
525
|
###########################
|
394
526
|
|
395
|
-
|
396
|
-
#
|
397
|
-
#
|
527
|
+
###
|
528
|
+
# Alias to #select that bypasses hooks.
|
529
|
+
#
|
530
|
+
# @yield
|
531
|
+
#
|
532
|
+
# Block passed to :select!.
|
533
|
+
#
|
534
|
+
# @return [Object]
|
535
|
+
#
|
536
|
+
# Self.
|
537
|
+
#
|
398
538
|
def select_without_hooks!( & block )
|
399
539
|
|
400
540
|
@without_hooks = true
|
@@ -433,8 +573,13 @@ module ::Hash::Hooked::HashInterface
|
|
433
573
|
# update_without_hooks #
|
434
574
|
##########################
|
435
575
|
|
436
|
-
|
437
|
-
#
|
576
|
+
###
|
577
|
+
# Alias to #merge! that bypasses hooks.
|
578
|
+
#
|
579
|
+
# @return [Object]
|
580
|
+
#
|
581
|
+
# Self.
|
582
|
+
#
|
438
583
|
def merge_without_hooks!
|
439
584
|
|
440
585
|
@without_hooks = true
|
@@ -469,9 +614,17 @@ module ::Hash::Hooked::HashInterface
|
|
469
614
|
# replace_without_hooks #
|
470
615
|
###########################
|
471
616
|
|
472
|
-
|
473
|
-
#
|
474
|
-
#
|
617
|
+
###
|
618
|
+
# Alias to #replace that bypasses hooks.
|
619
|
+
#
|
620
|
+
# @param [Array] other_hash
|
621
|
+
#
|
622
|
+
# Other hash to replace self with.
|
623
|
+
#
|
624
|
+
# @return [Object]
|
625
|
+
#
|
626
|
+
# Self.
|
627
|
+
#
|
475
628
|
def replace_without_hooks( other_hash )
|
476
629
|
|
477
630
|
@without_hooks = true
|
@@ -503,8 +656,13 @@ module ::Hash::Hooked::HashInterface
|
|
503
656
|
# shift_without_hooks #
|
504
657
|
#########################
|
505
658
|
|
506
|
-
|
507
|
-
#
|
659
|
+
###
|
660
|
+
# Alias to #shift that bypasses hooks.
|
661
|
+
#
|
662
|
+
# @return [Object]
|
663
|
+
#
|
664
|
+
# Element shifted.
|
665
|
+
#
|
508
666
|
def shift_without_hooks
|
509
667
|
|
510
668
|
@without_hooks = true
|
@@ -533,8 +691,13 @@ module ::Hash::Hooked::HashInterface
|
|
533
691
|
# clear_without_hooks #
|
534
692
|
#########################
|
535
693
|
|
536
|
-
|
537
|
-
#
|
694
|
+
###
|
695
|
+
# Alias to #clear that bypasses hooks.
|
696
|
+
#
|
697
|
+
# @return [Object]
|
698
|
+
#
|
699
|
+
# Self.
|
700
|
+
#
|
538
701
|
def clear_without_hooks
|
539
702
|
|
540
703
|
@without_hooks = true
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hash-hooked
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1
|
4
|
+
version: 1.2.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-02-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: identifies_as
|
@@ -41,7 +41,7 @@ files:
|
|
41
41
|
- lib/hash-hooked.rb
|
42
42
|
- spec/hash/hooked_spec.rb
|
43
43
|
- README.md
|
44
|
-
- CHANGELOG.
|
44
|
+
- CHANGELOG.md
|
45
45
|
homepage: http://rubygems.org/gems/hash-hooked
|
46
46
|
licenses: []
|
47
47
|
post_install_message:
|
@@ -62,7 +62,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
62
62
|
version: '0'
|
63
63
|
requirements: []
|
64
64
|
rubyforge_project: hash-hooked
|
65
|
-
rubygems_version: 1.8.
|
65
|
+
rubygems_version: 1.8.24
|
66
66
|
signing_key:
|
67
67
|
specification_version: 3
|
68
68
|
summary: Provides ::Hash::Hooked.
|