zucker 2 → 3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (200) hide show
  1. data/CHANGELOG +12 -0
  2. data/README +4 -1
  3. data/Rakefile +17 -7
  4. data/lib/zucker.rb +7 -1
  5. data/lib/zucker/2/all.rb +2 -2
  6. data/lib/zucker/2/debug.rb +3 -3
  7. data/lib/zucker/2/default.rb +1 -1
  8. data/lib/zucker/3/D.rb +19 -0
  9. data/lib/zucker/3/alias_for.rb +19 -0
  10. data/lib/zucker/3/aliases.rb +28 -0
  11. data/lib/zucker/3/all.rb +6 -0
  12. data/lib/zucker/3/array.rb +23 -0
  13. data/lib/zucker/3/array2proc.rb +16 -0
  14. data/lib/zucker/3/binding.rb +25 -0
  15. data/lib/zucker/3/blank.rb +26 -0
  16. data/lib/zucker/3/class2proc.rb +10 -0
  17. data/lib/zucker/3/debug.rb +6 -0
  18. data/lib/zucker/3/default.rb +35 -0
  19. data/lib/zucker/3/egonil.rb +14 -0
  20. data/lib/zucker/3/enumerable.rb +12 -0
  21. data/lib/zucker/3/hash.rb +19 -0
  22. data/lib/zucker/3/hash2proc.rb +14 -0
  23. data/lib/zucker/3/info.rb +167 -0
  24. data/lib/zucker/3/iterate.rb +23 -0
  25. data/lib/zucker/3/ivars.rb +26 -0
  26. data/lib/zucker/3/kernel.rb +48 -0
  27. data/lib/zucker/3/mcopy.rb +8 -0
  28. data/lib/zucker/3/mm.rb +31 -0
  29. data/lib/zucker/3/not.rb +17 -0
  30. data/lib/zucker/3/regexp2proc.rb +10 -0
  31. data/lib/zucker/3/sandbox.rb +19 -0
  32. data/lib/zucker/3/square_brackets_for.rb +20 -0
  33. data/lib/zucker/3/string.rb +47 -0
  34. data/lib/zucker/3/tap.rb +9 -0
  35. data/lib/zucker/3/unary.rb +22 -0
  36. data/lib/zucker/3/union.rb +14 -0
  37. data/lib/zucker/alias_for.rb +19 -0
  38. data/lib/zucker/array.rb +8 -2
  39. data/lib/zucker/debug.rb +2 -0
  40. data/lib/zucker/default.rb +11 -1
  41. data/lib/zucker/info.rb +5 -2
  42. data/lib/zucker/kernel.rb +41 -11
  43. data/lib/zucker/mcopy.rb +0 -1
  44. data/lib/zucker/not.rb +17 -0
  45. data/lib/zucker/string.rb +24 -2
  46. data/lib/zucker/tap.rb +9 -0
  47. metadata +41 -160
  48. data/lib/zucker/1/desc/D.yaml +0 -23
  49. data/lib/zucker/1/desc/aliases.yaml +0 -16
  50. data/lib/zucker/1/desc/array.yaml +0 -14
  51. data/lib/zucker/1/desc/array2proc.yaml +0 -13
  52. data/lib/zucker/1/desc/binding.yaml +0 -10
  53. data/lib/zucker/1/desc/blank.yaml +0 -12
  54. data/lib/zucker/1/desc/class2proc.yaml +0 -12
  55. data/lib/zucker/1/desc/egonil.yaml +0 -17
  56. data/lib/zucker/1/desc/enumerable.yaml +0 -11
  57. data/lib/zucker/1/desc/hash.yaml +0 -12
  58. data/lib/zucker/1/desc/hash2proc.yaml +0 -11
  59. data/lib/zucker/1/desc/iterate.yaml +0 -17
  60. data/lib/zucker/1/desc/ivars.yaml +0 -20
  61. data/lib/zucker/1/desc/kernel.yaml +0 -13
  62. data/lib/zucker/1/desc/mcopy.yaml +0 -12
  63. data/lib/zucker/1/desc/mm.yaml +0 -12
  64. data/lib/zucker/1/desc/regexp2proc.yaml +0 -13
  65. data/lib/zucker/1/desc/sandbox.yaml +0 -14
  66. data/lib/zucker/1/desc/square_brackets_for.yaml +0 -23
  67. data/lib/zucker/1/desc/string.yaml +0 -13
  68. data/lib/zucker/1/desc/unary.yaml +0 -15
  69. data/lib/zucker/1/desc/union.yaml +0 -11
  70. data/lib/zucker/1/doc/meta.yaml +0 -4
  71. data/lib/zucker/1/doc/zucker_doc.html +0 -1286
  72. data/lib/zucker/1/doc/zucker_doc.rb +0 -493
  73. data/lib/zucker/1/spec/D_spec.rb +0 -27
  74. data/lib/zucker/1/spec/aliases_spec.rb +0 -34
  75. data/lib/zucker/1/spec/array2proc_spec.rb +0 -8
  76. data/lib/zucker/1/spec/array_spec.rb +0 -23
  77. data/lib/zucker/1/spec/binding_spec.rb +0 -6
  78. data/lib/zucker/1/spec/blank_spec.rb +0 -20
  79. data/lib/zucker/1/spec/class2proc_spec.rb +0 -9
  80. data/lib/zucker/1/spec/egonil_spec.rb +0 -30
  81. data/lib/zucker/1/spec/enumerable_spec.rb +0 -8
  82. data/lib/zucker/1/spec/hash2proc_spec.rb +0 -12
  83. data/lib/zucker/1/spec/hash_spec.rb +0 -10
  84. data/lib/zucker/1/spec/iterate_spec.rb +0 -54
  85. data/lib/zucker/1/spec/ivars_spec.rb +0 -20
  86. data/lib/zucker/1/spec/kernel_spec.rb +0 -34
  87. data/lib/zucker/1/spec/mcopy_spec.rb +0 -13
  88. data/lib/zucker/1/spec/mm_spec.rb +0 -6
  89. data/lib/zucker/1/spec/regexp2proc_spec.rb +0 -9
  90. data/lib/zucker/1/spec/sandbox_spec.rb +0 -7
  91. data/lib/zucker/1/spec/square_brackets_for_spec.rb +0 -59
  92. data/lib/zucker/1/spec/string_spec.rb +0 -29
  93. data/lib/zucker/1/spec/unary_spec.rb +0 -26
  94. data/lib/zucker/1/spec/union_spec.rb +0 -13
  95. data/lib/zucker/2/desc/D.yaml +0 -23
  96. data/lib/zucker/2/desc/aliases.yaml +0 -16
  97. data/lib/zucker/2/desc/array.yaml +0 -14
  98. data/lib/zucker/2/desc/array2proc.yaml +0 -17
  99. data/lib/zucker/2/desc/binding.yaml +0 -10
  100. data/lib/zucker/2/desc/blank.yaml +0 -10
  101. data/lib/zucker/2/desc/class2proc.yaml +0 -12
  102. data/lib/zucker/2/desc/egonil.yaml +0 -17
  103. data/lib/zucker/2/desc/enumerable.yaml +0 -11
  104. data/lib/zucker/2/desc/hash.yaml +0 -14
  105. data/lib/zucker/2/desc/hash2proc.yaml +0 -11
  106. data/lib/zucker/2/desc/info.yaml +0 -12
  107. data/lib/zucker/2/desc/iterate.yaml +0 -17
  108. data/lib/zucker/2/desc/ivars.yaml +0 -20
  109. data/lib/zucker/2/desc/kernel.yaml +0 -13
  110. data/lib/zucker/2/desc/mcopy.yaml +0 -12
  111. data/lib/zucker/2/desc/mm.yaml +0 -12
  112. data/lib/zucker/2/desc/regexp2proc.yaml +0 -13
  113. data/lib/zucker/2/desc/sandbox.yaml +0 -19
  114. data/lib/zucker/2/desc/square_brackets_for.yaml +0 -23
  115. data/lib/zucker/2/desc/string.yaml +0 -13
  116. data/lib/zucker/2/desc/unary.yaml +0 -15
  117. data/lib/zucker/2/desc/union.yaml +0 -11
  118. data/lib/zucker/2/doc/zucker_doc.html +0 -1494
  119. data/lib/zucker/2/doc/zucker_doc.rb +0 -498
  120. data/lib/zucker/2/spec/D_spec.rb +0 -35
  121. data/lib/zucker/2/spec/aliases_spec.rb +0 -13
  122. data/lib/zucker/2/spec/array2proc_spec.rb +0 -12
  123. data/lib/zucker/2/spec/array_spec.rb +0 -23
  124. data/lib/zucker/2/spec/binding_spec.rb +0 -8
  125. data/lib/zucker/2/spec/blank_spec.rb +0 -20
  126. data/lib/zucker/2/spec/class2proc_spec.rb +0 -9
  127. data/lib/zucker/2/spec/egonil_spec.rb +0 -30
  128. data/lib/zucker/2/spec/enumerable_spec.rb +0 -8
  129. data/lib/zucker/2/spec/hash2proc_spec.rb +0 -12
  130. data/lib/zucker/2/spec/hash_spec.rb +0 -17
  131. data/lib/zucker/2/spec/info_spec.rb +0 -8
  132. data/lib/zucker/2/spec/iterate_spec.rb +0 -54
  133. data/lib/zucker/2/spec/ivars_spec.rb +0 -20
  134. data/lib/zucker/2/spec/kernel_spec.rb +0 -28
  135. data/lib/zucker/2/spec/mcopy_spec.rb +0 -13
  136. data/lib/zucker/2/spec/mm_spec.rb +0 -8
  137. data/lib/zucker/2/spec/regexp2proc_spec.rb +0 -9
  138. data/lib/zucker/2/spec/sandbox_spec.rb +0 -26
  139. data/lib/zucker/2/spec/spec_helper.rb +0 -18
  140. data/lib/zucker/2/spec/square_brackets_for_spec.rb +0 -59
  141. data/lib/zucker/2/spec/string_spec.rb +0 -29
  142. data/lib/zucker/2/spec/unary_spec.rb +0 -26
  143. data/lib/zucker/2/spec/union_spec.rb +0 -15
  144. data/lib/zucker/desc/D.yaml +0 -23
  145. data/lib/zucker/desc/aliases.yaml +0 -16
  146. data/lib/zucker/desc/array.yaml +0 -14
  147. data/lib/zucker/desc/array2proc.yaml +0 -17
  148. data/lib/zucker/desc/binding.yaml +0 -10
  149. data/lib/zucker/desc/blank.yaml +0 -10
  150. data/lib/zucker/desc/class2proc.yaml +0 -12
  151. data/lib/zucker/desc/egonil.yaml +0 -17
  152. data/lib/zucker/desc/enumerable.yaml +0 -11
  153. data/lib/zucker/desc/hash.yaml +0 -14
  154. data/lib/zucker/desc/hash2proc.yaml +0 -11
  155. data/lib/zucker/desc/info.yaml +0 -12
  156. data/lib/zucker/desc/iterate.yaml +0 -17
  157. data/lib/zucker/desc/ivars.yaml +0 -20
  158. data/lib/zucker/desc/kernel.yaml +0 -13
  159. data/lib/zucker/desc/mcopy.yaml +0 -12
  160. data/lib/zucker/desc/mm.yaml +0 -12
  161. data/lib/zucker/desc/regexp2proc.yaml +0 -13
  162. data/lib/zucker/desc/sandbox.yaml +0 -19
  163. data/lib/zucker/desc/square_brackets_for.yaml +0 -23
  164. data/lib/zucker/desc/string.yaml +0 -13
  165. data/lib/zucker/desc/unary.yaml +0 -15
  166. data/lib/zucker/desc/union.yaml +0 -11
  167. data/lib/zucker/doc/zucker_doc.html +0 -1494
  168. data/lib/zucker/doc/zucker_doc.rb +0 -498
  169. data/lib/zucker/edge/ideas/args.rb +0 -22
  170. data/lib/zucker/edge/ideas/args.yaml +0 -19
  171. data/lib/zucker/edge/ideas/args_spec.rb +0 -19
  172. data/lib/zucker/edge/ideas/clone_deep.rb +0 -21
  173. data/lib/zucker/edge/ideas/clone_deep_spec.rb +0 -12
  174. data/lib/zucker/edge/ideas/dclone.yaml +0 -12
  175. data/lib/zucker/edge/ideas/hash.rb +0 -18
  176. data/lib/zucker/edge/ideas/require_directory.rb +0 -6
  177. data/lib/zucker/spec/D_spec.rb +0 -35
  178. data/lib/zucker/spec/aliases_spec.rb +0 -13
  179. data/lib/zucker/spec/array2proc_spec.rb +0 -12
  180. data/lib/zucker/spec/array_spec.rb +0 -23
  181. data/lib/zucker/spec/binding_spec.rb +0 -8
  182. data/lib/zucker/spec/blank_spec.rb +0 -20
  183. data/lib/zucker/spec/class2proc_spec.rb +0 -9
  184. data/lib/zucker/spec/egonil_spec.rb +0 -30
  185. data/lib/zucker/spec/enumerable_spec.rb +0 -8
  186. data/lib/zucker/spec/hash2proc_spec.rb +0 -12
  187. data/lib/zucker/spec/hash_spec.rb +0 -17
  188. data/lib/zucker/spec/info_spec.rb +0 -8
  189. data/lib/zucker/spec/iterate_spec.rb +0 -54
  190. data/lib/zucker/spec/ivars_spec.rb +0 -20
  191. data/lib/zucker/spec/kernel_spec.rb +0 -28
  192. data/lib/zucker/spec/mcopy_spec.rb +0 -13
  193. data/lib/zucker/spec/mm_spec.rb +0 -8
  194. data/lib/zucker/spec/regexp2proc_spec.rb +0 -9
  195. data/lib/zucker/spec/sandbox_spec.rb +0 -26
  196. data/lib/zucker/spec/spec_helper.rb +0 -18
  197. data/lib/zucker/spec/square_brackets_for_spec.rb +0 -59
  198. data/lib/zucker/spec/string_spec.rb +0 -29
  199. data/lib/zucker/spec/unary_spec.rb +0 -26
  200. data/lib/zucker/spec/union_spec.rb +0 -15
@@ -1,35 +0,0 @@
1
- require 'zucker/D'
2
-
3
- describe 'Object#D' do
4
-
5
- let :a do
6
- [ 1, "1", 2..5, [], {:hallo => :du}, nil, true ]
7
- end
8
-
9
- it 'should not change the object"s value' do
10
- a.each{ |e|
11
- (e.D).should == e
12
- }
13
-
14
- a.each{ |e|
15
- (e.D{|value| "This is a: #{value}"}).should == e
16
- }
17
- end
18
-
19
- it "should puts .inspect if no block is given (and not change the object's value)" do
20
- capture_stdout do
21
- a[0].D
22
- a[1].D
23
- a[6].D
24
- end.should == %{1\n"1"\ntrue\n}
25
- end
26
-
27
- it "should puts the block if it is given (and not change the object's value)" do
28
- capture_stdout do
29
- a[0].D{|value| "This is a: #{value}"}
30
- a[1].D{|value| "This is a: #{value}"}
31
- a[6].D{|value| "This is a: #{value}"}
32
- end.should == %{This is a: 1\nThis is a: 1\nThis is a: true\n}
33
- end
34
- end
35
-
@@ -1,13 +0,0 @@
1
- require 'zucker/aliases'
2
-
3
- describe '(aliases)' do
4
- it 'should create these aliases' do
5
- # see aliases.rb for aliase list
6
- end
7
-
8
- it 'should define these constants' do
9
- Infinity.finite?.should == false
10
- NaN.nan?.should == true
11
- end
12
- end
13
-
@@ -1,12 +0,0 @@
1
- require 'zucker/array2proc'
2
-
3
- describe 'Array#to_proc' do
4
- it 'should call the method of the first symbol, using the remaining elements as paramaters' do
5
- [1,2,3,4].map( &[:to_s, 2] ).should == ["1", "10", "11", "100"]
6
- end
7
-
8
- it "should convert each element to a proc and chain it, if the first parameter is an array" do
9
- [1,2,3,4].map( &[[:*,2],[:+,4]] ).should == [1,2,3,4].map{|i| i*2 + 4 }
10
- end
11
- end
12
-
@@ -1,23 +0,0 @@
1
- require 'zucker/array'
2
-
3
- describe 'Array#^' do
4
- it 'should do an exclusive or' do
5
- a = [1,2,3,4]
6
- b = [3,4,5,6]
7
- (a^b).should == [1,2,5,6]
8
- end
9
- end
10
-
11
- describe 'Array#sum' do
12
- it 'should sum the array' do
13
- [1,2,3,4,5].sum.should == 15
14
- %w|More Ruby|.sum.should == 'MoreRuby'
15
- end
16
- end
17
-
18
- describe 'Array#chrs' do
19
- it 'should convert the array to a string, using each element as ord value for the char' do
20
- [72, 97, 108, 108, 111].chrs.should == 'Hallo'
21
- end
22
- end
23
-
@@ -1,8 +0,0 @@
1
- require 'zucker/binding'
2
-
3
- describe 'Binding#inspect' do
4
- it 'should output the current environment' do
5
- pending '#TODO: write spec'
6
- end
7
- end
8
-
@@ -1,20 +0,0 @@
1
- require 'zucker/blank'
2
-
3
- describe 'Object#blank?' do
4
- it 'should be blank for blank values' do
5
- blank_values = [ nil, false, '', ' ', " \n\t \r ", [], {}, // ]
6
-
7
- blank_values.each{ |blank|
8
- blank.blank?.should == true
9
- }
10
- end
11
-
12
- it 'should not be blank for non blank values' do
13
- present_values = [ Object.new, true, 0, 1, 'a', [nil], { nil => nil } ]
14
-
15
- present_values.each{ |present|
16
- present.blank?.should == false
17
- }
18
- end
19
- end
20
-
@@ -1,9 +0,0 @@
1
- require 'zucker/class2proc'
2
- require 'set'
3
-
4
- describe 'Class#to_proc' do
5
- it 'should create new instances of the class' do
6
- [ [1,2],[3,5,6,7,3] ].map(&Set).should == [ Set[1,2], Set[5,6,7,3] ]
7
- end
8
- end
9
-
@@ -1,30 +0,0 @@
1
- require 'zucker/egonil'
2
-
3
- describe 'egonil' do
4
- it 'should not raise nil exceptions in the block' do
5
- proc do
6
- egonil{ nil.some_methods.that[:do].not.exist }
7
- end.should_not raise_exception
8
- end
9
-
10
- it 'should return the nil_value if given' do
11
- egonil(9){ nil.some_methods.that[:do].not.exist }.should == 9
12
- end
13
-
14
- it 'should restore default behaviour after the block' do
15
- proc do
16
- egonil{ nil.some_methods.that[:do].not.exist }
17
- end.should_not raise_exception
18
-
19
- proc do
20
- nil.a_method
21
- end.should raise_exception NoMethodError
22
- end
23
-
24
- it 'raise NoMethodError for non-nil objects' do
25
- proc do
26
- egonil{ 5.a_method }
27
- end.should raise_exception NoMethodError
28
- end
29
- end
30
-
@@ -1,8 +0,0 @@
1
- require 'zucker/enumerable'
2
-
3
- describe 'Enumerable#mash' do
4
- it 'should "map" a hash' do
5
- [1,2,3].mash{|e| [e, e.to_s] }.should == {1=>'1',2=>'2',3=>'3',}
6
- end
7
- end
8
-
@@ -1,12 +0,0 @@
1
- require 'zucker/hash2proc'
2
-
3
- describe 'Hash#to_proc' do
4
- it 'should run the proc given in the value for a key in the hash' do
5
- [1,2,3,4].map(&{
6
- 4 => :to_s,
7
- # 3 => [:to_s, 2] # "11" => if array2proc is used
8
- 2 => lambda {|e| e + 1000}
9
- }).should == [1, 1002, 3, "4"]
10
- end
11
- end
12
-
@@ -1,17 +0,0 @@
1
- require 'zucker/hash'
2
-
3
- describe 'Hash.zip' do
4
- it 'should zip together both given enumerables and take them as key=>values for a new hash' do
5
- Hash.zip( [1,2,3], [4,5,6] ).should == { 1=>4, 2=>5, 3=>6 }
6
- end
7
- end
8
-
9
- describe 'Hash#<<' do
10
- it 'should append new elements to the hash' do
11
- a = { 1=>4, 2=>5, 3=>6 }
12
- a << { 4=>7 }
13
- a << [5, 8]
14
- a.should == { 1=>4, 2=>5, 3=>6, 4=>7, 5=>8 }
15
- end
16
- end
17
-
@@ -1,8 +0,0 @@
1
- require 'zucker/info'
2
-
3
- describe 'Info' do
4
- it 'should define accessors for global variables, constants and some special methods/keywords' do
5
- # see sourcefile for the list
6
- end
7
- end
8
-
@@ -1,54 +0,0 @@
1
- require 'zucker/iterate'
2
-
3
- describe 'Object#iterate' do
4
- let :a do [1, 2, 3] end
5
- let :b do %w|a b c d| end
6
- let :res do Hash.new {[]} end
7
-
8
- it 'should behave like Enumerable#each for a single argument' do
9
- iterate a do |ele|
10
- res[:iter] << ele
11
- end
12
-
13
- a.each do |ele|
14
- res[:each] << ele
15
- end
16
-
17
- res[:iter].should == res[:each]
18
- end
19
-
20
- it 'should pass the right params to the block' do
21
- res = Hash.new {[]} # TODO: why?
22
- res[:iter_a_b] = [] # ....
23
- res[:iter_b_a] = [] # ....
24
-
25
-
26
- iterate a, b do |e,f|
27
- res[:iter_a_b] << [e, f]
28
- # p res[:iter_a_b], e, f
29
- end
30
-
31
- res[:iter_a_b].should == [
32
- [1, 'a'],
33
- [2, 'b'],
34
- [3, 'c'],
35
- [nil, 'd'],
36
- ]
37
-
38
- iterate b, a do |e,f|
39
- res[:iter_b_a] << [e, f]
40
- end
41
-
42
- res[:iter_b_a].should == [
43
- ['a', 1],
44
- ['b', 2],
45
- ['c', 3],
46
- ['d', nil],
47
- ]
48
-
49
- end
50
-
51
- it 'should return enumerators if no block is applied' do
52
- end
53
- end
54
-
@@ -1,20 +0,0 @@
1
- require 'zucker/ivars'
2
-
3
- describe 'instance_variables_from' do
4
- it 'should tansform the given parameter to instance variables' do
5
- def a_method(a = 1, b = 2)
6
- instance_variables_from binding # assigns @a and @b
7
-
8
- params = {:c => 3, :d => 4}
9
- ivars params # # assigns @c and @d
10
- end
11
-
12
- a_method
13
- @a.should == 1
14
- @b.should == 2
15
- @c.should == 3
16
- @d.should == 4
17
-
18
- end
19
- end
20
-
@@ -1,28 +0,0 @@
1
- require 'zucker/kernel'
2
-
3
- describe 'activate_warnings!' do
4
- it 'should set $VERBOSE to true' do
5
- activate_warnings!
6
- $VERBOSE.should == true
7
- end
8
- end
9
-
10
- describe 'deactivate_warnings!' do
11
- it 'should set $VERBOSE to false' do
12
- deactivate_warnings!
13
- $VERBOSE.should == false
14
- end
15
- end
16
-
17
- describe 'library?' do
18
- it 'should return false if the file is invoked directly' do
19
- library?.should == ( __FILE__ != $PROGRAM_NAME )
20
- end
21
- end
22
-
23
- describe 'ignore_sigint!' do
24
- it 'should catch ctrl+c signals' do
25
- # ...
26
- end
27
- end
28
-
@@ -1,13 +0,0 @@
1
- require 'zucker/mcopy'
2
-
3
- describe 'Object#mcopy' do
4
- it 'create a (deep) copy via marshalling' do
5
- a = %w[hello world]
6
- b = a.mcopy
7
- b.should == a
8
-
9
- b[0][1,1] = ''
10
- b.should_not == a
11
- end
12
- end
13
-
@@ -1,8 +0,0 @@
1
- require 'zucker/mm'
2
-
3
- describe 'Object#method_list' do
4
- it 'should display an ordered method list' do
5
- pending '#TODO: write spec'
6
- end
7
- end
8
-
@@ -1,9 +0,0 @@
1
- require 'zucker/regexp2proc'
2
-
3
- describe 'Regexp#to_proc' do
4
- it 'should match the regex' do
5
- %w|just another string array|.map( &/[jy]/).should == ["j", nil, nil, "y"]
6
- %w|just another string array|.select( &/[jy]/).should == ["just", "array"]
7
- end
8
- end
9
-
@@ -1,26 +0,0 @@
1
- require 'zucker/sandbox'
2
-
3
- describe 'sandbox' do
4
- it 'should throw a SecurityError if bad commands are issued' do
5
- proc do
6
- sandbox do
7
- `ls`
8
- end
9
- end.should raise_exception SecurityError
10
- end
11
-
12
- it 'should not throw an exception for errors, if the given parameter is not nil' do
13
- proc do
14
- sandbox( true ) do
15
- `ls`
16
- end
17
- end.should_not raise_exception
18
- end
19
-
20
- it 'should run the proc passed as parameter for errors, if it is given' do
21
- sandbox( lambda{|e| e.class } ) do
22
- `ls`
23
- end.should == SecurityError
24
- end
25
- end
26
-
@@ -1,18 +0,0 @@
1
- require 'stringio'
2
-
3
- def capture_stdout
4
- capture = StringIO.new
5
- restore, $stdout = $stdout, capture
6
- yield
7
- $stdout = restore
8
- capture.string
9
- end
10
-
11
- def capture_stderr
12
- capture = StringIO.new
13
- restore, $stderr = $stderr, capture
14
- yield
15
- $stderr = restore
16
- capture.string
17
- end
18
-
@@ -1,59 +0,0 @@
1
- require 'zucker/square_brackets_for'
2
-
3
- describe 'square_brackets_for' do
4
-
5
- before do
6
- class Klass
7
- def initialize
8
- @var = {
9
- :a_key => 1,
10
- :another_one => 2,
11
- }
12
- end
13
-
14
- @eigenvar = {
15
- :a_key => 99
16
- }
17
- end
18
- end
19
-
20
- it 'should define a [] getter (not a setter) for an instance var, if the second parameter is false' do
21
-
22
- class Klass
23
- square_brackets_for :var, nil
24
- end
25
-
26
- a = Klass.new
27
- a[:a_key].should == 1
28
-
29
- proc do
30
- a[:this_is] = 'not possible'
31
- end.should raise_exception NoMethodError
32
- end
33
-
34
- it 'should define [] and []= for accessing an instance variable' do
35
-
36
- class Klass
37
- square_brackets_for :var
38
- end
39
-
40
- a = Klass.new
41
- a[:a_key].should == 1
42
-
43
- a[:this_is] = 'useful'
44
- a[:this_is].should == 'useful'
45
- end
46
-
47
- it 'should also work for class-instance variables' do
48
-
49
- class Klass
50
- class << Klass
51
- square_brackets_for :eigenvar
52
- end
53
- end
54
-
55
- Klass[:a_key].should == 99
56
- end
57
-
58
- end
59
-