zucker 8 → 9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (366) hide show
  1. data/CHANGELOG +14 -0
  2. data/MIT-LICENSE +1 -1
  3. data/README +1 -1
  4. data/Rakefile +33 -40
  5. data/desc/alias_for.yaml +17 -0
  6. data/desc/aliases.yaml +18 -0
  7. data/desc/array.yaml +13 -0
  8. data/desc/array_to_proc.yaml +16 -0
  9. data/desc/binding.yaml +22 -0
  10. data/desc/blank.yaml +9 -0
  11. data/desc/cc.yaml +10 -0
  12. data/desc/class_to_proc.yaml +11 -0
  13. data/desc/dd.yaml +23 -0
  14. data/desc/egonil.yaml +15 -0
  15. data/desc/engine.yaml +15 -0
  16. data/desc/enumerable.yaml +10 -0
  17. data/desc/file.yaml +15 -0
  18. data/desc/hash.yaml +14 -0
  19. data/desc/hash_to_proc.yaml +10 -0
  20. data/desc/info.yaml +20 -0
  21. data/desc/iterate.yaml +16 -0
  22. data/desc/ivars.yaml +19 -0
  23. data/desc/kernel.yaml +14 -0
  24. data/desc/mcopy.yaml +11 -0
  25. data/desc/mm.yaml +15 -0
  26. data/desc/not.yaml +11 -0
  27. data/desc/oo.yaml +10 -0
  28. data/desc/os.yaml +19 -0
  29. data/desc/qq.yaml +11 -0
  30. data/desc/regexp_to_proc.yaml +12 -0
  31. data/desc/regexp_visualize.yaml +23 -0
  32. data/desc/sandbox.yaml +12 -0
  33. data/desc/square_brackets_for.yaml +22 -0
  34. data/desc/string.yaml +23 -0
  35. data/desc/tap.yaml +17 -0
  36. data/desc/unary.yaml +15 -0
  37. data/desc/union.yaml +10 -0
  38. data/desc/version.yaml +28 -0
  39. data/doc/zucker_doc.html +2688 -0
  40. data/doc/zucker_doc.rb +553 -0
  41. data/lib/zucker.rb +10 -9
  42. data/lib/zucker/array2proc.rb +2 -18
  43. data/lib/zucker/{2/array2proc.rb → array_to_proc.rb} +0 -0
  44. data/lib/zucker/binding.rb +4 -5
  45. data/lib/zucker/cc.rb +7 -2
  46. data/lib/zucker/class2proc.rb +2 -12
  47. data/lib/zucker/{1/class2proc.rb → class_to_proc.rb} +0 -0
  48. data/lib/zucker/file.rb +22 -0
  49. data/lib/zucker/hash2proc.rb +2 -16
  50. data/lib/zucker/{1/hash2proc.rb → hash_to_proc.rb} +0 -0
  51. data/lib/zucker/kernel.rb +4 -2
  52. data/lib/zucker/mm.rb +14 -8
  53. data/lib/zucker/regexp2proc.rb +2 -12
  54. data/lib/zucker/{1/regexp2proc.rb → regexp_to_proc.rb} +0 -0
  55. data/lib/zucker/regexp_visualize.rb +26 -0
  56. data/lib/zucker/sandbox.rb +1 -11
  57. data/spec/alias_for_spec.rb +117 -0
  58. data/spec/aliases_spec.rb +13 -0
  59. data/spec/array_spec.rb +23 -0
  60. data/spec/array_to_proc_spec.rb +12 -0
  61. data/spec/binding_spec.rb +6 -0
  62. data/spec/blank_spec.rb +20 -0
  63. data/spec/cc_spec.rb +6 -0
  64. data/spec/class_to_proc_spec.rb +9 -0
  65. data/spec/dd_spec.rb +37 -0
  66. data/spec/egonil_spec.rb +32 -0
  67. data/spec/engine_spec.rb +11 -0
  68. data/spec/enumerable_spec.rb +8 -0
  69. data/spec/file_spec.rb +30 -0
  70. data/spec/hash_spec.rb +25 -0
  71. data/spec/hash_to_proc_spec.rb +12 -0
  72. data/spec/info_spec.rb +8 -0
  73. data/spec/iterate_spec.rb +59 -0
  74. data/spec/ivars_spec.rb +20 -0
  75. data/spec/kernel_spec.rb +37 -0
  76. data/spec/mcopy_spec.rb +13 -0
  77. data/spec/mm_spec.rb +6 -0
  78. data/spec/not_spec.rb +12 -0
  79. data/spec/oo_spec.rb +6 -0
  80. data/spec/os_spec.rb +37 -0
  81. data/spec/qq_spec.rb +19 -0
  82. data/spec/regexp_to_proc_spec.rb +9 -0
  83. data/spec/regexp_visualize_spec.rb +38 -0
  84. data/spec/sandbox_spec.rb +12 -0
  85. data/spec/spec_helper.rb +18 -0
  86. data/spec/square_brackets_for_spec.rb +59 -0
  87. data/spec/string_spec.rb +65 -0
  88. data/spec/tap_spec.rb +18 -0
  89. data/spec/unary_spec.rb +26 -0
  90. data/spec/union_spec.rb +17 -0
  91. data/spec/version_spec.rb +55 -0
  92. data/zucker.gemspec +21 -0
  93. metadata +139 -323
  94. data/lib/zucker/1/D.rb +0 -21
  95. data/lib/zucker/1/aliases.rb +0 -30
  96. data/lib/zucker/1/all.rb +0 -8
  97. data/lib/zucker/1/array.rb +0 -19
  98. data/lib/zucker/1/array2proc.rb +0 -12
  99. data/lib/zucker/1/binding.rb +0 -27
  100. data/lib/zucker/1/blank.rb +0 -28
  101. data/lib/zucker/1/debug.rb +0 -6
  102. data/lib/zucker/1/default.rb +0 -27
  103. data/lib/zucker/1/egonil.rb +0 -16
  104. data/lib/zucker/1/enumerable.rb +0 -14
  105. data/lib/zucker/1/hash.rb +0 -21
  106. data/lib/zucker/1/iterate.rb +0 -25
  107. data/lib/zucker/1/ivars.rb +0 -28
  108. data/lib/zucker/1/kernel.rb +0 -22
  109. data/lib/zucker/1/mcopy.rb +0 -11
  110. data/lib/zucker/1/mm.rb +0 -33
  111. data/lib/zucker/1/sandbox.rb +0 -17
  112. data/lib/zucker/1/square_brackets_for.rb +0 -22
  113. data/lib/zucker/1/string.rb +0 -27
  114. data/lib/zucker/1/unary.rb +0 -24
  115. data/lib/zucker/1/union.rb +0 -16
  116. data/lib/zucker/2/D.rb +0 -21
  117. data/lib/zucker/2/aliases.rb +0 -30
  118. data/lib/zucker/2/all.rb +0 -8
  119. data/lib/zucker/2/array.rb +0 -19
  120. data/lib/zucker/2/binding.rb +0 -27
  121. data/lib/zucker/2/blank.rb +0 -28
  122. data/lib/zucker/2/class2proc.rb +0 -12
  123. data/lib/zucker/2/debug.rb +0 -6
  124. data/lib/zucker/2/default.rb +0 -27
  125. data/lib/zucker/2/egonil.rb +0 -16
  126. data/lib/zucker/2/enumerable.rb +0 -14
  127. data/lib/zucker/2/hash.rb +0 -21
  128. data/lib/zucker/2/hash2proc.rb +0 -16
  129. data/lib/zucker/2/info.rb +0 -166
  130. data/lib/zucker/2/iterate.rb +0 -25
  131. data/lib/zucker/2/ivars.rb +0 -28
  132. data/lib/zucker/2/kernel.rb +0 -20
  133. data/lib/zucker/2/mcopy.rb +0 -11
  134. data/lib/zucker/2/mm.rb +0 -33
  135. data/lib/zucker/2/regexp2proc.rb +0 -12
  136. data/lib/zucker/2/sandbox.rb +0 -21
  137. data/lib/zucker/2/square_brackets_for.rb +0 -22
  138. data/lib/zucker/2/string.rb +0 -27
  139. data/lib/zucker/2/unary.rb +0 -24
  140. data/lib/zucker/2/union.rb +0 -16
  141. data/lib/zucker/3/D.rb +0 -21
  142. data/lib/zucker/3/alias_for.rb +0 -21
  143. data/lib/zucker/3/aliases.rb +0 -30
  144. data/lib/zucker/3/all.rb +0 -8
  145. data/lib/zucker/3/array.rb +0 -25
  146. data/lib/zucker/3/array2proc.rb +0 -18
  147. data/lib/zucker/3/binding.rb +0 -27
  148. data/lib/zucker/3/blank.rb +0 -28
  149. data/lib/zucker/3/class2proc.rb +0 -12
  150. data/lib/zucker/3/debug.rb +0 -8
  151. data/lib/zucker/3/default.rb +0 -37
  152. data/lib/zucker/3/egonil.rb +0 -16
  153. data/lib/zucker/3/enumerable.rb +0 -14
  154. data/lib/zucker/3/hash.rb +0 -21
  155. data/lib/zucker/3/hash2proc.rb +0 -16
  156. data/lib/zucker/3/info.rb +0 -169
  157. data/lib/zucker/3/iterate.rb +0 -25
  158. data/lib/zucker/3/ivars.rb +0 -28
  159. data/lib/zucker/3/kernel.rb +0 -50
  160. data/lib/zucker/3/mcopy.rb +0 -10
  161. data/lib/zucker/3/mm.rb +0 -33
  162. data/lib/zucker/3/not.rb +0 -19
  163. data/lib/zucker/3/regexp2proc.rb +0 -12
  164. data/lib/zucker/3/sandbox.rb +0 -21
  165. data/lib/zucker/3/square_brackets_for.rb +0 -22
  166. data/lib/zucker/3/string.rb +0 -49
  167. data/lib/zucker/3/tap.rb +0 -11
  168. data/lib/zucker/3/unary.rb +0 -24
  169. data/lib/zucker/3/union.rb +0 -16
  170. data/lib/zucker/4/D.rb +0 -21
  171. data/lib/zucker/4/alias_for.rb +0 -21
  172. data/lib/zucker/4/aliases.rb +0 -35
  173. data/lib/zucker/4/all.rb +0 -8
  174. data/lib/zucker/4/array.rb +0 -25
  175. data/lib/zucker/4/array2proc.rb +0 -18
  176. data/lib/zucker/4/binding.rb +0 -27
  177. data/lib/zucker/4/blank.rb +0 -28
  178. data/lib/zucker/4/class2proc.rb +0 -12
  179. data/lib/zucker/4/debug.rb +0 -8
  180. data/lib/zucker/4/default.rb +0 -40
  181. data/lib/zucker/4/egonil.rb +0 -16
  182. data/lib/zucker/4/engine.rb +0 -69
  183. data/lib/zucker/4/enumerable.rb +0 -14
  184. data/lib/zucker/4/hash.rb +0 -21
  185. data/lib/zucker/4/hash2proc.rb +0 -16
  186. data/lib/zucker/4/info.rb +0 -173
  187. data/lib/zucker/4/iterate.rb +0 -25
  188. data/lib/zucker/4/ivars.rb +0 -28
  189. data/lib/zucker/4/kernel.rb +0 -27
  190. data/lib/zucker/4/mcopy.rb +0 -10
  191. data/lib/zucker/4/mm.rb +0 -33
  192. data/lib/zucker/4/not.rb +0 -19
  193. data/lib/zucker/4/os.rb +0 -50
  194. data/lib/zucker/4/q.rb +0 -7
  195. data/lib/zucker/4/regexp2proc.rb +0 -12
  196. data/lib/zucker/4/sandbox.rb +0 -23
  197. data/lib/zucker/4/square_brackets_for.rb +0 -22
  198. data/lib/zucker/4/string.rb +0 -54
  199. data/lib/zucker/4/tap.rb +0 -11
  200. data/lib/zucker/4/unary.rb +0 -24
  201. data/lib/zucker/4/union.rb +0 -16
  202. data/lib/zucker/4/version.rb +0 -115
  203. data/lib/zucker/5/alias_for.rb +0 -21
  204. data/lib/zucker/5/aliases.rb +0 -51
  205. data/lib/zucker/5/all.rb +0 -4
  206. data/lib/zucker/5/array.rb +0 -25
  207. data/lib/zucker/5/array2proc.rb +0 -18
  208. data/lib/zucker/5/binding.rb +0 -34
  209. data/lib/zucker/5/blank.rb +0 -28
  210. data/lib/zucker/5/cc.rb +0 -25
  211. data/lib/zucker/5/class2proc.rb +0 -12
  212. data/lib/zucker/5/control.rb +0 -4
  213. data/lib/zucker/5/dd.rb +0 -24
  214. data/lib/zucker/5/debug.rb +0 -4
  215. data/lib/zucker/5/default.rb +0 -4
  216. data/lib/zucker/5/egonil.rb +0 -16
  217. data/lib/zucker/5/engine.rb +0 -69
  218. data/lib/zucker/5/enumerable.rb +0 -14
  219. data/lib/zucker/5/env.rb +0 -4
  220. data/lib/zucker/5/extensions.rb +0 -4
  221. data/lib/zucker/5/hash.rb +0 -27
  222. data/lib/zucker/5/hash2proc.rb +0 -16
  223. data/lib/zucker/5/info.rb +0 -177
  224. data/lib/zucker/5/iterate.rb +0 -26
  225. data/lib/zucker/5/ivars.rb +0 -28
  226. data/lib/zucker/5/kernel.rb +0 -34
  227. data/lib/zucker/5/mcopy.rb +0 -10
  228. data/lib/zucker/5/mm.rb +0 -34
  229. data/lib/zucker/5/not.rb +0 -19
  230. data/lib/zucker/5/object.rb +0 -4
  231. data/lib/zucker/5/oo.rb +0 -17
  232. data/lib/zucker/5/os.rb +0 -49
  233. data/lib/zucker/5/qq.rb +0 -12
  234. data/lib/zucker/5/regexp2proc.rb +0 -12
  235. data/lib/zucker/5/sandbox.rb +0 -25
  236. data/lib/zucker/5/shortcuts.rb +0 -4
  237. data/lib/zucker/5/square_brackets_for.rb +0 -21
  238. data/lib/zucker/5/string.rb +0 -54
  239. data/lib/zucker/5/tap.rb +0 -11
  240. data/lib/zucker/5/to_proc.rb +0 -4
  241. data/lib/zucker/5/unary.rb +0 -24
  242. data/lib/zucker/5/union.rb +0 -16
  243. data/lib/zucker/5/version.rb +0 -118
  244. data/lib/zucker/6/alias_for.rb +0 -21
  245. data/lib/zucker/6/aliases.rb +0 -51
  246. data/lib/zucker/6/all.rb +0 -4
  247. data/lib/zucker/6/array.rb +0 -25
  248. data/lib/zucker/6/array2proc.rb +0 -18
  249. data/lib/zucker/6/binding.rb +0 -34
  250. data/lib/zucker/6/blank.rb +0 -28
  251. data/lib/zucker/6/cc.rb +0 -25
  252. data/lib/zucker/6/class2proc.rb +0 -12
  253. data/lib/zucker/6/control.rb +0 -4
  254. data/lib/zucker/6/dd.rb +0 -23
  255. data/lib/zucker/6/debug.rb +0 -4
  256. data/lib/zucker/6/default.rb +0 -4
  257. data/lib/zucker/6/egonil.rb +0 -27
  258. data/lib/zucker/6/engine.rb +0 -68
  259. data/lib/zucker/6/enumerable.rb +0 -14
  260. data/lib/zucker/6/env.rb +0 -4
  261. data/lib/zucker/6/extensions.rb +0 -4
  262. data/lib/zucker/6/hash.rb +0 -27
  263. data/lib/zucker/6/hash2proc.rb +0 -16
  264. data/lib/zucker/6/info.rb +0 -192
  265. data/lib/zucker/6/iterate.rb +0 -27
  266. data/lib/zucker/6/ivars.rb +0 -28
  267. data/lib/zucker/6/kernel.rb +0 -34
  268. data/lib/zucker/6/mcopy.rb +0 -10
  269. data/lib/zucker/6/mm.rb +0 -34
  270. data/lib/zucker/6/not.rb +0 -19
  271. data/lib/zucker/6/object.rb +0 -4
  272. data/lib/zucker/6/oo.rb +0 -17
  273. data/lib/zucker/6/os.rb +0 -54
  274. data/lib/zucker/6/qq.rb +0 -12
  275. data/lib/zucker/6/regexp2proc.rb +0 -12
  276. data/lib/zucker/6/sandbox.rb +0 -25
  277. data/lib/zucker/6/shortcuts.rb +0 -4
  278. data/lib/zucker/6/square_brackets_for.rb +0 -21
  279. data/lib/zucker/6/string.rb +0 -54
  280. data/lib/zucker/6/tap.rb +0 -11
  281. data/lib/zucker/6/to_proc.rb +0 -4
  282. data/lib/zucker/6/unary.rb +0 -24
  283. data/lib/zucker/6/union.rb +0 -16
  284. data/lib/zucker/6/version.rb +0 -118
  285. data/lib/zucker/7/alias_for.rb +0 -21
  286. data/lib/zucker/7/aliases.rb +0 -51
  287. data/lib/zucker/7/all.rb +0 -4
  288. data/lib/zucker/7/array.rb +0 -25
  289. data/lib/zucker/7/array2proc.rb +0 -18
  290. data/lib/zucker/7/binding.rb +0 -34
  291. data/lib/zucker/7/blank.rb +0 -28
  292. data/lib/zucker/7/cc.rb +0 -25
  293. data/lib/zucker/7/class2proc.rb +0 -12
  294. data/lib/zucker/7/control.rb +0 -4
  295. data/lib/zucker/7/dd.rb +0 -23
  296. data/lib/zucker/7/debug.rb +0 -4
  297. data/lib/zucker/7/default.rb +0 -4
  298. data/lib/zucker/7/egonil.rb +0 -27
  299. data/lib/zucker/7/engine.rb +0 -68
  300. data/lib/zucker/7/enumerable.rb +0 -14
  301. data/lib/zucker/7/env.rb +0 -4
  302. data/lib/zucker/7/extensions.rb +0 -4
  303. data/lib/zucker/7/hash.rb +0 -27
  304. data/lib/zucker/7/hash2proc.rb +0 -16
  305. data/lib/zucker/7/info.rb +0 -192
  306. data/lib/zucker/7/iterate.rb +0 -27
  307. data/lib/zucker/7/ivars.rb +0 -28
  308. data/lib/zucker/7/kernel.rb +0 -34
  309. data/lib/zucker/7/mcopy.rb +0 -10
  310. data/lib/zucker/7/mm.rb +0 -34
  311. data/lib/zucker/7/not.rb +0 -19
  312. data/lib/zucker/7/object.rb +0 -4
  313. data/lib/zucker/7/oo.rb +0 -17
  314. data/lib/zucker/7/os.rb +0 -54
  315. data/lib/zucker/7/qq.rb +0 -12
  316. data/lib/zucker/7/regexp2proc.rb +0 -12
  317. data/lib/zucker/7/sandbox.rb +0 -25
  318. data/lib/zucker/7/shortcuts.rb +0 -4
  319. data/lib/zucker/7/square_brackets_for.rb +0 -21
  320. data/lib/zucker/7/string.rb +0 -54
  321. data/lib/zucker/7/tap.rb +0 -11
  322. data/lib/zucker/7/to_proc.rb +0 -4
  323. data/lib/zucker/7/unary.rb +0 -24
  324. data/lib/zucker/7/union.rb +0 -16
  325. data/lib/zucker/7/version.rb +0 -118
  326. data/lib/zucker/8/alias_for.rb +0 -21
  327. data/lib/zucker/8/aliases.rb +0 -51
  328. data/lib/zucker/8/all.rb +0 -4
  329. data/lib/zucker/8/array.rb +0 -25
  330. data/lib/zucker/8/array2proc.rb +0 -18
  331. data/lib/zucker/8/binding.rb +0 -33
  332. data/lib/zucker/8/blank.rb +0 -28
  333. data/lib/zucker/8/cc.rb +0 -25
  334. data/lib/zucker/8/class2proc.rb +0 -12
  335. data/lib/zucker/8/control.rb +0 -4
  336. data/lib/zucker/8/dd.rb +0 -23
  337. data/lib/zucker/8/debug.rb +0 -4
  338. data/lib/zucker/8/default.rb +0 -4
  339. data/lib/zucker/8/egonil.rb +0 -27
  340. data/lib/zucker/8/engine.rb +0 -68
  341. data/lib/zucker/8/enumerable.rb +0 -14
  342. data/lib/zucker/8/env.rb +0 -4
  343. data/lib/zucker/8/extensions.rb +0 -4
  344. data/lib/zucker/8/hash.rb +0 -27
  345. data/lib/zucker/8/hash2proc.rb +0 -16
  346. data/lib/zucker/8/info.rb +0 -192
  347. data/lib/zucker/8/iterate.rb +0 -27
  348. data/lib/zucker/8/ivars.rb +0 -28
  349. data/lib/zucker/8/kernel.rb +0 -34
  350. data/lib/zucker/8/mcopy.rb +0 -10
  351. data/lib/zucker/8/mm.rb +0 -34
  352. data/lib/zucker/8/not.rb +0 -19
  353. data/lib/zucker/8/object.rb +0 -4
  354. data/lib/zucker/8/oo.rb +0 -17
  355. data/lib/zucker/8/os.rb +0 -54
  356. data/lib/zucker/8/qq.rb +0 -12
  357. data/lib/zucker/8/regexp2proc.rb +0 -12
  358. data/lib/zucker/8/sandbox.rb +0 -25
  359. data/lib/zucker/8/shortcuts.rb +0 -4
  360. data/lib/zucker/8/square_brackets_for.rb +0 -21
  361. data/lib/zucker/8/string.rb +0 -54
  362. data/lib/zucker/8/tap.rb +0 -11
  363. data/lib/zucker/8/to_proc.rb +0 -4
  364. data/lib/zucker/8/unary.rb +0 -24
  365. data/lib/zucker/8/union.rb +0 -16
  366. data/lib/zucker/8/version.rb +0 -118
@@ -0,0 +1,23 @@
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
+
@@ -0,0 +1,12 @@
1
+ require 'zucker/array_to_proc'
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
+
@@ -0,0 +1,6 @@
1
+ require 'zucker/binding'
2
+
3
+ describe 'Binding#variables' do
4
+ it 'should output information about the current environment' do; end
5
+ end
6
+
@@ -0,0 +1,20 @@
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
+
@@ -0,0 +1,6 @@
1
+ require 'zucker/cc'
2
+
3
+ describe 'c' do
4
+ it 'should output the method callstack' do; end
5
+ end
6
+
@@ -0,0 +1,9 @@
1
+ require 'zucker/class_to_proc'
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
+
@@ -0,0 +1,37 @@
1
+ require 'zucker/dd'
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
+ capture_stdout do
11
+ a.each{ |e|
12
+ (e.d).should == e
13
+ }
14
+
15
+ a.each{ |e|
16
+ (e.d{|value| "This is a: #{value}"}).should == e
17
+ }
18
+ end
19
+ end
20
+
21
+ it "should puts .inspect if no block is given (and not change the object's value)" do
22
+ capture_stdout do
23
+ a[0].d
24
+ a[1].d
25
+ a[6].d
26
+ end.should == %{1\n"1"\ntrue\n}
27
+ end
28
+
29
+ it "should puts the block if it is given (and not change the object's value)" do
30
+ capture_stdout do
31
+ a[0].d{|value| "This is a: #{value}"}
32
+ a[1].d{|value| "This is a: #{value}"}
33
+ a[6].d{|value| "This is a: #{value}"}
34
+ end.should == %{This is a: 1\nThis is a: 1\nThis is a: true\n}
35
+ end
36
+ end
37
+
@@ -0,0 +1,32 @@
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 restore default behaviour after the block' do
11
+ proc do
12
+ egonil{ nil.some_methods.that[:do].not.exist }
13
+ end.should_not raise_exception
14
+
15
+ proc do
16
+ nil.a_method
17
+ end.should raise_exception NoMethodError
18
+ end
19
+
20
+ it 'raise NoMethodError for non-nil objects' do
21
+ proc do
22
+ egonil{ 5.a_method }
23
+ end.should raise_exception NoMethodError
24
+ end
25
+
26
+ it 'should raise other Exceptions' do
27
+ proc do
28
+ egonil{ 5 / 0 }
29
+ end.should raise_exception ZeroDivisionError
30
+ end
31
+ end
32
+
@@ -0,0 +1,11 @@
1
+ require 'zucker/engine'
2
+
3
+ describe 'RubyEngine' do
4
+ it 'should display the current ruby interpreter (to_s)' do
5
+ RubyEngine
6
+ end
7
+
8
+ it 'should create many method aliases for asking for a specific interpreter' do
9
+ # please see the source or description file
10
+ end
11
+ end
@@ -0,0 +1,8 @@
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
+
@@ -0,0 +1,30 @@
1
+ require 'zucker/file'
2
+ require 'fileutils'
3
+
4
+ describe 'File#gsub' do
5
+ it 'should read filename in arg1, substitute every key in the arg2 with its value and save the file'
6
+ end
7
+
8
+ describe 'File#delete!' do
9
+ let :random_filename do
10
+ 'test_' + (0..20).map{|e| [*'a'..'z'].send RUBY_VERSION > '1.9' ? :sample : :choice }*''
11
+ end
12
+
13
+ it 'should delete the filename given as argument if it exists + return non-nil' do
14
+ FileUtils.touch random_filename
15
+ res = false
16
+ proc do
17
+ res = File.delete! random_filename
18
+ end.should_not raise_exception
19
+ res.should be_true
20
+ end
21
+
22
+ it 'should do nothing if the filename given as argument does not exist + return nil' do
23
+ res = false
24
+ proc do
25
+ res = File.delete! random_filename
26
+ end.should_not raise_exception
27
+ res.should be_false
28
+ end
29
+ end
30
+
@@ -0,0 +1,25 @@
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
+
18
+ describe 'Hash#&' do
19
+ it 'should select a sub hash containt only equal key-value pairs' do
20
+ a = { 1=>4, 2=>5, 3=>6 }
21
+ b= { 1=>4, 2=>7 }
22
+ (a & b).should == { 1=>4 }
23
+ end
24
+ end
25
+
@@ -0,0 +1,12 @@
1
+ require 'zucker/hash_to_proc'
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
+
@@ -0,0 +1,8 @@
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
+
@@ -0,0 +1,59 @@
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
+ end
29
+
30
+ res[:iter_a_b].should == [
31
+ [1, 'a'],
32
+ [2, 'b'],
33
+ [3, 'c'],
34
+ [nil, 'd'],
35
+ ]
36
+
37
+ iterate b, a do |e,f|
38
+ res[:iter_b_a] << [e, f]
39
+ end
40
+
41
+ res[:iter_b_a].should == [
42
+ ['a', 1],
43
+ ['b', 2],
44
+ ['c', 3],
45
+ ['d', nil],
46
+ ]
47
+
48
+ end
49
+
50
+ it 'should return enumerators if no block is applied' do
51
+ res = Hash.new {[]} # TODO: why?
52
+ res[:iter_a_b] = [] # ....
53
+ res[:iter_b_a] = [] # ....
54
+
55
+ enumerator = iterate a,b
56
+ enumerator.should be_kind_of(RUBY_VERSION < '1.9' ? Enumerable::Enumerator : Enumerator)
57
+ enumerator.to_a.should == [[1,'a'], [2,'b'], [3,'c'], [nil, 'd']]
58
+ end
59
+ end
@@ -0,0 +1,20 @@
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
+
@@ -0,0 +1,37 @@
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 'executed_directly?' do
24
+ it 'should return true if the file is invoked directly' do
25
+ executed_directly?.should == ( __FILE__ == $PROGRAM_NAME )
26
+ end
27
+ end
28
+
29
+ describe 'irb?' do
30
+ it 'should return true if called in IRB' do; end
31
+ end
32
+
33
+ describe 'ignore_sigint!' do
34
+ it 'should catch ctrl+c signals' do; end
35
+ end
36
+
37
+ # J-_-L
@@ -0,0 +1,13 @@
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
+
@@ -0,0 +1,6 @@
1
+ require 'zucker/mm'
2
+
3
+ describe 'Object#mm' do
4
+ it 'should display an ordered method list' do; end
5
+ end
6
+
@@ -0,0 +1,12 @@
1
+ if defined? BasicObject # 1.9 only
2
+
3
+ require 'zucker/not'
4
+
5
+ describe 'Object#not' do
6
+ it "should return an object on which all methods are redirected to it's receiver object, but return an inverted boolean" do
7
+ [1,2,3].not.empty?.should == true
8
+ nil.not.nil?.should == false
9
+ end
10
+ end
11
+
12
+ end
@@ -0,0 +1,6 @@
1
+ require 'zucker/oo'
2
+
3
+ describe 'o' do
4
+ it 'should output the current line, file, method and label (if given)' do; end
5
+ end
6
+
@@ -0,0 +1,37 @@
1
+ require 'zucker/os'
2
+
3
+ describe 'OS' do
4
+ it 'should display the used operation system (to_s)' do; end
5
+ end
6
+
7
+ describe 'linux?' do
8
+ it 'should return true if OS is a linux' do; end
9
+ end
10
+
11
+ describe 'mac?' do
12
+ it 'should return true if OS is a mac or darwin' do; end
13
+ end
14
+
15
+ describe 'bsd?' do
16
+ it 'should return true if OS is a bsd' do; end
17
+ end
18
+
19
+ describe 'windows?' do
20
+ it 'should return true if OS is a windows' do; end
21
+ end
22
+
23
+ describe 'solaris?' do
24
+ it 'should return true if OS is a solaris or sunos' do; end
25
+ end
26
+
27
+ describe 'posix?' do
28
+ it 'should return true if OS is posix compatible' do; end
29
+ end
30
+
31
+ describe 'OS.is?' do
32
+ it "should test if RbConfig::CONFIG['host_os'] matches the regex (boolean value)" do
33
+ OS.is?(/linux/).should ==
34
+ !!( RbConfig::CONFIG['host_os'] =~ /linux/ )
35
+ end
36
+ end
37
+