facets 2.8.2 → 2.8.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. data/AUTHORS +13 -11
  2. data/HISTORY.rdoc +58 -0
  3. data/lib/core/facets/array/recursive.rb +91 -0
  4. data/lib/core/facets/array/recursively.rb +2 -2
  5. data/lib/core/facets/array/traverse.rb +23 -6
  6. data/lib/core/facets/enumerable/collisions.rb +1 -0
  7. data/lib/core/facets/enumerable/commonality.rb +4 -2
  8. data/lib/core/facets/enumerable/graph.rb +37 -1
  9. data/lib/core/facets/enumerable/mash.rb +1 -39
  10. data/lib/core/facets/enumerable/recursive.rb +75 -0
  11. data/lib/core/facets/enumerable/visit.rb +30 -0
  12. data/lib/core/facets/file/ext.rb +36 -0
  13. data/lib/core/facets/hash/graph.rb +18 -0
  14. data/lib/core/facets/hash/mash.rb +1 -18
  15. data/lib/core/facets/hash/recursive.rb +180 -0
  16. data/lib/core/facets/hash/recursive_merge.rb +6 -0
  17. data/lib/core/facets/hash/recursively.rb +2 -2
  18. data/lib/core/facets/hash/to_module.rb +26 -0
  19. data/lib/core/facets/hash/to_proc.rb +2 -2
  20. data/lib/core/facets/hash/traverse.rb +19 -13
  21. data/lib/core/facets/kernel/assign.rb +63 -0
  22. data/lib/core/facets/kernel/assign_from.rb +45 -0
  23. data/lib/core/facets/kernel/dup.rb +63 -0
  24. data/lib/core/facets/kernel/instance.rb +156 -0
  25. data/lib/core/facets/kernel/instance_assign.rb +1 -22
  26. data/lib/core/facets/kernel/meta_def.rb +4 -0
  27. data/lib/core/facets/kernel/populate.rb +1 -74
  28. data/lib/core/facets/kernel/set_from.rb +2 -0
  29. data/lib/core/facets/kernel/try_dup.rb +1 -0
  30. data/lib/core/facets/module/set.rb +36 -0
  31. data/lib/core/facets/objectspace/reflect.rb +45 -0
  32. data/lib/core/facets/struct/attributes.rb +6 -2
  33. data/lib/core/facets/symbol/op_div.rb +19 -0
  34. data/lib/core/facets/to_hash.rb +12 -0
  35. data/lib/more/facets/casting_hash.rb +172 -0
  36. data/lib/more/facets/pathname.rb +36 -0
  37. data/lib/more/facets/prepend.rb +57 -0
  38. data/lib/more/facets/random.rb +19 -3
  39. data/lib/more/facets/roman.rb +46 -153
  40. data/lib/more/facets/stash.rb +148 -33
  41. data/meta/released +1 -1
  42. data/meta/version +1 -1
  43. data/test/core/array/test_recursive.rb +18 -0
  44. data/test/core/enumerable/test_recursive.rb +18 -0
  45. data/test/core/file/test_ext.rb +31 -0
  46. data/test/core/hash/test_recursive.rb +23 -0
  47. data/test/core/hash/test_to_module.rb +21 -0
  48. data/test/core/kernel/test_assign.rb +57 -0
  49. data/test/core/kernel/test_assign_from.rb +20 -0
  50. data/test/more/test_prepend.rb +28 -0
  51. data/test/more/test_random.rb +40 -4
  52. metadata +39 -10
  53. data/lib/core/facets/kernel/instance_variables.rb +0 -97
  54. data/lib/more/facets/instance_eval.rb +0 -50
  55. data/lib/more/facets/ioredirect.rb +0 -77
  56. data/lib/more/facets/plugin_manager.rb +0 -50
  57. data/test/core/kernel/test_populate.rb +0 -46
@@ -13,10 +13,46 @@ end
13
13
 
14
14
  class TestRangeRandom < Test::Unit::TestCase
15
15
 
16
- def test_at_rand
17
- r = (1..4)
18
- 20.times{ assert_nothing_raised{ r.at_rand } }
19
- 20.times{ assert( r.include?( r.at_rand ) ) }
16
+ def assert_random_range(range, *msg)
17
+ assert_nothing_raised{ range.at_rand }
18
+ assert(range.include?( range.at_rand ), *msg)
19
+ end
20
+
21
+ def test_at_rand_normal
22
+ 20.times do
23
+ assert_random_range(1..4)
24
+ assert_random_range(1...4)
25
+ assert_random_range(1.5..2.5)
26
+ assert_random_range(1.5...2.5)
27
+ assert_random_range(-4..-1)
28
+ assert_random_range(-4...-1)
29
+ assert_random_range(-2.5..-1.5)
30
+ assert_random_range(-2.5...-1.5)
31
+ assert_random_range('a'..'d')
32
+ assert_random_range('a'...'d')
33
+ assert_equal(5, (5..5).at_rand)
34
+ end
35
+ end
36
+
37
+ def test_at_rand_reverse
38
+ 20.times do
39
+ assert_equal(nil,(4..1).at_rand)
40
+ assert_equal(nil,(4...1).at_rand)
41
+ assert_equal(nil,(-1..-4).at_rand)
42
+ assert_equal(nil,(-1...-4).at_rand)
43
+ #assert((1..4).include?((4..1).at_rand))
44
+ #assert((-4...-1).include?((-1...-4).at_rand))
45
+ #assert((-4..-1).include?((-1..-4).at_rand))
46
+ end
47
+ end
48
+
49
+ # I'd rather it return the first sentinel than +nil+.
50
+ # Really, ruby should be raising an error as an invalid range value.
51
+ def test_at_rand_exclusive
52
+ assert_equal(nil,(5...5).at_rand)
53
+ #assert_raises(RangeError) do
54
+ # (5...5).at_rand
55
+ #end
20
56
  end
21
57
 
22
58
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 2
7
7
  - 8
8
- - 2
9
- version: 2.8.2
8
+ - 3
9
+ version: 2.8.3
10
10
  platform: ruby
11
11
  authors:
12
12
  - Thomas Sawyer <transfire@gmail.com>
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-02-26 00:00:00 -05:00
17
+ date: 2010-04-10 00:00:00 -04:00
18
18
  default_executable:
19
19
  dependencies: []
20
20
 
@@ -55,6 +55,7 @@ files:
55
55
  - lib/core/facets/array/pad.rb
56
56
  - lib/core/facets/array/permutation.rb
57
57
  - lib/core/facets/array/product.rb
58
+ - lib/core/facets/array/recursive.rb
58
59
  - lib/core/facets/array/recursively.rb
59
60
  - lib/core/facets/array/rotate.rb
60
61
  - lib/core/facets/array/select.rb
@@ -107,6 +108,7 @@ files:
107
108
  - lib/core/facets/enumerable/cluster_by.rb
108
109
  - lib/core/facets/enumerable/collapse.rb
109
110
  - lib/core/facets/enumerable/collect_with_index.rb
111
+ - lib/core/facets/enumerable/collisions.rb
110
112
  - lib/core/facets/enumerable/commonality.rb
111
113
  - lib/core/facets/enumerable/compact_map.rb
112
114
  - lib/core/facets/enumerable/count.rb
@@ -136,10 +138,12 @@ files:
136
138
  - lib/core/facets/enumerable/per.rb
137
139
  - lib/core/facets/enumerable/probability.rb
138
140
  - lib/core/facets/enumerable/purge.rb
141
+ - lib/core/facets/enumerable/recursive.rb
139
142
  - lib/core/facets/enumerable/split.rb
140
143
  - lib/core/facets/enumerable/sum.rb
141
144
  - lib/core/facets/enumerable/take.rb
142
145
  - lib/core/facets/enumerable/uniq_by.rb
146
+ - lib/core/facets/enumerable/visit.rb
143
147
  - lib/core/facets/enumerable.rb
144
148
  - lib/core/facets/enumerator/fx.rb
145
149
  - lib/core/facets/enumerator.rb
@@ -149,6 +153,7 @@ files:
149
153
  - lib/core/facets/exception.rb
150
154
  - lib/core/facets/file/append.rb
151
155
  - lib/core/facets/file/create.rb
156
+ - lib/core/facets/file/ext.rb
152
157
  - lib/core/facets/file/null.rb
153
158
  - lib/core/facets/file/read.rb
154
159
  - lib/core/facets/file/rewrite.rb
@@ -174,6 +179,7 @@ files:
174
179
  - lib/core/facets/hash/delete.rb
175
180
  - lib/core/facets/hash/diff.rb
176
181
  - lib/core/facets/hash/except.rb
182
+ - lib/core/facets/hash/graph.rb
177
183
  - lib/core/facets/hash/group_by_value.rb
178
184
  - lib/core/facets/hash/insert.rb
179
185
  - lib/core/facets/hash/inverse.rb
@@ -189,6 +195,7 @@ files:
189
195
  - lib/core/facets/hash/op_or.rb
190
196
  - lib/core/facets/hash/op_push.rb
191
197
  - lib/core/facets/hash/op_sub.rb
198
+ - lib/core/facets/hash/recursive.rb
192
199
  - lib/core/facets/hash/recursive_merge.rb
193
200
  - lib/core/facets/hash/recursively.rb
194
201
  - lib/core/facets/hash/rekey.rb
@@ -199,6 +206,7 @@ files:
199
206
  - lib/core/facets/hash/swap.rb
200
207
  - lib/core/facets/hash/symbolize_keys.rb
201
208
  - lib/core/facets/hash/to_h.rb
209
+ - lib/core/facets/hash/to_module.rb
202
210
  - lib/core/facets/hash/to_options.rb
203
211
  - lib/core/facets/hash/to_proc.rb
204
212
  - lib/core/facets/hash/to_struct.rb
@@ -227,6 +235,8 @@ files:
227
235
  - lib/core/facets/kernel/__set__.rb
228
236
  - lib/core/facets/kernel/as.rb
229
237
  - lib/core/facets/kernel/ask.rb
238
+ - lib/core/facets/kernel/assign.rb
239
+ - lib/core/facets/kernel/assign_from.rb
230
240
  - lib/core/facets/kernel/attr_singleton.rb
231
241
  - lib/core/facets/kernel/callstack.rb
232
242
  - lib/core/facets/kernel/complete.rb
@@ -234,6 +244,7 @@ files:
234
244
  - lib/core/facets/kernel/d.rb
235
245
  - lib/core/facets/kernel/deep_copy.rb
236
246
  - lib/core/facets/kernel/demo.rb
247
+ - lib/core/facets/kernel/dup.rb
237
248
  - lib/core/facets/kernel/eigenclass.rb
238
249
  - lib/core/facets/kernel/equate.rb
239
250
  - lib/core/facets/kernel/ergo.rb
@@ -243,11 +254,11 @@ files:
243
254
  - lib/core/facets/kernel/here.rb
244
255
  - lib/core/facets/kernel/identical.rb
245
256
  - lib/core/facets/kernel/in.rb
257
+ - lib/core/facets/kernel/instance.rb
246
258
  - lib/core/facets/kernel/instance_assign.rb
247
259
  - lib/core/facets/kernel/instance_class.rb
248
260
  - lib/core/facets/kernel/instance_exec.rb
249
261
  - lib/core/facets/kernel/instance_send.rb
250
- - lib/core/facets/kernel/instance_variables.rb
251
262
  - lib/core/facets/kernel/maybe.rb
252
263
  - lib/core/facets/kernel/meta_alias.rb
253
264
  - lib/core/facets/kernel/meta_class.rb
@@ -268,12 +279,14 @@ files:
268
279
  - lib/core/facets/kernel/resc.rb
269
280
  - lib/core/facets/kernel/respond.rb
270
281
  - lib/core/facets/kernel/returning.rb
282
+ - lib/core/facets/kernel/set_from.rb
271
283
  - lib/core/facets/kernel/silence.rb
272
284
  - lib/core/facets/kernel/singleton_class.rb
273
285
  - lib/core/facets/kernel/source_location.rb
274
286
  - lib/core/facets/kernel/tap.rb
275
287
  - lib/core/facets/kernel/true.rb
276
288
  - lib/core/facets/kernel/try.rb
289
+ - lib/core/facets/kernel/try_dup.rb
277
290
  - lib/core/facets/kernel/val.rb
278
291
  - lib/core/facets/kernel/with.rb
279
292
  - lib/core/facets/kernel.rb
@@ -312,6 +325,7 @@ files:
312
325
  - lib/core/facets/module/redirect_method.rb
313
326
  - lib/core/facets/module/rename_method.rb
314
327
  - lib/core/facets/module/revise.rb
328
+ - lib/core/facets/module/set.rb
315
329
  - lib/core/facets/module/spacename.rb
316
330
  - lib/core/facets/module/wrap_method.rb
317
331
  - lib/core/facets/module.rb
@@ -326,6 +340,7 @@ files:
326
340
  - lib/core/facets/numeric.rb
327
341
  - lib/core/facets/objectspace/classes.rb
328
342
  - lib/core/facets/objectspace/op_fetch.rb
343
+ - lib/core/facets/objectspace/reflect.rb
329
344
  - lib/core/facets/objectspace.rb
330
345
  - lib/core/facets/proc/bind.rb
331
346
  - lib/core/facets/proc/bind_to.rb
@@ -408,6 +423,7 @@ files:
408
423
  - lib/core/facets/symbol/chomp.rb
409
424
  - lib/core/facets/symbol/generate.rb
410
425
  - lib/core/facets/symbol/not.rb
426
+ - lib/core/facets/symbol/op_div.rb
411
427
  - lib/core/facets/symbol/plain.rb
412
428
  - lib/core/facets/symbol/query.rb
413
429
  - lib/core/facets/symbol/re_s.rb
@@ -443,6 +459,7 @@ files:
443
459
  - lib/more/facets/autoreload.rb
444
460
  - lib/more/facets/basicobject.rb
445
461
  - lib/more/facets/blankslate.rb
462
+ - lib/more/facets/casting_hash.rb
446
463
  - lib/more/facets/cgi.rb
447
464
  - lib/more/facets/class_extend.rb
448
465
  - lib/more/facets/cloneable.rb
@@ -470,10 +487,8 @@ files:
470
487
  - lib/more/facets/hook.rb
471
488
  - lib/more/facets/inheritor.rb
472
489
  - lib/more/facets/ini.rb
473
- - lib/more/facets/instance_eval.rb
474
490
  - lib/more/facets/instance_function.rb
475
491
  - lib/more/facets/instantiable.rb
476
- - lib/more/facets/ioredirect.rb
477
492
  - lib/more/facets/linkedlist.rb
478
493
  - lib/more/facets/main.rb
479
494
  - lib/more/facets/matcher.rb
@@ -502,8 +517,8 @@ files:
502
517
  - lib/more/facets/pathlist.rb
503
518
  - lib/more/facets/pathname.rb
504
519
  - lib/more/facets/platform.rb
505
- - lib/more/facets/plugin_manager.rb
506
520
  - lib/more/facets/preinitialize.rb
521
+ - lib/more/facets/prepend.rb
507
522
  - lib/more/facets/random.rb
508
523
  - lib/more/facets/rbconfig.rb
509
524
  - lib/more/facets/rbsystem.rb
@@ -549,6 +564,7 @@ files:
549
564
  - test/core/array/test_pad.rb
550
565
  - test/core/array/test_permutation.rb
551
566
  - test/core/array/test_product.rb
567
+ - test/core/array/test_recursive.rb
552
568
  - test/core/array/test_rotate.rb
553
569
  - test/core/array/test_select.rb
554
570
  - test/core/array/test_stackable.rb
@@ -594,11 +610,13 @@ files:
594
610
  - test/core/enumerable/test_one.rb
595
611
  - test/core/enumerable/test_per.rb
596
612
  - test/core/enumerable/test_probability.rb
613
+ - test/core/enumerable/test_recursive.rb
597
614
  - test/core/enumerable/test_split.rb
598
615
  - test/core/enumerable/test_take.rb
599
616
  - test/core/enumerable/test_uniq_by.rb
600
617
  - test/core/exception/test_exception.rb
601
618
  - test/core/file/test_create.rb
619
+ - test/core/file/test_ext.rb
602
620
  - test/core/file/test_file.rb
603
621
  - test/core/file/test_null.rb
604
622
  - test/core/file/test_rewrite.rb
@@ -624,6 +642,7 @@ files:
624
642
  - test/core/hash/test_op_or.rb
625
643
  - test/core/hash/test_op_push.rb
626
644
  - test/core/hash/test_op_sub.rb
645
+ - test/core/hash/test_recursive.rb
627
646
  - test/core/hash/test_rekey.rb
628
647
  - test/core/hash/test_replace_each.rb
629
648
  - test/core/hash/test_select.rb
@@ -631,6 +650,7 @@ files:
631
650
  - test/core/hash/test_stringify_keys.rb
632
651
  - test/core/hash/test_swap.rb
633
652
  - test/core/hash/test_symbolize_keys.rb
653
+ - test/core/hash/test_to_module.rb
634
654
  - test/core/hash/test_traverse.rb
635
655
  - test/core/hash/test_update_each.rb
636
656
  - test/core/hash/test_update_keys.rb
@@ -646,6 +666,8 @@ files:
646
666
  - test/core/integer/test_of.rb
647
667
  - test/core/integer/test_ordinal.rb
648
668
  - test/core/kernel/test_as.rb
669
+ - test/core/kernel/test_assign.rb
670
+ - test/core/kernel/test_assign_from.rb
649
671
  - test/core/kernel/test_attr_singleton.rb
650
672
  - test/core/kernel/test_callstack.rb
651
673
  - test/core/kernel/test_constant.rb
@@ -658,7 +680,6 @@ files:
658
680
  - test/core/kernel/test_not_nil.rb
659
681
  - test/core/kernel/test_object_class.rb
660
682
  - test/core/kernel/test_object_hexid.rb
661
- - test/core/kernel/test_populate.rb
662
683
  - test/core/kernel/test_resc.rb
663
684
  - test/core/kernel/test_returning.rb
664
685
  - test/core/kernel/test_silence.rb
@@ -794,6 +815,7 @@ files:
794
815
  - test/more/test_openobject.rb
795
816
  - test/more/test_ostruct.rb
796
817
  - test/more/test_partial.rb
818
+ - test/more/test_prepend.rb
797
819
  - test/more/test_random.rb
798
820
  - test/more/test_shellwords.rb
799
821
  - test/more/test_succ.rb
@@ -835,7 +857,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
835
857
  requirements: []
836
858
 
837
859
  rubyforge_project: facets
838
- rubygems_version: 1.3.6.pre.3
860
+ rubygems_version: 1.3.6
839
861
  signing_key:
840
862
  specification_version: 3
841
863
  summary: Premium Core Extensions and Standard Additions
@@ -851,6 +873,7 @@ test_files:
851
873
  - test/core/array/test_pad.rb
852
874
  - test/core/array/test_permutation.rb
853
875
  - test/core/array/test_product.rb
876
+ - test/core/array/test_recursive.rb
854
877
  - test/core/array/test_rotate.rb
855
878
  - test/core/array/test_select.rb
856
879
  - test/core/array/test_stackable.rb
@@ -896,11 +919,13 @@ test_files:
896
919
  - test/core/enumerable/test_one.rb
897
920
  - test/core/enumerable/test_per.rb
898
921
  - test/core/enumerable/test_probability.rb
922
+ - test/core/enumerable/test_recursive.rb
899
923
  - test/core/enumerable/test_split.rb
900
924
  - test/core/enumerable/test_take.rb
901
925
  - test/core/enumerable/test_uniq_by.rb
902
926
  - test/core/exception/test_exception.rb
903
927
  - test/core/file/test_create.rb
928
+ - test/core/file/test_ext.rb
904
929
  - test/core/file/test_file.rb
905
930
  - test/core/file/test_null.rb
906
931
  - test/core/file/test_rewrite.rb
@@ -926,6 +951,7 @@ test_files:
926
951
  - test/core/hash/test_op_or.rb
927
952
  - test/core/hash/test_op_push.rb
928
953
  - test/core/hash/test_op_sub.rb
954
+ - test/core/hash/test_recursive.rb
929
955
  - test/core/hash/test_rekey.rb
930
956
  - test/core/hash/test_replace_each.rb
931
957
  - test/core/hash/test_select.rb
@@ -933,6 +959,7 @@ test_files:
933
959
  - test/core/hash/test_stringify_keys.rb
934
960
  - test/core/hash/test_swap.rb
935
961
  - test/core/hash/test_symbolize_keys.rb
962
+ - test/core/hash/test_to_module.rb
936
963
  - test/core/hash/test_traverse.rb
937
964
  - test/core/hash/test_update_each.rb
938
965
  - test/core/hash/test_update_keys.rb
@@ -948,6 +975,8 @@ test_files:
948
975
  - test/core/integer/test_of.rb
949
976
  - test/core/integer/test_ordinal.rb
950
977
  - test/core/kernel/test_as.rb
978
+ - test/core/kernel/test_assign.rb
979
+ - test/core/kernel/test_assign_from.rb
951
980
  - test/core/kernel/test_attr_singleton.rb
952
981
  - test/core/kernel/test_callstack.rb
953
982
  - test/core/kernel/test_constant.rb
@@ -960,7 +989,6 @@ test_files:
960
989
  - test/core/kernel/test_not_nil.rb
961
990
  - test/core/kernel/test_object_class.rb
962
991
  - test/core/kernel/test_object_hexid.rb
963
- - test/core/kernel/test_populate.rb
964
992
  - test/core/kernel/test_resc.rb
965
993
  - test/core/kernel/test_returning.rb
966
994
  - test/core/kernel/test_silence.rb
@@ -1096,6 +1124,7 @@ test_files:
1096
1124
  - test/more/test_openobject.rb
1097
1125
  - test/more/test_ostruct.rb
1098
1126
  - test/more/test_partial.rb
1127
+ - test/more/test_prepend.rb
1099
1128
  - test/more/test_random.rb
1100
1129
  - test/more/test_shellwords.rb
1101
1130
  - test/more/test_succ.rb
@@ -1,97 +0,0 @@
1
- module Kernel
2
-
3
- def instance_vars
4
- InstanceVariables.new(self)
5
- end
6
-
7
- end
8
-
9
-
10
- class InstanceVariables
11
-
12
- include Enumerable
13
-
14
- def initialize(delegate)
15
- @delegate = delegate
16
- end
17
-
18
- def instance_delegate
19
- @delegate
20
- end
21
-
22
- def each
23
- @delegate.instance_variables.each do |name|
24
- yield(name[1..-1].to_sym, @delegate.instance_variable_get(name))
25
- end
26
- end
27
-
28
- def to_hash
29
- h = {}
30
- each do |name, value|
31
- h[name] = value
32
- end
33
- h
34
- end
35
-
36
- def [](name)
37
- name = atize(name)
38
- @delegate.instance_variable_get(name)
39
- end
40
-
41
- def []=(name, value)
42
- name = atize(name)
43
- @delegate.instance_variable_set(name,value)
44
- end
45
-
46
- def <<(pair)
47
- name, value = *pair
48
- name = atize(name)
49
- @delegate.instance_variable_set(name, value)
50
- end
51
-
52
- # (See also: Kernel#populate, which uses accessor method rather than setting instance variables directly.)
53
- def update(hash)
54
- hash.each do |pair|
55
- self << pair
56
- end
57
- end
58
-
59
- def keys
60
- @delegate.instance_variables.collect do |name|
61
- name[1..-1].to_sym
62
- end
63
- end
64
-
65
- def names
66
- @delegate.instance_variables.collect do |name|
67
- name[1..-1]
68
- end
69
- end
70
-
71
- def values
72
- @delegate.instance_variables.collect do |name|
73
- @delegate.instance_variable_get(name)
74
- end
75
- end
76
-
77
- private
78
-
79
- def atize(name)
80
- name !~ /^@/ ? "@#{name}" : name
81
- end
82
-
83
- end
84
-
85
- =begin demo
86
- class Friend
87
- attr_accessor :name, :age, :phone
88
- def initialize(name, age, phone)
89
- @name, @age, @phone = name, age, phone
90
- end
91
- end
92
-
93
- f1 = Friend.new("John", 30, "555-1212")
94
- p f1.instance_vars
95
- f1.instance_vars.update({:name=>'Jerry'})
96
- p f1.instance_vars
97
- =end
@@ -1,50 +0,0 @@
1
- require 'facets/functor'
2
-
3
- class Object
4
-
5
- # Access private internals of an object with a fluid notation.
6
- #
7
- # class X
8
- # attr :a
9
- # private :a
10
- # def initialize
11
- # @a = 1
12
- # end
13
- # end
14
- #
15
- # x = X.new
16
- # p x.instance_eval.a #=> 1
17
- # p x.a #=> Error
18
- #
19
- # A useful example might include adding accessors to a metaclass.
20
- #
21
- # class X
22
- # metaclass.instance_eval.attr :x
23
- # end
24
- #
25
- # This method is called #instance to go along with methods
26
- # that provide similar access, such as #instance_variables
27
- # and #instance_eval. In fact, one could argue this would be
28
- # a good return value of #instance_eval is no block is given.
29
- #
30
- # This method was once called #pry and #privy.
31
- #
32
- # TODO: Will only support calls with blocks as of Ruby 1.9+.
33
- #
34
- def instance_eval(*args, &block)
35
- return super if block or !args.empty?
36
- @_instance_eval ||= Functor.new do |op, *a|
37
- instance_eval{ send(op, *a) }
38
- end
39
- end
40
-
41
- # TODO for Ruby 1.9
42
- #def instance_eval(*args, &block)
43
- # return super if block or !args.empty?
44
- # @_instance_functor ||= Functor.new do |op, *a, &b|
45
- # fcall(op, *a, &b)
46
- # end
47
- #end
48
-
49
- end
50
-