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,6 +1,8 @@
1
1
  require 'facets/symbol/shadow.rb'
2
- require 'facets/symbol/succ.rb'
3
2
  require 'facets/symbol/not.rb'
4
3
  require 'facets/symbol/generate.rb'
5
4
  require 'facets/symbol/chomp.rb'
5
+
6
+ # remove for 1.9
7
+ require 'facets/symbol/succ.rb'
6
8
  require 'facets/symbol/to_proc.rb'
@@ -1,41 +1,23 @@
1
- #--
2
- # CREDIT Thomas Sawyer
3
- #++
4
-
5
1
  class Symbol
6
2
 
7
3
  # Just like String#chomp.
8
4
  #
9
- def chomp(seperator=nil)
5
+ # :ab.chomp(:b) #=> :a
6
+ #
7
+ # CREDIT: Trans
8
+
9
+ def chomp(seperator)
10
10
  to_s.chomp(seperator.to_s).to_sym
11
11
  end
12
12
 
13
13
  # Just like String#lchomp.
14
14
  #
15
- def lchomp(str)
16
- to_s.reverse.chomp(str).reverse.to_sym
17
- end
18
-
19
- end
20
-
21
-
22
- # _____ _
23
- # |_ _|__ ___| |_
24
- # | |/ _ \/ __| __|
25
- # | | __/\__ \ |_
26
- # |_|\___||___/\__|
27
- #
28
- =begin test
29
-
30
- require 'test/unit'
31
-
32
- class TestSymbol < Test::Unit::TestCase
33
-
34
- def test_chomp
35
- assert_equal( :a, :ab.chomp(:b) )
36
- end
15
+ # :ab.lchomp(:a) #=> :b
16
+ #
17
+ # CREDIT: Trans
37
18
 
19
+ def lchomp(seperator)
20
+ to_s.reverse.chomp(seperator.to_s).reverse.to_sym
38
21
  end
39
22
 
40
- =end
41
-
23
+ end
@@ -1,21 +1,3 @@
1
- # TITLE:
2
- #
3
- # Symbol Generation
4
- #
5
- # DESCRIPTION:
6
- #
7
- # Symbol generation extensions.
8
- #
9
- # AUTHORS:
10
- #
11
- # CREDIT Thomas Sawyer
12
- #
13
- # NOTES:
14
- #
15
- # TODO Is Symbol#chomp worth having? Are the any other
16
- # String methods that Symbols really should have too?
17
-
18
- #
19
1
  class Symbol
20
2
 
21
3
  # Generate a unique symbol.
@@ -26,34 +8,13 @@ class Symbol
26
8
  #
27
9
  # Symbol.generate(:this) => :<2>this
28
10
  #
29
- #--
30
- # TODO Is the generated symbol format acceptable?
31
- #++
11
+ # TODO: Is the generated symbol format acceptable?
12
+ #
13
+ # CREDIT: Trans
14
+
32
15
  def self.generate(suffix=nil)
33
16
  @symbol_generate_counter ||= 0
34
17
  ("<%X>#{suffix}" % @symbol_generate_counter += 1).to_sym
35
18
  end
36
19
 
37
20
  end
38
-
39
-
40
- # _____ _
41
- # |_ _|__ ___| |_
42
- # | |/ _ \/ __| __|
43
- # | | __/\__ \ |_
44
- # |_|\___||___/\__|
45
- #
46
- =begin test
47
-
48
- require 'test/unit'
49
-
50
- class TestSymbol < Test::Unit::TestCase
51
-
52
- def test_generate
53
- assert_equal( Symbol.generate, :'<1>' )
54
- end
55
-
56
- end
57
-
58
- =end
59
-
@@ -1,10 +1,22 @@
1
-
2
1
  class Symbol
3
2
 
3
+ # Does a symbol have a "not" sign?
4
+ #
5
+ # "friend".to_sym.not? #=> false
6
+ # "~friend".to_sym.not? #=> true
7
+ #
8
+ # CREDIT: Trans
9
+
4
10
  def not?
5
11
  self.to_s.slice(0,1) == '~'
6
12
  end
7
13
 
14
+ # Add a "not" sign to the front of a symbol.
15
+ #
16
+ # ~:friend #=> :"~friend"
17
+ #
18
+ # CREDIT: Trans
19
+
8
20
  def ~@
9
21
  if self.to_s.slice(0,1) == '~'
10
22
  "#{self.to_s[1..-1]}".to_sym
@@ -14,27 +26,3 @@ class Symbol
14
26
  end
15
27
 
16
28
  end
17
-
18
-
19
- # _____ _
20
- # |_ _|__ ___| |_
21
- # | |/ _ \/ __| __|
22
- # | | __/\__ \ |_
23
- # |_|\___||___/\__|
24
- #
25
- =begin test
26
-
27
- require 'test/unit'
28
-
29
- class TCSymbol < Test::Unit::TestCase
30
-
31
- def test_not
32
- assert_equal( :"~a", ~:a )
33
- a = :a
34
- n = ~a
35
- assert( n.not? )
36
- end
37
-
38
- end
39
-
40
- =end
@@ -1,21 +1,3 @@
1
- # TITLE:
2
- #
3
- # Symbol Generation
4
- #
5
- # DESCRIPTION:
6
- #
7
- # Symbol generation extensions.
8
- #
9
- # AUTHORS:
10
- #
11
- # CREDIT Thomas Sawyer
12
- #
13
- # NOTES:
14
- #
15
- # TODO Is Symbol#chomp worth having? Are the any other
16
- # String methods that Symbols really should have too?
17
-
18
- #
19
1
  class Symbol
20
2
 
21
3
  # Easily manipulate undercores on symbols.
@@ -23,6 +5,8 @@ class Symbol
23
5
  # :a.pad(2) #=> :__a__
24
6
  # :__a__.pad(-1) #=> :_a_
25
7
  #
8
+ # CREDIT: Trans
9
+
26
10
  def shadow(i=1)
27
11
  return self if i == 0
28
12
  s = self.to_s
@@ -37,25 +21,3 @@ class Symbol
37
21
  alias :pad :shadow
38
22
 
39
23
  end
40
-
41
-
42
- # _____ _
43
- # |_ _|__ ___| |_
44
- # | |/ _ \/ __| __|
45
- # | | __/\__ \ |_
46
- # |_|\___||___/\__|
47
- #
48
- =begin test
49
-
50
- require 'test/unit'
51
-
52
- class TestSymbol < Test::Unit::TestCase
53
-
54
- def test_shadow
55
- assert_equal( :__a__, :a.shadow(2) )
56
- assert_equal( :_a_, :__a__.shadow(-1) )
57
- end
58
-
59
- end
60
-
61
- =end
@@ -1,18 +1,19 @@
1
- class Symbol
1
+ # DEPRECATE for 1.9
2
+ unless (RUBY_VERSION[0,3] == '1.9')
2
3
 
3
- # Successor method for symobol. This simply converts
4
- # the symbol to a string uses String#succ and then
5
- # converts it back to a symbol.
6
- #
7
- # :a.succ => :b
8
- #
9
- #--
10
- # In the future I would like this to work more like
11
- # a simple character dial.
12
- #++
4
+ class Symbol
13
5
 
14
- def succ
15
- self.to_s.succ.intern
6
+ # Successor method for symobol. This simply converts
7
+ # the symbol to a string uses String#succ and then
8
+ # converts it back to a symbol.
9
+ #
10
+ # :a.succ => :b
11
+ #
12
+ # TODO: Make this work more like a simple character dial.
13
+
14
+ def succ
15
+ self.to_s.succ.intern
16
+ end
16
17
  end
17
18
 
18
19
  end
@@ -1,34 +1,39 @@
1
- class Symbol
1
+ # DEPRECATE for 1.9
2
+ unless (RUBY_VERSION[0,3] == '1.9')
2
3
 
3
- # Turn a symbol into a proc calling the method to
4
- # which it refers.
5
- #
6
- # up = :upcase.to_proc
7
- # up.call("hello") #=> HELLO
8
- #
9
- # More useful is the fact that this allows <tt>&</tt>
10
- # to be used to coerce Symbol into Proc.
11
- #
12
- # %w{foo bar qux}.map(&:upcase) #=> ["FOO","BAR","QUX"]
13
- # [1, 2, 3].inject(&:+) #=> 6
14
- #
15
- # And other conveniences such as:
16
- #
17
- # %{john terry fiona}.map(&:capitalize) # -> %{John Terry Fiona}
18
- # sum = numbers.inject(&:+)
19
- #
20
- # TODO This will be deprecated as of Ruby 1.9, since it will become standard Ruby.
21
- #
22
- # CREDIT Florian Gross (orignal)
23
- # CREDIT Nobuhiro Imai (current)
4
+ class Symbol
24
5
 
25
- def to_proc
26
- Proc.new{|*args| args.shift.__send__(self, *args)}
27
- end
6
+ # Turn a symbol into a proc calling the method to
7
+ # which it refers.
8
+ #
9
+ # up = :upcase.to_proc
10
+ # up.call("hello") #=> HELLO
11
+ #
12
+ # More useful is the fact that this allows <tt>&</tt>
13
+ # to be used to coerce Symbol into Proc.
14
+ #
15
+ # %w{foo bar qux}.map(&:upcase) #=> ["FOO","BAR","QUX"]
16
+ # [1, 2, 3].inject(&:+) #=> 6
17
+ #
18
+ # And other conveniences such as:
19
+ #
20
+ # %{john terry fiona}.map(&:capitalize) # -> %{John Terry Fiona}
21
+ # sum = numbers.inject(&:+)
22
+ #
23
+ # TODO: This will be deprecated as of Ruby 1.9, since it will become standard Ruby.
24
+ #
25
+ # CREDIT: Florian Gross (orignal)
26
+ # CREDIT: Nobuhiro Imai (current)
27
+
28
+ def to_proc
29
+ Proc.new{|*args| args.shift.__send__(self, *args)}
30
+ end
28
31
 
29
- #def to_proc
30
- # proc { |obj, *args| obj.send(self, *args) }
31
- #end
32
+ # OLD DEFINITION
33
+ #def to_proc
34
+ # proc { |obj, *args| obj.send(self, *args) }
35
+ #end
36
+ end
32
37
 
33
38
  end
34
39
 
@@ -1,2 +1,3 @@
1
1
  require 'facets/time/change.rb'
2
2
  require 'facets/time/elapse.rb'
3
+ require 'facets/time/stamp.rb'
@@ -1,16 +1,3 @@
1
- # = FILE
2
- #
3
- # time/change.rb
4
- #
5
- # = DESCRIPTION
6
- #
7
- # Time extension for changing time.
8
- #
9
- # = AUTHORS
10
- #
11
- # CREDIT Thomas Sawyer
12
-
13
- #
14
1
  class Time
15
2
 
16
3
  # Returns a new Time where one or more of the elements
@@ -19,6 +6,11 @@ class Time
19
6
  # cascadingly, so if only the hour is passed, then
20
7
  # minute, sec, and usec is set to 0. If the hour and
21
8
  # minute is passed, then sec and usec is set to 0.
9
+ #
10
+ # t = Time.now #=> Sat Dec 01 14:10:15 -0500 2007
11
+ # t.change(:hour => 11) #=> Sat Dec 01 11:00:00 -0500 2007
12
+ #
13
+ # CREDIT: David Hansson (?)
22
14
 
23
15
  def change(options)
24
16
  opts={}; options.each_pair{ |k,v| opts[k] = v.to_i }
@@ -34,28 +26,3 @@ class Time
34
26
  end
35
27
 
36
28
  end
37
-
38
-
39
- # _____ _
40
- # |_ _|__ ___| |_
41
- # | |/ _ \/ __| __|
42
- # | | __/\__ \ |_
43
- # |_|\___||___/\__|
44
- #
45
- =begin test
46
-
47
- require 'test/unit'
48
-
49
- class TestTimeChange < Test::Unit::TestCase
50
-
51
- def test_change
52
- t = Time.parse('4/20/2006 15:37')
53
- n = Time.now
54
- n = n.change( :month=>4, :day=>20, :hour=>15, :min=>37, :year=>2006 )
55
- assert_equal( t, n )
56
- end
57
-
58
- end
59
-
60
- =end
61
-
@@ -1,25 +1,11 @@
1
- # = FILE
2
- #
3
- # time/change.rb
4
- #
5
- # = DESCRIPTION
6
- #
7
- # Time extension for changing time.
8
- #
9
- # = AUTHORS
10
- #
11
- # CREDIT Thomas Sawyer
12
-
13
- #
14
1
  class Time
15
2
 
16
3
  # Tracks the elapse time of a code block.
17
4
  #
18
5
  # Time.elapse { sleep 1 } #=> 0.999188899993896
19
6
  #
20
- #--
21
- # CREDIT Hal Fulton
22
- #++
7
+ # CREDIT: Hal Fulton
8
+
23
9
  def self.elapse
24
10
  raise "Need block" unless block_given?
25
11
  t0 = Time.now.to_f
@@ -28,28 +14,3 @@ class Time
28
14
  end
29
15
 
30
16
  end
31
-
32
-
33
-
34
- # _____ _
35
- # |_ _|__ ___| |_
36
- # | |/ _ \/ __| __|
37
- # | | __/\__ \ |_
38
- # |_|\___||___/\__|
39
- #
40
- =begin test
41
-
42
- require 'test/unit'
43
-
44
- class TestTime < Test::Unit::TestCase
45
-
46
- def test_elapse
47
- #t = Time.parse('4/20/2006 15:37')
48
- t = Time.elapse { sleep 1 }
49
- assert( (t > 0.9) && (t < 2.1 ))
50
- end
51
-
52
- end
53
-
54
- =end
55
-