facets 2.1.3 → 2.2.0

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