zucker 8 → 9

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 (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
+