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
@@ -71,7 +71,7 @@ module Lazy
71
71
  class Promise
72
72
 
73
73
  alias __class__ class #:nodoc:
74
- instance_methods.each { |m| undef_method m unless m =~ /^__/ }
74
+ instance_methods.each { |m| undef_method m unless m =~ /^(__|object_|instance_)/ }
75
75
 
76
76
  def initialize( &computation ) #:nodoc:
77
77
  @computation = computation
@@ -213,7 +213,7 @@ module Kernel
213
213
  # that promise during the computation, lest the computation diverge.
214
214
  #
215
215
  def promise( &computation ) #:yields: result
216
- Lazy::Promise.new &computation
216
+ Lazy::Promise.new(&computation)
217
217
  end
218
218
 
219
219
  # Forces the result of a promise to be computed (if necessary) and returns
@@ -239,7 +239,7 @@ module Kernel
239
239
  # Use wisely.
240
240
  #
241
241
  def future( &computation ) #:yields: result
242
- Lazy::Future.new &computation
242
+ Lazy::Future.new(&computation)
243
243
  end
244
244
 
245
245
  end
@@ -12,11 +12,6 @@
12
12
  # - Thomas Sawyer
13
13
  # - Pit Captain
14
14
  #
15
- # TODO:
16
- #
17
- # - May need to cahnge name, to avoid conflict with Rake's method by the same name.
18
- # - Maybe can become part of core once name is changed.
19
- #
20
15
  # COPYRIGHT:
21
16
  #
22
17
  # Copyright (c) 2006 Thomas Sawyer, Pit Captain
@@ -31,15 +26,34 @@
31
26
  # This program is distributed in the hope that it will be useful, but WITHOUT
32
27
  # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
33
28
  # FOR A PARTICULAR PURPOSE.
34
-
29
+ #
30
+ # TODO:
31
+ #
32
+ # - May need to cahnge name, to avoid conflict with Rake's method by the same name.
33
+ # - Maybe can become part of core once name is changed.
35
34
 
36
35
  require 'facets/functor'
37
36
  require 'facets/module/name' # for Module#basename
38
37
 
39
-
40
- #
41
38
  class Module
42
39
 
40
+ # Include a module via a specified namespace.
41
+ #
42
+ # module T
43
+ # def t ; "HERE" ; end
44
+ # end
45
+ #
46
+ # class X
47
+ # include_as :test => T
48
+ # def t ; test.t ; end
49
+ # end
50
+ #
51
+ # X.new.t #=> "HERE"
52
+ #
53
+ def include_as(h)
54
+ h.each{ |name, mod| method_space(name, mod) }
55
+ end
56
+
43
57
  # Define a simple method namespace.
44
58
  #
45
59
  # class A
@@ -54,7 +68,7 @@ class Module
54
68
  # a.inside.x #=> 10
55
69
  # a.x # no method error
56
70
 
57
- def method_space( name, mod=nil, &blk )
71
+ def method_space(name, mod=nil, &blk)
58
72
 
59
73
  # If block is given then create a module, otherwise
60
74
  # get the name of the module.
@@ -97,65 +111,3 @@ class Module
97
111
  end
98
112
 
99
113
  end
100
-
101
-
102
-
103
- # _____ _
104
- # |_ _|__ ___| |_
105
- # | |/ _ \/ __| __|
106
- # | | __/\__ \ |_
107
- # |_|\___||___/\__|
108
- #
109
- =begin test
110
-
111
- require 'test/unit'
112
-
113
- class TestNamespace1 < Test::Unit::TestCase
114
-
115
- module M
116
- def x; "x"; end
117
- end
118
-
119
- class C
120
- namespace M
121
- end
122
-
123
- def test_01
124
- c = C.new
125
- assert_equal('x', c.m.x)
126
- end
127
-
128
- def test_02
129
- c = C.new
130
- assert_raises(NoMethodError){ c.x }
131
- end
132
-
133
- end
134
-
135
- class TestNamespace2 < Test::Unit::TestCase
136
-
137
- class B
138
- def x; 1; end
139
- end
140
-
141
- class C < B
142
- def x; super; end
143
- namespace :m do
144
- def x; "x"; end
145
- end
146
- end
147
-
148
- def test_01
149
- c = C.new
150
- assert_equal('x', c.m.x)
151
- end
152
-
153
- def test_02
154
- c = C.new
155
- assert_equal(1, c.x)
156
- end
157
-
158
- end
159
-
160
- =end
161
-
@@ -1,20 +1,18 @@
1
- # TITLE:
1
+ # = TITLE:
2
2
  #
3
3
  # System
4
4
  #
5
- # SUMMARY:
5
+ # = SYNOPSIS:
6
6
  #
7
7
  # The System module provides Platform and Ruby system information.
8
8
  # The module should also be able to stand in for rbconfig.
9
9
  # It is intended for use as a service module although it
10
10
  # can be mixed-in too.
11
11
  #
12
- # COPYRIGHT:
12
+ # = COPYING:
13
13
  #
14
14
  # Copyright (c) 2005 Thomas Sawyer, Minero Aoki
15
15
  #
16
- # LICENSE:
17
- #
18
16
  # Ruby License
19
17
  #
20
18
  # This module is free software. You may use, modify, and/or redistribute this
@@ -24,12 +22,12 @@
24
22
  # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
25
23
  # FOR A PARTICULAR PURPOSE.
26
24
  #
27
- # HISTORY:
25
+ # = HISTORY:
28
26
  #
29
27
  # Adapted from RubyParams module by Minero Aoki
30
28
  # Copyright (c) 1999-2002 Minero Aoki <aamine@loveruby.net>
31
29
  #
32
- # AUTHORS:
30
+ # = AUTHORS:
33
31
  #
34
32
  # - Thomas Sawyer
35
33
  # - Minero Aoki
@@ -52,7 +50,7 @@ require 'rbconfig'
52
50
 
53
51
  module System
54
52
 
55
- extend self
53
+ extend self # or module_function ?
56
54
 
57
55
  # Execution Environment -------------------------------------
58
56
 
@@ -190,4 +188,40 @@ module System
190
188
  def loaded_features; $" ; end
191
189
  alias_method :required, :loaded_features
192
190
 
191
+ # platform -----------------------------------------------------
192
+
193
+ def current_platform
194
+ arch = Config::CONFIG['arch']
195
+ #cpu, os = arch.split '-', 2
196
+ return match_platform(arch)
197
+ end
198
+
199
+ #
200
+
201
+ def match_platform(arch)
202
+ cpu, os = arch.split '-', 2
203
+ cpu, os = nil, cpu if os.nil? # java
204
+
205
+ cpu = case cpu
206
+ when /i\d86/ then 'x86'
207
+ else cpu
208
+ end
209
+
210
+ os = case os
211
+ when /cygwin/ then [ 'cygwin', nil ]
212
+ when /darwin(\d+)?/ then [ 'darwin', $1 ]
213
+ when /freebsd(\d+)/ then [ 'freebsd', $1 ]
214
+ when /^java$/ then [ 'java', nil ]
215
+ when /^java([\d.]*)/ then [ 'java', $1 ]
216
+ when /linux/ then [ 'linux', $1 ]
217
+ when /mingw32/ then [ 'mingw32', nil ]
218
+ when /mswin32/ then [ 'mswin32', nil ]
219
+ when /openbsd(\d+\.\d+)/ then [ 'openbsd', $1 ]
220
+ when /solaris(\d+\.\d+)/ then [ 'solaris', $1 ]
221
+ else [ 'unknown', nil ]
222
+ end
223
+
224
+ [cpu, os].flatten.compact.join("-")
225
+ end
226
+
193
227
  end
@@ -193,9 +193,12 @@ class Integer
193
193
  "#{self}th"
194
194
  else
195
195
  case (self % 10)
196
- when 1: "#{self}st"
197
- when 2: "#{self}nd"
198
- when 3: "#{self}rd"
196
+ when 1
197
+ "#{self}st"
198
+ when 2
199
+ "#{self}nd"
200
+ when 3
201
+ "#{self}rd"
199
202
  else
200
203
  "#{self}th"
201
204
  end
@@ -0,0 +1,55 @@
1
+ # TITLE:
2
+ # Thread Extensions
3
+ #
4
+ # SUMMARY:
5
+ # Thread extensions, in particular for Enumerable --send
6
+ # a message to each member via a thread and collect the results.
7
+ #
8
+ # AUTHORS:
9
+ # - Sean O'Halpin
10
+ #
11
+ # TODOs:
12
+ # - Better names for these methods ?
13
+ #
14
+ # COPYRIGHT:
15
+ # Copyright (c) 2006 Sean O'Halpin
16
+ #
17
+ # LICENSE:
18
+ # Ruby License
19
+ #
20
+ # This module is free software. You may use, modify, and/or redistribute this
21
+ # software under the same terms as Ruby.
22
+ #
23
+ # This program is distributed in the hope that it will be useful, but WITHOUT
24
+ # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
25
+ # FOR A PARTICULAR PURPOSE.
26
+
27
+ require 'thread'
28
+ require 'facets/enumerable/collect' # for map_send
29
+
30
+ #
31
+ module Enumerable
32
+
33
+ # Like Enumerable#map but each iteration is processed via
34
+ # a separate thread.
35
+ #
36
+ # CREDIT Sean O'Halpin
37
+
38
+ def threaded_map #:yield:
39
+ map{|e| Thread.new(e){|t| yield t}}.map_send(:value)
40
+ end
41
+
42
+ # Like Enumerable#map_send but each iteration is processed via
43
+ # a separate thread.
44
+ #
45
+ # CREDIT Sean O'Halpin
46
+
47
+ def threaded_map_send(meth, *args) #:yield:
48
+ if block_given?
49
+ map{|e| Thread.new(e){|t| yield t.send(meth, *args)}}.map_send(:value)
50
+ else
51
+ map{|e| Thread.new(e){|t| t.send(meth, *args)}}.map_send(:value)
52
+ end
53
+ end
54
+
55
+ end
data/meta/MANIFEST CHANGED
@@ -32,11 +32,13 @@ lib/core/facets/array/rotate.rb
32
32
  lib/core/facets/array/select.rb
33
33
  lib/core/facets/array/splice.rb
34
34
  lib/core/facets/array/stackable.rb
35
- lib/core/facets/array/unzip.rb
36
35
  lib/core/facets/array.rb
37
36
  lib/core/facets/binding
38
37
  lib/core/facets/binding/cflow.rb
38
+ lib/core/facets/binding/defined.rb
39
39
  lib/core/facets/binding/eval.rb
40
+ lib/core/facets/binding/here.rb
41
+ lib/core/facets/binding/self.rb
40
42
  lib/core/facets/binding/vars.rb
41
43
  lib/core/facets/binding.rb
42
44
  lib/core/facets/boolean.rb
@@ -48,9 +50,6 @@ lib/core/facets/comparable
48
50
  lib/core/facets/comparable/bound.rb
49
51
  lib/core/facets/comparable/cmp.rb
50
52
  lib/core/facets/comparable.rb
51
- lib/core/facets/continuation
52
- lib/core/facets/continuation/create.rb
53
- lib/core/facets/continuation.rb
54
53
  lib/core/facets/conversion.rb
55
54
  lib/core/facets/dir
56
55
  lib/core/facets/dir/multiglob.rb
@@ -58,12 +57,14 @@ lib/core/facets/dir/traverse.rb
58
57
  lib/core/facets/dir.rb
59
58
  lib/core/facets/enumerable
60
59
  lib/core/facets/enumerable/cartesian.rb
61
- lib/core/facets/enumerable/collate.rb
62
60
  lib/core/facets/enumerable/collect.rb
63
61
  lib/core/facets/enumerable/combination.rb
64
62
  lib/core/facets/enumerable/count.rb
63
+ lib/core/facets/enumerable/each.rb
64
+ lib/core/facets/enumerable/mash.rb
65
65
  lib/core/facets/enumerable/permutation.rb
66
66
  lib/core/facets/enumerable/probability.rb
67
+ lib/core/facets/enumerable/split.rb
67
68
  lib/core/facets/enumerable.rb
68
69
  lib/core/facets/exception
69
70
  lib/core/facets/exception/detail.rb
@@ -94,6 +95,7 @@ lib/core/facets/hash/new.rb
94
95
  lib/core/facets/hash/op.rb
95
96
  lib/core/facets/hash/rekey.rb
96
97
  lib/core/facets/hash/select.rb
98
+ lib/core/facets/hash/slice.rb
97
99
  lib/core/facets/hash/traverse.rb
98
100
  lib/core/facets/hash/update.rb
99
101
  lib/core/facets/hash/weave.rb
@@ -119,8 +121,8 @@ lib/core/facets/kernel/op_esc.rb
119
121
  lib/core/facets/kernel/populate.rb
120
122
  lib/core/facets/kernel/report.rb
121
123
  lib/core/facets/kernel/require.rb
122
- lib/core/facets/kernel/require_esc.rb
123
124
  lib/core/facets/kernel/respond.rb
125
+ lib/core/facets/kernel/returning.rb
124
126
  lib/core/facets/kernel/silence.rb
125
127
  lib/core/facets/kernel/super.rb
126
128
  lib/core/facets/kernel/tap.rb
@@ -174,6 +176,7 @@ lib/core/facets/string/indexable.rb
174
176
  lib/core/facets/string/interpolate.rb
175
177
  lib/core/facets/string/natcmp.rb
176
178
  lib/core/facets/string/nchar.rb
179
+ lib/core/facets/string/op.rb
177
180
  lib/core/facets/string/partitions.rb
178
181
  lib/core/facets/string/range.rb
179
182
  lib/core/facets/string/regesc.rb
@@ -193,6 +196,7 @@ lib/core/facets/symbol.rb
193
196
  lib/core/facets/time
194
197
  lib/core/facets/time/change.rb
195
198
  lib/core/facets/time/elapse.rb
199
+ lib/core/facets/time/stamp.rb
196
200
  lib/core/facets/time.rb
197
201
  lib/core/facets/unboundmethod
198
202
  lib/core/facets/unboundmethod/arguments.rb
@@ -262,6 +266,7 @@ lib/methods/facets/enumerable
262
266
  lib/methods/facets/enumerable/cart.rb
263
267
  lib/methods/facets/enumerable/cartesian_product.rb
264
268
  lib/methods/facets/enumerable/cluster_by.rb
269
+ lib/methods/facets/enumerable/collate.rb
265
270
  lib/methods/facets/enumerable/collect_if.rb
266
271
  lib/methods/facets/enumerable/collect_with_index.rb
267
272
  lib/methods/facets/enumerable/combinations.rb
@@ -285,10 +290,13 @@ lib/methods/facets/enumerable/frequency.rb
285
290
  lib/methods/facets/enumerable/graph.rb
286
291
  lib/methods/facets/enumerable/group_by.rb
287
292
  lib/methods/facets/enumerable/ideal_entropy.rb
293
+ lib/methods/facets/enumerable/inject.rb
288
294
  lib/methods/facets/enumerable/injecting.rb
289
295
  lib/methods/facets/enumerable/map_if.rb
296
+ lib/methods/facets/enumerable/map_send.rb
290
297
  lib/methods/facets/enumerable/map_with_index.rb
291
298
  lib/methods/facets/enumerable/mode.rb
299
+ lib/methods/facets/enumerable/modulate.rb
292
300
  lib/methods/facets/enumerable/none.rb
293
301
  lib/methods/facets/enumerable/nonuniq.rb
294
302
  lib/methods/facets/enumerable/occur.rb
@@ -333,11 +341,13 @@ lib/methods/facets/hash/delete_values_at.rb
333
341
  lib/methods/facets/hash/diff.rb
334
342
  lib/methods/facets/hash/each_with_index.rb
335
343
  lib/methods/facets/hash/each_with_key.rb
344
+ lib/methods/facets/hash/except.rb
336
345
  lib/methods/facets/hash/graph.rb
337
346
  lib/methods/facets/hash/has_only_keys.rb
338
347
  lib/methods/facets/hash/join.rb
339
348
  lib/methods/facets/hash/keys_to_s.rb
340
349
  lib/methods/facets/hash/keys_to_sym.rb
350
+ lib/methods/facets/hash/mash.rb
341
351
  lib/methods/facets/hash/normalize_keys.rb
342
352
  lib/methods/facets/hash/op_and.rb
343
353
  lib/methods/facets/hash/op_div.rb
@@ -384,6 +394,7 @@ lib/methods/facets/integer/times_map.rb
384
394
  lib/methods/facets/io
385
395
  lib/methods/facets/io/writelines.rb
386
396
  lib/methods/facets/kernel
397
+ lib/methods/facets/kernel/Bit.rb
387
398
  lib/methods/facets/kernel/__DIR__.rb
388
399
  lib/methods/facets/kernel/__assign__.rb
389
400
  lib/methods/facets/kernel/__callee__.rb
@@ -429,6 +440,7 @@ lib/methods/facets/kernel/meta_def.rb
429
440
  lib/methods/facets/kernel/meta_eval.rb
430
441
  lib/methods/facets/kernel/metaclass.rb
431
442
  lib/methods/facets/kernel/method.rb
443
+ lib/methods/facets/kernel/non_nil.rb
432
444
  lib/methods/facets/kernel/not_nil.rb
433
445
  lib/methods/facets/kernel/object_class.rb
434
446
  lib/methods/facets/kernel/object_clone.rb
@@ -442,6 +454,7 @@ lib/methods/facets/kernel/qua_class.rb
442
454
  lib/methods/facets/kernel/require_all.rb
443
455
  lib/methods/facets/kernel/require_local.rb
444
456
  lib/methods/facets/kernel/resc.rb
457
+ lib/methods/facets/kernel/respond_with_value.rb
445
458
  lib/methods/facets/kernel/returning.rb
446
459
  lib/methods/facets/kernel/send_as.rb
447
460
  lib/methods/facets/kernel/set_from.rb
@@ -489,6 +502,7 @@ lib/methods/facets/module/basename.rb
489
502
  lib/methods/facets/module/by_name.rb
490
503
  lib/methods/facets/module/can.rb
491
504
  lib/methods/facets/module/class.rb
505
+ lib/methods/facets/module/class_def.rb
492
506
  lib/methods/facets/module/clone_removing.rb
493
507
  lib/methods/facets/module/clone_renaming.rb
494
508
  lib/methods/facets/module/clone_using.rb
@@ -564,6 +578,7 @@ lib/methods/facets/string/align_right.rb
564
578
  lib/methods/facets/string/at.rb
565
579
  lib/methods/facets/string/brief.rb
566
580
  lib/methods/facets/string/bytes.rb
581
+ lib/methods/facets/string/camelcase.rb
567
582
  lib/methods/facets/string/capitalized.rb
568
583
  lib/methods/facets/string/chars.rb
569
584
  lib/methods/facets/string/cleave.rb
@@ -588,6 +603,7 @@ lib/methods/facets/string/lines.rb
588
603
  lib/methods/facets/string/lowercase.rb
589
604
  lib/methods/facets/string/margin.rb
590
605
  lib/methods/facets/string/mscan.rb
606
+ lib/methods/facets/string/op_minus.rb
591
607
  lib/methods/facets/string/outdent.rb
592
608
  lib/methods/facets/string/peek.rb
593
609
  lib/methods/facets/string/poke.rb
@@ -600,6 +616,7 @@ lib/methods/facets/string/range_of_line.rb
600
616
  lib/methods/facets/string/rewrite.rb
601
617
  lib/methods/facets/string/shatter.rb
602
618
  lib/methods/facets/string/shift.rb
619
+ lib/methods/facets/string/snakecase.rb
603
620
  lib/methods/facets/string/sprintf.rb
604
621
  lib/methods/facets/string/starts_with.rb
605
622
  lib/methods/facets/string/store.rb
@@ -662,6 +679,7 @@ lib/more/facets/cloneable.rb
662
679
  lib/more/facets/command.rb
663
680
  lib/more/facets/compare_on.rb
664
681
  lib/more/facets/console.rb
682
+ lib/more/facets/continuation.rb
665
683
  lib/more/facets/coroutine.rb
666
684
  lib/more/facets/crypt.rb
667
685
  lib/more/facets/curry.rb
@@ -671,6 +689,7 @@ lib/more/facets/date.rb
671
689
  lib/more/facets/dependency.rb
672
690
  lib/more/facets/dictionary.rb
673
691
  lib/more/facets/downloader.rb
692
+ lib/more/facets/duration.rb
674
693
  lib/more/facets/elementor.rb
675
694
  lib/more/facets/enumerablepass.rb
676
695
  lib/more/facets/eventhook.rb
@@ -695,7 +714,6 @@ lib/more/facets/linkedlist.rb
695
714
  lib/more/facets/logger.rb
696
715
  lib/more/facets/lrucache.rb
697
716
  lib/more/facets/main.rb
698
- lib/more/facets/mapsend.rb
699
717
  lib/more/facets/memoize.rb
700
718
  lib/more/facets/minitar.rb
701
719
  lib/more/facets/multipliers.rb
@@ -713,7 +731,6 @@ lib/more/facets/paramix.rb
713
731
  lib/more/facets/pathlist.rb
714
732
  lib/more/facets/pathname.rb
715
733
  lib/more/facets/pool.rb
716
- lib/more/facets/pp_s.rb
717
734
  lib/more/facets/pqueue.rb
718
735
  lib/more/facets/prepend.rb
719
736
  lib/more/facets/progressbar.rb
@@ -735,6 +752,7 @@ lib/more/facets/snapshot.rb
735
752
  lib/more/facets/stylize.rb
736
753
  lib/more/facets/syncarray.rb
737
754
  lib/more/facets/synchash.rb
755
+ lib/more/facets/thread.rb
738
756
  lib/more/facets/timer.rb
739
757
  lib/more/facets/times.rb
740
758
  lib/more/facets/tuple.rb
@@ -747,11 +765,10 @@ lib/more/facets/yaml.rb
747
765
  lib/more/facets/ziputils.rb
748
766
  log
749
767
  log/changelog.txt
750
- log/history.rd
751
- log/todo.rd
752
768
  meta
753
769
  meta/MANIFEST
754
770
  meta/ROLLRC
771
+ meta/config.yaml
755
772
  meta/google_ad.html
756
773
  meta/icli.yaml
757
774
  meta/project.yaml
@@ -760,7 +777,10 @@ task/changes
760
777
  task/clean
761
778
  task/clobber
762
779
  task/clobber/package
763
- task/config.yaml
780
+ task/clobber/rdoc
781
+ task/doc
782
+ task/doc/quickopts
783
+ task/doc/zip
764
784
  task/groups
765
785
  task/install
766
786
  task/log
@@ -769,8 +789,6 @@ task/prepare
769
789
  task/publish
770
790
  task/rdoc
771
791
  task/release
772
- task/special
773
- task/special/quickopts
774
792
  task/stats
775
793
  task/svn
776
794
  task/svn/changelog
@@ -796,7 +814,10 @@ test/unit/array/test_select.rb
796
814
  test/unit/array/test_stackable.rb
797
815
  test/unit/binding
798
816
  test/unit/binding/test_cflow.rb
817
+ test/unit/binding/test_defined.rb
799
818
  test/unit/binding/test_eval.rb
819
+ test/unit/binding/test_here.rb
820
+ test/unit/binding/test_self.rb
800
821
  test/unit/binding/test_vars.rb
801
822
  test/unit/class
802
823
  test/unit/class/test_descendents.rb
@@ -805,18 +826,26 @@ test/unit/comparable
805
826
  test/unit/comparable/test_bound.rb
806
827
  test/unit/comparable/test_cmp.rb
807
828
  test/unit/continuation
808
- test/unit/continuation/test_create.rb
829
+ test/unit/dir
830
+ test/unit/dir/test_traverse.rb
809
831
  test/unit/enumerable
810
832
  test/unit/enumerable/test_cartesian.rb
811
- test/unit/enumerable/test_collate.rb
812
833
  test/unit/enumerable/test_collect.rb
813
834
  test/unit/enumerable/test_combination.rb
814
835
  test/unit/enumerable/test_count.rb
836
+ test/unit/enumerable/test_each.rb
837
+ test/unit/enumerable/test_mash.rb
815
838
  test/unit/enumerable/test_permutation.rb
816
839
  test/unit/enumerable/test_probability.rb
840
+ test/unit/enumerable/test_split.rb
841
+ test/unit/exception
842
+ test/unit/exception/test_detail.rb
817
843
  test/unit/file
844
+ test/unit/file/test_read.rb
818
845
  test/unit/file/test_topath.rb
819
846
  test/unit/file/test_write.rb
847
+ test/unit/filetest
848
+ test/unit/filetest/test_root.rb
820
849
  test/unit/hash
821
850
  test/unit/hash/test_at.rb
822
851
  test/unit/hash/test_delete.rb
@@ -847,7 +876,7 @@ test/unit/kernel/test_metaid.rb
847
876
  test/unit/kernel/test_object.rb
848
877
  test/unit/kernel/test_populate.rb
849
878
  test/unit/kernel/test_report.rb
850
- test/unit/kernel/test_require_esc.rb
879
+ test/unit/kernel/test_returning.rb
851
880
  test/unit/kernel/test_silence.rb
852
881
  test/unit/kernel/test_super.rb
853
882
  test/unit/kernel/test_tap.rb
@@ -886,6 +915,7 @@ test/unit/string/test_indexable.rb
886
915
  test/unit/string/test_interpolate.rb
887
916
  test/unit/string/test_natcmp.rb
888
917
  test/unit/string/test_nchar.rb
918
+ test/unit/string/test_op.rb
889
919
  test/unit/string/test_partitions.rb
890
920
  test/unit/string/test_range.rb
891
921
  test/unit/string/test_regesc.rb
@@ -918,6 +948,7 @@ test/unit/test_bytes.rb
918
948
  test/unit/test_class_extension.rb
919
949
  test/unit/test_classmethods.rb
920
950
  test/unit/test_compare_on.rb
951
+ test/unit/test_continuation.rb
921
952
  test/unit/test_conversion.rb
922
953
  test/unit/test_coroutine.rb
923
954
  test/unit/test_crypt.rb
@@ -939,7 +970,6 @@ test/unit/test_interval.rb
939
970
  test/unit/test_let.rb
940
971
  test/unit/test_linkedlist.rb
941
972
  test/unit/test_lrucache.rb
942
- test/unit/test_mapsend.rb
943
973
  test/unit/test_memoize.rb
944
974
  test/unit/test_multipliers.rb
945
975
  test/unit/test_multiton.rb
@@ -949,7 +979,6 @@ test/unit/test_openobject.rb
949
979
  test/unit/test_ostruct.rb
950
980
  test/unit/test_overload.rb
951
981
  test/unit/test_paramix.rb
952
- test/unit/test_pp_s.rb
953
982
  test/unit/test_prototype.rb
954
983
  test/unit/test_random.rb
955
984
  test/unit/test_recorder.rb
@@ -957,6 +986,7 @@ test/unit/test_snapshot.rb
957
986
  test/unit/test_stylize.rb
958
987
  test/unit/test_syncarray.rb
959
988
  test/unit/test_synchash.rb
989
+ test/unit/test_thread.rb
960
990
  test/unit/test_timer.rb
961
991
  test/unit/test_times.rb
962
992
  test/unit/test_tuple.rb
@@ -965,3 +995,4 @@ test/unit/test_uninheritable.rb
965
995
  test/unit/time
966
996
  test/unit/time/test_change.rb
967
997
  test/unit/time/test_elapse.rb
998
+ test/unit/time/test_stamp.rb