facets 2.1.3 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (303) hide show
  1. data/AUTHORS +14 -12
  2. data/CHANGES +45 -2
  3. data/NOTES +9 -7
  4. data/lib/core/facets/1stclassmethod.rb +15 -11
  5. data/lib/core/facets/array.rb +0 -1
  6. data/lib/core/facets/array/conjoin.rb +40 -8
  7. data/lib/core/facets/array/delete.rb +8 -2
  8. data/lib/core/facets/array/indexable.rb +30 -3
  9. data/lib/core/facets/array/merge.rb +11 -0
  10. data/lib/core/facets/array/only.rb +3 -3
  11. data/lib/core/facets/array/pad.rb +4 -46
  12. data/lib/core/facets/array/rotate.rb +4 -4
  13. data/lib/core/facets/array/select.rb +2 -0
  14. data/lib/core/facets/array/splice.rb +16 -2
  15. data/lib/core/facets/array/stackable.rb +6 -40
  16. data/lib/core/facets/binding.rb +3 -0
  17. data/lib/core/facets/binding/cflow.rb +10 -64
  18. data/lib/core/facets/binding/defined.rb +10 -0
  19. data/lib/core/facets/binding/eval.rb +10 -76
  20. data/lib/core/facets/binding/here.rb +9 -0
  21. data/lib/core/facets/binding/self.rb +10 -0
  22. data/lib/core/facets/binding/vars.rb +0 -45
  23. data/lib/core/facets/boolean.rb +31 -103
  24. data/lib/core/facets/class/descendents.rb +17 -44
  25. data/lib/core/facets/comparable/bound.rb +8 -70
  26. data/lib/core/facets/comparable/cmp.rb +12 -92
  27. data/lib/core/facets/conversion.rb +122 -321
  28. data/lib/core/facets/dir/multiglob.rb +0 -13
  29. data/lib/core/facets/dir/traverse.rb +61 -111
  30. data/lib/core/facets/enumerable.rb +4 -2
  31. data/lib/core/facets/enumerable/cartesian.rb +36 -85
  32. data/lib/core/facets/enumerable/collect.rb +64 -152
  33. data/lib/core/facets/enumerable/combination.rb +40 -42
  34. data/lib/core/facets/enumerable/count.rb +99 -174
  35. data/lib/core/facets/enumerable/each.rb +86 -0
  36. data/lib/core/facets/enumerable/mash.rb +58 -0
  37. data/lib/core/facets/enumerable/permutation.rb +39 -44
  38. data/lib/core/facets/enumerable/probability.rb +16 -90
  39. data/lib/core/facets/enumerable/split.rb +113 -0
  40. data/lib/core/facets/exception/detail.rb +1 -2
  41. data/lib/core/facets/facets.rb +3 -2
  42. data/lib/core/facets/file/read.rb +4 -59
  43. data/lib/core/facets/file/topath.rb +8 -96
  44. data/lib/core/facets/file/write.rb +21 -49
  45. data/lib/core/facets/filetest/root.rb +4 -3
  46. data/lib/core/facets/functor.rb +5 -43
  47. data/lib/core/facets/hash/at.rb +7 -37
  48. data/lib/core/facets/hash/delete.rb +9 -58
  49. data/lib/core/facets/hash/has_keys.rb +4 -43
  50. data/lib/core/facets/hash/insert.rb +5 -38
  51. data/lib/core/facets/hash/inverse.rb +2 -41
  52. data/lib/core/facets/hash/iterate.rb +4 -45
  53. data/lib/core/facets/hash/keyize.rb +24 -92
  54. data/lib/core/facets/hash/merge.rb +4 -38
  55. data/lib/core/facets/hash/new.rb +5 -38
  56. data/lib/core/facets/hash/op.rb +20 -66
  57. data/lib/core/facets/hash/rekey.rb +9 -87
  58. data/lib/core/facets/hash/select.rb +1 -1
  59. data/lib/core/facets/hash/slice.rb +42 -0
  60. data/lib/core/facets/hash/traverse.rb +6 -46
  61. data/lib/core/facets/hash/update.rb +27 -67
  62. data/lib/core/facets/hash/weave.rb +22 -42
  63. data/lib/core/facets/indexable.rb +42 -14
  64. data/lib/core/facets/integer/bitmask.rb +69 -106
  65. data/lib/core/facets/integer/factorial.rb +1 -44
  66. data/lib/core/facets/integer/multiples.rb +27 -22
  67. data/lib/core/facets/integer/of.rb +1 -33
  68. data/lib/core/facets/kernel.rb +4 -2
  69. data/lib/core/facets/kernel/ask.rb +15 -3
  70. data/lib/core/facets/kernel/callstack.rb +38 -69
  71. data/lib/core/facets/kernel/constant.rb +2 -38
  72. data/lib/core/facets/kernel/deepcopy.rb +3 -55
  73. data/lib/core/facets/kernel/dir.rb +2 -0
  74. data/lib/core/facets/kernel/ergo.rb +2 -2
  75. data/lib/core/facets/kernel/instance.rb +51 -120
  76. data/lib/core/facets/kernel/metaid.rb +35 -73
  77. data/lib/core/facets/kernel/object.rb +14 -39
  78. data/lib/core/facets/kernel/op_esc.rb +24 -2
  79. data/lib/core/facets/kernel/populate.rb +6 -69
  80. data/lib/core/facets/kernel/report.rb +28 -33
  81. data/lib/core/facets/kernel/require.rb +7 -21
  82. data/lib/core/facets/kernel/respond.rb +11 -1
  83. data/lib/core/facets/kernel/returning.rb +50 -0
  84. data/lib/core/facets/kernel/silence.rb +12 -24
  85. data/lib/core/facets/kernel/super.rb +12 -76
  86. data/lib/core/facets/kernel/tap.rb +25 -107
  87. data/lib/core/facets/kernel/val.rb +7 -46
  88. data/lib/core/facets/kernel/withattr.rb +6 -64
  89. data/lib/core/facets/matchdata/matchset.rb +8 -50
  90. data/lib/core/facets/module.rb +3 -1
  91. data/lib/core/facets/module/abstract.rb +9 -47
  92. data/lib/core/facets/module/alias.rb +11 -68
  93. data/lib/core/facets/module/attr.rb +36 -15
  94. data/lib/core/facets/module/cattr.rb +8 -76
  95. data/lib/core/facets/module/clone.rb +15 -66
  96. data/lib/core/facets/module/include.rb +54 -114
  97. data/lib/core/facets/module/methods.rb +15 -13
  98. data/lib/core/facets/module/modify.rb +20 -206
  99. data/lib/core/facets/module/name.rb +19 -83
  100. data/lib/core/facets/module/require.rb +48 -53
  101. data/lib/core/facets/module/traits.rb +74 -33
  102. data/lib/core/facets/nilclass/status.rb +25 -2
  103. data/lib/core/facets/numeric/round.rb +24 -89
  104. data/lib/core/facets/proc/bind.rb +16 -59
  105. data/lib/core/facets/proc/compose.rb +6 -40
  106. data/lib/core/facets/proc/fn.rb +2 -0
  107. data/lib/core/facets/range/combine.rb +15 -51
  108. data/lib/core/facets/range/overlap.rb +8 -64
  109. data/lib/core/facets/regexp/arity.rb +6 -41
  110. data/lib/core/facets/stackable.rb +43 -4
  111. data/lib/core/facets/string.rb +2 -0
  112. data/lib/core/facets/string/align.rb +45 -55
  113. data/lib/core/facets/string/blank.rb +2 -46
  114. data/lib/core/facets/string/bracket.rb +14 -87
  115. data/lib/core/facets/string/case.rb +45 -32
  116. data/lib/core/facets/string/crypt.rb +3 -40
  117. data/lib/core/facets/string/filter.rb +7 -49
  118. data/lib/core/facets/string/format.rb +24 -126
  119. data/lib/core/facets/string/indexable.rb +50 -133
  120. data/lib/core/facets/string/interpolate.rb +24 -59
  121. data/lib/core/facets/string/natcmp.rb +5 -39
  122. data/lib/core/facets/string/nchar.rb +37 -45
  123. data/lib/core/facets/string/op.rb +13 -0
  124. data/lib/core/facets/string/partitions.rb +38 -99
  125. data/lib/core/facets/string/range.rb +8 -49
  126. data/lib/core/facets/string/regesc.rb +9 -42
  127. data/lib/core/facets/string/scan.rb +6 -52
  128. data/lib/core/facets/string/splice.rb +8 -13
  129. data/lib/core/facets/string/tabs.rb +16 -153
  130. data/lib/core/facets/symbol.rb +3 -1
  131. data/lib/core/facets/symbol/chomp.rb +11 -29
  132. data/lib/core/facets/symbol/generate.rb +4 -43
  133. data/lib/core/facets/symbol/not.rb +13 -25
  134. data/lib/core/facets/symbol/shadow.rb +2 -40
  135. data/lib/core/facets/symbol/succ.rb +14 -13
  136. data/lib/core/facets/symbol/to_proc.rb +33 -28
  137. data/lib/core/facets/time.rb +1 -0
  138. data/lib/core/facets/time/change.rb +5 -38
  139. data/lib/core/facets/time/elapse.rb +2 -41
  140. data/lib/core/facets/time/stamp.rb +47 -0
  141. data/lib/core/facets/unboundmethod.rb +3 -0
  142. data/lib/core/facets/unboundmethod/arguments.rb +27 -4
  143. data/lib/core/facets/unboundmethod/name.rb +21 -7
  144. data/lib/methods/facets/enumerable/cluster_by.rb +1 -1
  145. data/lib/methods/facets/enumerable/collate.rb +1 -0
  146. data/lib/methods/facets/enumerable/divide.rb +1 -1
  147. data/lib/methods/facets/enumerable/each_by.rb +1 -1
  148. data/lib/methods/facets/enumerable/each_pair.rb +1 -1
  149. data/lib/methods/facets/enumerable/eachn.rb +1 -1
  150. data/lib/methods/facets/enumerable/graph.rb +1 -1
  151. data/lib/methods/facets/enumerable/group_by.rb +1 -1
  152. data/lib/methods/facets/enumerable/inject.rb +1 -0
  153. data/lib/methods/facets/enumerable/map_send.rb +1 -0
  154. data/lib/methods/facets/enumerable/modulate.rb +1 -0
  155. data/lib/methods/facets/enumerable/partition_by.rb +1 -1
  156. data/lib/methods/facets/hash/collate.rb +1 -1
  157. data/lib/methods/facets/hash/except.rb +1 -0
  158. data/lib/methods/facets/hash/graph.rb +1 -1
  159. data/lib/methods/facets/hash/mash.rb +1 -0
  160. data/lib/methods/facets/kernel/Bit.rb +1 -0
  161. data/lib/methods/facets/kernel/complete.rb +1 -1
  162. data/lib/methods/facets/kernel/here.rb +1 -1
  163. data/lib/methods/facets/kernel/non_nil.rb +1 -0
  164. data/lib/methods/facets/kernel/respond_with_value.rb +1 -0
  165. data/lib/methods/facets/kernel/with.rb +1 -1
  166. data/lib/methods/facets/module/class_def.rb +1 -0
  167. data/lib/methods/facets/string/camelcase.rb +1 -0
  168. data/lib/methods/facets/string/op_minus.rb +1 -0
  169. data/lib/methods/facets/string/snakecase.rb +1 -0
  170. data/lib/more/facets/attributes.rb +5 -5
  171. data/lib/more/facets/basicobject.rb +0 -62
  172. data/lib/{core/facets/continuation/create.rb → more/facets/continuation.rb} +4 -21
  173. data/lib/more/facets/duration.rb +534 -0
  174. data/lib/more/facets/lazy.rb +3 -3
  175. data/lib/more/facets/namespace.rb +23 -71
  176. data/lib/more/facets/rbsystem.rb +42 -8
  177. data/lib/more/facets/stylize.rb +6 -3
  178. data/lib/more/facets/thread.rb +55 -0
  179. data/meta/MANIFEST +49 -18
  180. data/meta/ROLLRC +1 -1
  181. data/meta/project.yaml +2 -2
  182. data/task/install +1 -1
  183. data/task/test/general +8 -2
  184. data/test/unit/array/test_pad.rb +30 -45
  185. data/test/unit/array/test_stackable.rb +14 -28
  186. data/test/unit/binding/test_cflow.rb +34 -49
  187. data/test/unit/binding/test_defined.rb +17 -0
  188. data/test/unit/binding/test_eval.rb +11 -39
  189. data/test/unit/binding/test_here.rb +17 -0
  190. data/test/unit/binding/test_self.rb +17 -0
  191. data/test/unit/binding/test_vars.rb +22 -37
  192. data/test/unit/class/test_descendents.rb +15 -30
  193. data/test/unit/class/test_initializer.rb +1 -8
  194. data/test/unit/comparable/test_bound.rb +38 -53
  195. data/test/unit/comparable/test_cmp.rb +45 -60
  196. data/test/unit/dir/test_traverse.rb +56 -0
  197. data/test/unit/enumerable/test_cartesian.rb +34 -47
  198. data/test/unit/enumerable/test_collect.rb +16 -125
  199. data/test/unit/enumerable/test_combination.rb +1 -8
  200. data/test/unit/enumerable/test_count.rb +51 -66
  201. data/test/unit/enumerable/test_each.rb +77 -0
  202. data/test/unit/enumerable/test_mash.rb +51 -0
  203. data/test/unit/enumerable/test_permutation.rb +1 -7
  204. data/test/unit/enumerable/test_probability.rb +42 -55
  205. data/test/unit/enumerable/test_split.rb +52 -0
  206. data/test/unit/exception/test_detail.rb +19 -0
  207. data/test/unit/file/test_read.rb +34 -0
  208. data/test/unit/file/test_topath.rb +17 -25
  209. data/test/unit/file/test_write.rb +6 -12
  210. data/test/unit/filetest/test_root.rb +14 -0
  211. data/test/unit/hash/test_at.rb +9 -21
  212. data/test/unit/hash/test_delete.rb +22 -37
  213. data/test/unit/hash/test_has_keys.rb +13 -28
  214. data/test/unit/hash/test_insert.rb +9 -23
  215. data/test/unit/hash/test_inverse.rb +11 -26
  216. data/test/unit/hash/test_iterate.rb +16 -31
  217. data/test/unit/hash/test_keyize.rb +40 -55
  218. data/test/unit/hash/test_merge.rb +10 -25
  219. data/test/unit/hash/test_new.rb +9 -24
  220. data/test/unit/hash/test_op.rb +1 -7
  221. data/test/unit/hash/test_rekey.rb +47 -62
  222. data/test/unit/hash/test_traverse.rb +17 -32
  223. data/test/unit/hash/test_update.rb +30 -45
  224. data/test/unit/hash/test_weave.rb +10 -23
  225. data/test/unit/integer/test_bitmask.rb +48 -44
  226. data/test/unit/integer/test_factorial.rb +11 -26
  227. data/test/unit/integer/test_multiples.rb +1 -5
  228. data/test/unit/integer/test_of.rb +14 -29
  229. data/test/unit/kernel/test_callstack.rb +13 -28
  230. data/test/unit/kernel/test_constant.rb +14 -28
  231. data/test/unit/kernel/test_deepcopy.rb +20 -35
  232. data/test/unit/kernel/test_instance.rb +46 -61
  233. data/test/unit/kernel/test_metaid.rb +42 -57
  234. data/test/unit/kernel/test_object.rb +14 -29
  235. data/test/unit/kernel/test_populate.rb +38 -53
  236. data/test/unit/kernel/test_report.rb +1 -7
  237. data/test/unit/kernel/test_returning.rb +16 -0
  238. data/test/unit/kernel/test_silence.rb +8 -23
  239. data/test/unit/kernel/test_super.rb +41 -56
  240. data/test/unit/kernel/test_tap.rb +15 -39
  241. data/test/unit/kernel/test_val.rb +7 -20
  242. data/test/unit/kernel/test_withattr.rb +29 -44
  243. data/test/unit/matchdata/test_matchset.rb +20 -35
  244. data/test/unit/module/test_abstract.rb +15 -30
  245. data/test/unit/module/test_alias.rb +32 -45
  246. data/test/unit/module/test_cattr.rb +39 -54
  247. data/test/unit/module/test_clone.rb +31 -43
  248. data/test/unit/module/test_include.rb +1 -35
  249. data/test/unit/module/test_modify.rb +102 -114
  250. data/test/unit/module/test_name.rb +1 -7
  251. data/test/unit/numeric/test_round.rb +46 -61
  252. data/test/unit/proc/test_bind.rb +29 -44
  253. data/test/unit/proc/test_compose.rb +20 -35
  254. data/test/unit/range/test_combine.rb +14 -29
  255. data/test/unit/range/test_overlap.rb +34 -51
  256. data/test/unit/regexp/test_arity.rb +14 -29
  257. data/test/unit/string/test_align.rb +13 -27
  258. data/test/unit/string/test_blank.rb +12 -27
  259. data/test/unit/string/test_bracket.rb +52 -67
  260. data/test/unit/string/test_case.rb +19 -38
  261. data/test/unit/string/test_crypt.rb +10 -25
  262. data/test/unit/string/test_filter.rb +1 -7
  263. data/test/unit/string/test_format.rb +2 -7
  264. data/test/unit/string/test_indexable.rb +54 -69
  265. data/test/unit/string/test_interpolate.rb +8 -21
  266. data/test/unit/string/test_natcmp.rb +11 -26
  267. data/test/unit/string/test_nchar.rb +1 -14
  268. data/test/unit/string/test_op.rb +14 -0
  269. data/test/unit/string/test_partitions.rb +39 -54
  270. data/test/unit/string/test_range.rb +17 -32
  271. data/test/unit/string/test_regesc.rb +1 -7
  272. data/test/unit/string/test_scan.rb +23 -38
  273. data/test/unit/string/test_stackable.rb +79 -98
  274. data/test/unit/string/test_tabs.rb +1 -7
  275. data/test/unit/symbol/test_chomp.rb +10 -21
  276. data/test/unit/symbol/test_generate.rb +7 -22
  277. data/test/unit/symbol/test_not.rb +10 -25
  278. data/test/unit/symbol/test_shadow.rb +8 -23
  279. data/test/unit/symbol/test_succ.rb +1 -7
  280. data/test/unit/symbol/test_to_proc.rb +1 -7
  281. data/test/unit/test_attributes.rb +1 -1
  282. data/test/unit/test_continuation.rb +13 -0
  283. data/test/unit/test_conversion.rb +1 -14
  284. data/test/unit/test_namespace.rb +30 -3
  285. data/test/unit/test_thread.rb +23 -0
  286. data/test/unit/time/test_change.rb +11 -26
  287. data/test/unit/time/test_elapse.rb +10 -25
  288. data/test/unit/time/test_stamp.rb +28 -0
  289. metadata +65 -25
  290. data/lib/core/facets/array/unzip.rb +0 -14
  291. data/lib/core/facets/continuation.rb +0 -1
  292. data/lib/core/facets/enumerable/collate.rb +0 -104
  293. data/lib/core/facets/kernel/require_esc.rb +0 -44
  294. data/lib/more/facets/mapsend.rb +0 -98
  295. data/lib/more/facets/pp_s.rb +0 -30
  296. data/log/history.rd +0 -38
  297. data/log/todo.rd +0 -4
  298. data/task/special/quickopts +0 -15
  299. data/test/unit/continuation/test_create.rb +0 -28
  300. data/test/unit/enumerable/test_collate.rb +0 -51
  301. data/test/unit/kernel/test_require_esc.rb +0 -29
  302. data/test/unit/test_mapsend.rb +0 -18
  303. data/test/unit/test_pp_s.rb +0 -17
@@ -1,14 +0,0 @@
1
- class Array
2
-
3
- # Unzip array.
4
-
5
- def unzip(level)
6
- raise ArgumentError, 'bad modulo' if size % level != 0
7
- r = Array.new(level, [])
8
- (0...size).each do |i|
9
- r[i % level] += [self[i]]
10
- end
11
- r
12
- end
13
-
14
- end
@@ -1 +0,0 @@
1
- require 'facets/continuation/create.rb'
@@ -1,104 +0,0 @@
1
- require 'enumerator'
2
-
3
- module Enumerable
4
-
5
- # Like <tt>#map</tt>/<tt>#collect</tt>, but generates a Hash. The block
6
- # is expected to return two values: the key and the value for the new hash.
7
- #
8
- # numbers = (1..3)
9
- # squares = numbers.collate { |n| [n, n*n] } # { 1=>1, 2=>4, 3=>9 }
10
- # sq_roots = numbers.collate { |n| [n*n, n] } # { 1=>1, 4=>2, 9=>3 }
11
- #
12
- # CREDIT: Trans
13
- # CREDIT: Andrew Dudzik (adudzik)
14
-
15
- def collate(&yld)
16
- if yld
17
- inject({}) do |h, *kv| # Used to be inject({}) do |h,kv|
18
- r = *yld[*kv] # The *-op works differnt from to_a on single element hash!!!
19
- nk, nv = *r # Used to be nk, nv = *yld[*kv].to_a.flatten
20
- h[nk] = nv
21
- h
22
- end
23
- else
24
- Enumerator.new(self,:collate) # Used to be Hash[*self.to_a] or Hash[*self.to_a.flatten]
25
- end
26
- end
27
-
28
- alias :graph :collate
29
-
30
- # Returns a new hash built by iterating through each key,value
31
- # pair and updating the new hash.
32
- #def collate #:yield:
33
- # newhash = {}
34
- # each_pair{ |k,v| newhash.update(yield(k,v)) }
35
- # newhash
36
- #end
37
-
38
- end
39
-
40
-
41
- class Hash
42
-
43
- # In place version of #collate.
44
- #
45
- # NOTE Hash#collate! is only useful for Hash. It is not generally
46
- # applicable to Enumerable.
47
-
48
- def collate!(&yld)
49
- replace(collate(&yld))
50
- end
51
-
52
- # Alias for #collate! (THIS WILL BE DEPRECATED)
53
-
54
- alias :graph! :collate!
55
-
56
- end
57
-
58
-
59
- # _____ _
60
- # |_ _|__ ___| |_
61
- # | |/ _ \/ __| __|
62
- # | | __/\__ \ |_
63
- # |_|\___||___/\__|
64
- #
65
- =begin test
66
-
67
- require 'test/unit'
68
-
69
- class TestEnumerableCollate < Test::Unit::TestCase
70
-
71
- def test_collate_01
72
- a = { :a => 1, :b => 2, :c => 3 }
73
- e = { :a => 2, :b => 3, :c => 4 }
74
- assert_equal( e, a.collate{ |k,v| { k => v+1 } } )
75
- end
76
-
77
- def test_collate_02
78
- numbers = (1..3)
79
- squares = numbers.collate{ |n| [n, n*n] }
80
- assert_equal( {1=>1, 2=>4, 3=>9}, squares )
81
- end
82
-
83
- def test_collate_03
84
- numbers = (1..3)
85
- sq_roots = numbers.collate{ |n| [n*n, n] }
86
- assert_equal( {1=>1, 4=>2, 9=>3}, sq_roots )
87
- end
88
-
89
- def test_collate_01!
90
- a = { :a => 1, :b => 2, :c => 3 }
91
- e = { :a => 2, :b => 3, :c => 4 }
92
- a.collate!{ |k,v| { k => v+1 } }
93
- assert_equal( e, a )
94
- end
95
-
96
- def test_collate_02!
97
- h = {:a=>1,:b=>2,:c=>3}
98
- h.collate!{ |k,v| [v, v*v] }
99
- assert_equal( {1=>1, 2=>4, 3=>9}, h )
100
- end
101
-
102
- end
103
-
104
- =end
@@ -1,44 +0,0 @@
1
- require 'facets/kernel/op_esc'
2
-
3
- module Kernel
4
-
5
- private
6
-
7
- # Require a file with puncuation marks escaped.
8
- #
9
- # require_esc '[].rb'
10
- #
11
- # in actuality requires the file 'op_fetch.rb'.
12
-
13
- def require_esc( fpath )
14
- fdir, fname = File.split(fpath)
15
- ename = op_esc( fname )
16
- case ename[-1,1] ; when '!','=','?' then ename = ename[0...-1] ; end
17
- epath = File.join( fdir, ename )
18
- require( epath )
19
- end
20
-
21
- end
22
-
23
-
24
-
25
- # _____ _
26
- # |_ _|__ ___| |_
27
- # | |/ _ \/ __| __|
28
- # | | __/\__ \ |_
29
- # |_|\___||___/\__|
30
- #
31
- =begin test
32
-
33
- require 'test/unit'
34
-
35
- class TCKernel < Test::Unit::TestCase
36
-
37
- def test_require_esc
38
- assert_nothing_raised { require_esc 'facets/string/blank' }
39
- assert( "".respond_to?( :blank? ) )
40
- end
41
-
42
- end
43
-
44
- =end
@@ -1,98 +0,0 @@
1
- # TITLE:
2
- # Map Send and Threaded Map Send
3
- #
4
- # SUMMARY:
5
- # Extensions for Enumerable to send a message to each member
6
- # and collect the results.
7
- #
8
- # AUTHORS:
9
- # - Sean O'Halpin
10
- #
11
- # LOG:
12
- # - Depreacated instance_map and instance_select.
13
- #
14
- # TODOs:
15
- # - Better names for these methods.
16
- #
17
- # COPYRIGHT:
18
- # Copyright (c) 2006 Sean O'Halpin
19
- #
20
- # LICENSE:
21
- # Ruby License
22
- #
23
- # This module is free software. You may use, modify, and/or redistribute this
24
- # software under the same terms as Ruby.
25
- #
26
- # This program is distributed in the hope that it will be useful, but WITHOUT
27
- # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
28
- # FOR A PARTICULAR PURPOSE.
29
-
30
- #
31
- module Enumerable
32
-
33
- #
34
- # Send a message to each element and collect the result.
35
- #
36
- def map_send(meth, *args) #:yield:
37
- if block_given?
38
- map{|e| yield(e.send(meth, *args))}
39
- else
40
- map{|e| e.send(meth, *args)}
41
- end
42
- end
43
-
44
- #
45
- #
46
- #
47
- def threaded_map #:yield:
48
- require 'thread'
49
-
50
- map{|e| Thread.new(e){|t| yield t}}.map_send(:value)
51
- end
52
-
53
- #
54
- #
55
- #
56
- def threaded_map_send(meth, *args) #:yield:
57
- require 'thread'
58
-
59
- if block_given?
60
- map{|e| Thread.new(e){|t| yield t.send(meth, *args)}}.map_send(:value)
61
- else
62
- map{|e| Thread.new(e){|t| t.send(meth, *args)}}.map_send(:value)
63
- end
64
- end
65
-
66
-
67
- # # Cascade actions on each enumerated element.
68
- # #
69
- # # [9, 19, 29].cascade :succ, :to_s, :reverse
70
- # # => ["01", "02", "03"]
71
- # #
72
- # # See ruby-talk:199877.
73
- # def cascade(*methods)
74
- # methods.inject(self){ |ary, method| ary.map{ |x| x.send(method)}}
75
- # end
76
-
77
- end
78
-
79
-
80
- =begin test
81
-
82
- require 'test/unit'
83
-
84
- class TestThreadedMapSend < Test::Unit::TestCase
85
-
86
- def test_map_send
87
- r = [1,2,3].map_send(:+, 1)
88
- assert_equal(r, [2,3,4])
89
- end
90
-
91
- def test_map_send_with_block
92
- r = [1,2,3].map_send(:+,1){ |x| x + 1 }
93
- assert_equal(r, [3,4,5])
94
- end
95
-
96
- end
97
-
98
- =end
@@ -1,30 +0,0 @@
1
- # TODO How useful is this really? Or, can it go in with something else?
2
-
3
- require 'pp'
4
- require 'stringio'
5
-
6
- module Kernel
7
-
8
- # Returns a pretty-printed string of the object. Requires libraries +pp+ and
9
- # +stringio+ from the Ruby standard library.
10
- #
11
- # The following code pretty-prints an object (much like +p+ plain-prints an
12
- # object):
13
- #
14
- # pp object
15
- #
16
- # The following code captures the pretty-printing in +str+ instead of
17
- # sending it to +STDOUT+.
18
- #
19
- # str = object.pp_s
20
- #
21
- # CREDIT Noah Gibbs
22
- # CREDIT Gavin Sinclair
23
-
24
- def pp_s
25
- pps = StringIO.new
26
- PP.pp(self, pps)
27
- pps.string
28
- end
29
-
30
- end
data/log/history.rd DELETED
@@ -1,38 +0,0 @@
1
- = Facets Revision History
2
-
3
- == 2.1.3 / 2007-11-28
4
-
5
- * Fixed minor oddity in Enumerable/collate.
6
- * Fixed major issue with 2.1.2 where it would not core facets correctly.
7
-
8
- == 2.1.2 / 2007-11-22
9
-
10
- * Dir::multiglob no longer handels -/+ modifiers. Use FileList instead.
11
- * Fixed task/install script.
12
- * Improved task/changes.
13
-
14
- == 2.1.1 / 2007-11-16
15
-
16
- * Fixed bug in command.rb that clobbered options.
17
- * Added kernel/ergo.rb.
18
-
19
- == 2.1.0 / 2007-11-10
20
-
21
- * Major Changes
22
- * command.rb has been completely rewritten. The API has changed completely!
23
- * There is no longer a Commmand::Optoins class. Use Console::Arguments instead.
24
- * Added BiCrypt class to crypt.rb for simple two-way encyrption.
25
- * Minor Changes
26
- * module/attr.rb now has attr_reader!, attr_writer! and attr_accessor!
27
- * All attr_xxx methods have coresponding alias_xxx methods.
28
- * Fixed bug in Enumerable#cluster_by which returned nil instead of [].
29
-
30
- == 2.0.5 / 2007-11-07
31
-
32
- * Major Changes
33
- * Added final methods Gavin Sinclair's Extensions project (contributed by Noah Gibbs).
34
- * Minor Changes
35
- * Fixes bug with Dictionary#initialize
36
- * Fixes bug with Hash#-
37
- * Also improves changelog production.
38
-
data/log/todo.rd DELETED
@@ -1,4 +0,0 @@
1
- == Facets To Do List
2
-
3
- * Write new command.rb tests.
4
-
@@ -1,15 +0,0 @@
1
- #!/usr/bin/env ratch
2
-
3
- # generate quick options .html part
4
-
5
- main :quickopts do
6
- str = ''
7
- cd('doc/rdoc') do
8
- dirs = Dir.glob('*') - ['core']
9
- dirs.each do |f|
10
- str << %{ <option value="#{f}"> #{f.capitalize} </option> \n}
11
- end
12
- end
13
- File.open('doc/siteparts/quickopts.html', 'w'){ |f| f << str }
14
- end
15
-
@@ -1,28 +0,0 @@
1
- # _____ _
2
- # |_ _|__ ___| |_
3
- # | |/ _ \/ __| __|
4
- # | | __/\__ \ |
5
- # |_|\___||___/\__|
6
- #
7
- # for lib/facets/continuation/create.rb
8
- #
9
- # Extracted Mon Sep 03 16:23:07 -0700 2007
10
- # w/ Test Extraction Ratchet
11
- #
12
-
13
- require 'facets/continuation/create.rb'
14
-
15
-
16
-
17
- require 'test/unit'
18
-
19
- class TCContinuation < Test::Unit::TestCase
20
-
21
- def test_Continuation_create
22
- assert_nothing_raised { c, r = Continuation.create }
23
- end
24
-
25
- end
26
-
27
-
28
-
@@ -1,51 +0,0 @@
1
- # Test facets/enumerable/collate.rb
2
-
3
- require 'facets/enumerable/collate.rb'
4
- require 'test/unit'
5
-
6
- class TestEnumerableCollate < Test::Unit::TestCase
7
-
8
- def test_collate_hash_return
9
- a = { :a => 1, :b => 2, :c => 3 }
10
- e = { :a => 2, :b => 3, :c => 4 }
11
- assert_equal( e, a.collate{ |k,v| {k => v+1} } )
12
- end
13
-
14
- def test_collate_hash_of_array
15
- a = { :a => [1,2], :b => [2,3], :c => [3,4] }
16
- e = { :a => 2, :b => 6, :c => 12 }
17
- assert_equal( e, a.collate{ |k,v| [k, v[0]*v[1] ] } )
18
- end
19
-
20
- def test_collate_array_of_array
21
- a = [ [1,2], [2,3], [3,4] ]
22
- e = { [1,2] => 2, [2,3] => 6, [3,4] => 12 }
23
- assert_equal( e, a.collate{ |a| [a, a[0]*a[1] ] } )
24
- end
25
-
26
- def test_collate_squares
27
- numbers = (1..3)
28
- squares = numbers.collate{ |n| [n, n*n] }
29
- assert_equal( {1=>1, 2=>4, 3=>9}, squares )
30
- end
31
-
32
- def test_collate_roots
33
- numbers = (1..3)
34
- sq_roots = numbers.collate{ |n| [n*n, n] }
35
- assert_equal( {1=>1, 4=>2, 9=>3}, sq_roots )
36
- end
37
-
38
- def test_collate_inplace!
39
- a = { :a => 1, :b => 2, :c => 3 }
40
- e = { :a => 2, :b => 3, :c => 4 }
41
- a.collate!{ |k,v| { k => v+1 } }
42
- assert_equal( e, a )
43
- end
44
-
45
- def test_collate_inplace_again!
46
- h = {:a=>1,:b=>2,:c=>3}
47
- h.collate!{ |k,v| [v, v*v] }
48
- assert_equal( {1=>1, 2=>4, 3=>9}, h )
49
- end
50
-
51
- end
@@ -1,29 +0,0 @@
1
- # _____ _
2
- # |_ _|__ ___| |_
3
- # | |/ _ \/ __| __|
4
- # | | __/\__ \ |
5
- # |_|\___||___/\__|
6
- #
7
- # for lib/facets/kernel/require_esc.rb
8
- #
9
- # Extracted Mon Sep 03 16:23:07 -0700 2007
10
- # w/ Test Extraction Ratchet
11
- #
12
-
13
- require 'facets/kernel/require_esc.rb'
14
-
15
-
16
-
17
- require 'test/unit'
18
-
19
- class TCKernel < Test::Unit::TestCase
20
-
21
- def test_require_esc
22
- assert_nothing_raised { require_esc 'facets/string/blank' }
23
- assert( "".respond_to?( :blank? ) )
24
- end
25
-
26
- end
27
-
28
-
29
-