zucker 2 → 3

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.
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
-