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
data/AUTHORS CHANGED
@@ -1,25 +1,23 @@
1
- = Facets Contributing Authors
1
+ = Facets Authors
2
2
 
3
3
  == Project Manager & Primary Developer
4
4
 
5
5
  * Trans (Thomas Sawyer)
6
6
 
7
- == Toplevel Developers
7
+ == Recent Contributors
8
8
 
9
- The following developers have contributed significant
10
- amounts of time to the development of Facets. They are held
11
- in the highest regard for their efforts.
9
+ The following developers have recently contributed
10
+ to the development of Facets. They are held in the
11
+ highest regard for their efforts.
12
12
 
13
- * Florian Gross
14
- * George Moschovitis
15
- * Tyler Rick
16
- * Noah Gibbs
13
+ * Matthew Harris Incorporated very useful Duration class.
14
+ * Noah Gibbs Completed port from Extensions project.
17
15
 
18
16
  == Rubyists of Distinction
19
17
 
20
- All of the following persons have contributed to
21
- Facets is some form or fashion. All of their hard
22
- work is greatly appreciated.
18
+ All of the following persons have contributed to
19
+ Facets is some form or fashion over the years.
20
+ All of their hard work is greatly appreciated.
23
21
 
24
22
  * Thibaut Barrère
25
23
  * Daniel J. Berger
@@ -32,9 +30,11 @@ work is greatly appreciated.
32
30
  * Mauricio Fernandez
33
31
  * Florian Frank
34
32
  * Hal Fulton
33
+ * Noah Gibbs
35
34
  * Michael Granger
36
35
  * Florian Gross
37
36
  * Sean O'Halpin
37
+ * Matthew Harris
38
38
  * David Heinemeier Hansson
39
39
  * Thomas-Ivo Heinen
40
40
  * Dave Hoover
@@ -50,8 +50,10 @@ work is greatly appreciated.
50
50
  * Jonas Pfenniger
51
51
  * Ryan Platte
52
52
  * Oliver Renaud
53
+ * Tyler Rick
53
54
  * Christoph Rippel
54
55
  * Daniel Schierbeck
56
+ * Louis J Scoras
55
57
  * Gavin Sinclair
56
58
  * Tilo Sloboda
57
59
  * Phil Tomson
data/CHANGES CHANGED
@@ -1,5 +1,48 @@
1
- facets 2.1.2 / 2007-11-22
1
+ = Facets Change History
2
+
3
+ == 2.2.0 / 2007-12-13
4
+
5
+ * A lot of rdoc updates to core extensions --as promised ;)
6
+ * Just about every method now has at least a brief explinaiton and an example.
7
+ * integer/bitmask.rb has changed a bit --pun intended ;) Deprecated some methods and now use "~" instead of "-" to clear bits.
8
+ * The name Array#unzip didn't makes sense, it was renamed to #modulate (though #collate seems better?)
9
+ * Renamed Enumerable#collate to #mash (Map hASH); #collate and #graph remain aliases for the time being.
10
+ * Deprecated Module#include_and_extend. Just use both silly.
11
+ * More lib pp_s.rb has been removed. Use #pretty_inspect instead.
12
+ * Split binding extensions up a bit more finely --eval.rb sprouted here.rb, self.rb and defined.rb.
13
+ * Move Time#stamp out of conversion.rb and into time/ dir, and remove to_s alias.
14
+ * Preliminary addition of Matthew Harris' excellent duration.rb lib (will integrate with times.rb better in future).
15
+ * Added if clauses to handle upcoming Ruby 1.9 gracefully. Facets should now be just about ready for use with 1.9.
16
+
17
+ == 2.1.3 / 2007-11-28
18
+
19
+ * Fixed minor oddity in Enumerable/collate.
20
+ * Fixed major issue with 2.1.2 where it would not core facets correctly.
21
+
22
+ == 2.1.2 / 2007-11-22
2
23
 
3
24
  * Dir::multiglob no longer handels -/+ modifiers. Use FileList instead.
4
25
  * Fixed task/install script.
5
- * Improved task/changes.
26
+ * Improved task/changes.
27
+
28
+ == 2.1.1 / 2007-11-16
29
+
30
+ * Fixed bug in command.rb that clobbered options.
31
+ * Added kernel/ergo.rb.
32
+
33
+ == 2.1.0 / 2007-11-10
34
+
35
+ * command.rb has been completely rewritten. The API has changed completely!
36
+ * There is no longer a Commmand::Optoins class. Use Console::Arguments instead.
37
+ * Added BiCrypt class to crypt.rb for simple two-way encyrption.
38
+ * module/attr.rb now has attr_reader!, attr_writer! and attr_accessor!
39
+ * All attr_xxx methods have coresponding alias_xxx methods.
40
+ * Fixed bug in Enumerable#cluster_by which returned nil instead of [].
41
+
42
+ == 2.0.5 / 2007-11-07
43
+
44
+ * Added final methods Gavin Sinclair's Extensions project (contributed by Noah Gibbs).
45
+ * Fixes bug with Dictionary#initialize
46
+ * Fixes bug with Hash#-
47
+ * Also improves changelog production.
48
+ * Made #alias_method_chain compatible with current ActiveSupport version.
data/NOTES CHANGED
@@ -1,14 +1,16 @@
1
- Facets 2.1.2 has been released!
1
+ Facets 2.2.0 has been released!
2
2
 
3
- This release fixes then manual install script (task/install).
3
+ This release provides improved rdocs and prepares facets for
4
+ use with RUby 1.9. It also adds Matthew Harris' duration.rb
5
+ library. Bug thanks to Matthew!
4
6
 
5
7
  As of 2.1.0:
6
8
 
7
- Major changes include a new and much-improved
8
- command.rb, a new BiCrypt class for simple two-way
9
- crypotgraphy, as well as attr_reader!, attr_writer!
10
- and attr_accessor! for flag attributes, plus
11
- alias_xxx methods for all attr_xxx methods.
9
+ Major changes include a new and much-improved command.rb,
10
+ a new BiCrypt class for simple two-way crypotgraphy,
11
+ as well as attr_reader!, attr_writer! and attr_accessor!
12
+ for flag attributes, plus alias_xxx methods for all
13
+ attr_xxx methods.
12
14
 
13
15
  Enjoy!
14
16
 
@@ -1,17 +1,15 @@
1
- # TITLE:
1
+ # = TITLE:
2
2
  #
3
3
  # First Class Methods
4
4
  #
5
- # SUMMARY:
5
+ # = SUMMARY:
6
6
  #
7
7
  # Gives Ruby 1st class methods.
8
8
  #
9
- # COPYRIGHT:
9
+ # = COPYRIGHT:
10
10
  #
11
11
  # Copyright (c) 2005 Thomas Sawyer
12
12
  #
13
- # LICENSE:
14
- #
15
13
  # Ruby License
16
14
  #
17
15
  # This module is free software. You may use, modify, and/or redistribute this
@@ -21,11 +19,11 @@
21
19
  # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
22
20
  # FOR A PARTICULAR PURPOSE.
23
21
  #
24
- # AUTHORS:
22
+ # = AUTHORS:
25
23
  #
26
24
  # - Thomas Sawyer
27
25
  #
28
- # NOTES:
26
+ # = NOTES:
29
27
  #
30
28
  # First Class Methods
31
29
  #
@@ -52,7 +50,6 @@
52
50
  #
53
51
  # Which do you prefer?
54
52
 
55
-
56
53
  #
57
54
  module Kernel
58
55
 
@@ -61,8 +58,16 @@ module Kernel
61
58
  # def hello
62
59
  # puts "Hello World!"
63
60
  # end
64
- # p method!(:hello) #=> <Method: #hello>
65
61
  #
62
+ # m1 = method!(:hello) #=> <Method: #hello>
63
+ #
64
+ # def m1.annotate
65
+ # "simple example"
66
+ # end
67
+ #
68
+ # m2 = method!(:hello)
69
+ # m2.annotate #=> "simple example"
70
+
66
71
  def method!(s)
67
72
  ( @__methods__ ||= {} )[s] ||= method(s)
68
73
  end
@@ -101,8 +106,7 @@ class Module
101
106
  # end
102
107
  # p K.instance_method!(:hello) #=> <UnboundMethod: #hello>
103
108
  #
104
- # CAUTION! This will not work exactly right until class variable
105
- # lookup is fixed. Presently it is limited to the scope of the
109
+ # CAUTION! This it is currently limited to the scope of the
106
110
  # current module/class.
107
111
 
108
112
  def instance_method!(s)
@@ -6,7 +6,6 @@ require 'facets/array/splice.rb'
6
6
  require 'facets/array/delete.rb'
7
7
  require 'facets/array/only.rb'
8
8
  require 'facets/array/pad.rb'
9
- require 'facets/array/unzip.rb'
10
9
 
11
10
  require 'facets/array/stackable.rb'
12
11
  require 'facets/array/indexable.rb'
@@ -1,15 +1,47 @@
1
- # = Conjoin
2
-
3
- #
4
1
  class Array
5
2
 
6
- def conjoin( separator=", ", last_separator="and" )
3
+ # This is more advnaced form of #join. It allows for a different
4
+ # terminating separator, and even a different starting terminator.
5
+ #
6
+ # The default separator is ", " and default terminating separator
7
+ # is " and ".
8
+ #
9
+ # [1,2,3].conjoin
10
+ # => "1, 2 and 3
11
+ #
12
+ # [1,2,3].conjoin(:last => ' or ')
13
+ # => "1, 2 or 3
14
+ #
15
+ # [1,2,3].conjoin('.', :last => '-')
16
+ # => "1.2-3
17
+ #
18
+ # [2,4,2,3].conjoin(' == ', :first => " x ", :last => " ** ")
19
+ # => "2 x 4 == 2 ** 3"
20
+ #
21
+ # CREDIT: Trans
22
+
23
+ def conjoin(*args)
24
+ options = (Hash===args.last) ? args.pop : {}
25
+ separator = args.unshift || ", "
26
+
27
+ first = options[:first] || separator
28
+ last = options[:last] || " and "
29
+
7
30
  case length
8
- when 0: ""
9
- when 1: self[0]
10
- else [self[0..-2].join("#{separator}"), self[-1]].join(" #{last_separator} ")
31
+ when 0
32
+ ""
33
+ when 1
34
+ self[0]
35
+ else
36
+ [self[0], first, self[1..-2].join("#{separator}"), last, self[-1]].join
37
+ #[self[0..-2].join("#{separator}"), self[-1]].join("#{last}")
11
38
  end
12
39
  end
13
- alias join_sentence conjoin
14
40
 
41
+ # Alias for #conjoin.
42
+ #
43
+ # NOTE: This will be deprecated.
44
+
45
+ alias_method :join_sentence, :conjoin
15
46
  end
47
+
@@ -1,8 +1,11 @@
1
1
  class Array
2
2
 
3
- # CREDIT Daniel Schierbeck
4
-
5
3
  # Inverse of #delete_if.
4
+ #
5
+ # [1,2,3].delete_unless{ |x| x < 2 }
6
+ # => [1,2]
7
+ #
8
+ # CREDIT: Daniel Schierbeck
6
9
 
7
10
  def delete_unless(&block)
8
11
  delete_if { |element| not block.call(element) }
@@ -14,6 +17,8 @@ class Array
14
17
  # a.delete_values(1,2) #=> [1,2]
15
18
  # a #=> [3,4]
16
19
  #
20
+ # CREDIT: Trans
21
+
17
22
  def delete_values(*values)
18
23
  d = []
19
24
  values.each{ |v| d << delete(v) }
@@ -30,6 +35,7 @@ class Array
30
35
  # a.delete_values_at(0..2) #=> [1,2,3]
31
36
  # a #=> [4]
32
37
  #
38
+ # CREDIT: Trans
33
39
 
34
40
  def delete_values_at(*selectors)
35
41
  idx = []
@@ -4,9 +4,12 @@ require 'facets/array/splice'
4
4
  class Array
5
5
  include Indexable
6
6
 
7
- #--
8
- # Maybe not appropriate for indexable.rb, but where?
9
- #++
7
+ # Alias for #include?.
8
+ #
9
+ # TODO: Maybe not appropriate for indexable.rb, but where?
10
+ #
11
+ # CREDIT: Trans
12
+
10
13
  alias_method :contains?, :include?
11
14
 
12
15
  #alias_method :/, :[]
@@ -18,6 +21,8 @@ class Array
18
21
  # a.first! #=> "a"
19
22
  # p a #=> ["y","z"]
20
23
  #
24
+ # CREDIT: Trans
25
+
21
26
  alias_method :first!, :shift
22
27
 
23
28
  # Alias for pop, which removes and returns
@@ -27,6 +32,8 @@ class Array
27
32
  # a.last! 3
28
33
  # p a #=> [1,2,3]
29
34
  #
35
+ # CREDIT: Trans
36
+
30
37
  alias_method :last!, :pop
31
38
 
32
39
  # Iteration object.
@@ -51,6 +58,26 @@ class Array
51
58
  end
52
59
 
53
60
  # Iterate over each element of array using an iteration object.
61
+ #
62
+ # [1,2,3].each_iteration do |it|
63
+ # p it.index
64
+ # p it.value
65
+ # p it.first?
66
+ # p it.last?
67
+ # p it.prior
68
+ # p it.after
69
+ # end
70
+ #
71
+ # on each successive iteration produces:
72
+ #
73
+ # 0 1 2
74
+ # 1 2 3
75
+ # true false false
76
+ # false false true
77
+ # [] [1] [1,2]
78
+ # [2,3] [3] []
79
+ #
80
+ # CREDIT: Trans
54
81
 
55
82
  def each_iteration
56
83
  if block_given?
@@ -1,10 +1,21 @@
1
1
  class Array
2
2
 
3
3
  # Alias for <tt>|</tt>.
4
+ #
5
+ # [1,2].merge [2,3] #=> [1,2,3]
6
+ #
7
+ # CREDIT: Trans
8
+
4
9
  alias_method :merge, :|
5
10
 
6
11
  # In place #merge.
7
12
  #
13
+ # a = [1,2]
14
+ # a.merge! [2,3]
15
+ # a => [1,2,3]
16
+ #
17
+ # CREDIT: Trans
18
+
8
19
  def merge!( other )
9
20
  self.replace( self | other )
10
21
  end
@@ -1,5 +1,5 @@
1
1
  class Array
2
- #
2
+
3
3
  # Returns the _only_ element in the array. Raises an IndexError if
4
4
  # the array's size is not 1.
5
5
  #
@@ -7,8 +7,8 @@ class Array
7
7
  # [1,2,3].only # -> IndexError
8
8
  # [].only # -> IndexError
9
9
  #
10
- # CREDIT Noah Gibbs
11
- # CREDIT Gavin Sinclair
10
+ # CREDIT: Gavin Sinclair
11
+ # CREDIT: Noah Gibbs
12
12
 
13
13
  def only
14
14
  unless size == 1
@@ -5,8 +5,6 @@
5
5
  #
6
6
  class Array
7
7
 
8
- # CREDIT Richard Laugesen
9
-
10
8
  # Pad an array with a given <tt>value</tt> upto a given <tt>length</tt>.
11
9
  #
12
10
  # [0,1,2].pad(6,"a") #=> [0,1,2,"a","a","a"]
@@ -15,6 +13,8 @@ class Array
15
13
  # to the beginning of the array.
16
14
  #
17
15
  # [0,1,2].pad(-6,"a") #=> ["a","a","a",0,1,2]
16
+ #
17
+ # CREDIT: Richard Laugesen
18
18
 
19
19
  def pad(len, val=nil)
20
20
  return dup if self.size >= len.abs
@@ -30,6 +30,8 @@ class Array
30
30
  # a = [0,1,2]
31
31
  # a.pad!(6,"x")
32
32
  # a #=> [0,1,2,"x","x","x"]
33
+ #
34
+ # CREDIT: Richard Laugesen
33
35
 
34
36
  def pad!(len, val=nil)
35
37
  return self if self.size >= len.abs
@@ -41,47 +43,3 @@ class Array
41
43
  end
42
44
 
43
45
  end
44
-
45
-
46
-
47
- # _____ _
48
- # |_ _|__ ___| |_
49
- # | |/ _ \/ __| __|
50
- # | | __/\__ \ |_
51
- # |_|\___||___/\__|
52
- #
53
- =begin test
54
-
55
- require 'test/unit'
56
-
57
- class TestArray < Test::Unit::TestCase
58
-
59
- def test_pad
60
- r = [0,1,2,3].pad(7,"x")
61
- x = [0,1,2,3,"x","x","x"]
62
- assert_equal(x,r)
63
- end
64
-
65
- def test_pad!
66
- a = [0,1,2,3]
67
- r = a.pad!(6,"y")
68
- x = [0,1,2,3,"y","y"]
69
- assert_equal(x,a)
70
- end
71
-
72
- def test_pad_negative
73
- r = [0,1,2,3].pad(-7,"n")
74
- x = ["n","n","n",0,1,2,3]
75
- assert_equal(x,r)
76
- end
77
-
78
- def test_pad_negative!
79
- a = [0,1,2,3]
80
- r = a.pad!(-6,"q")
81
- x = ["q","q",0,1,2,3]
82
- assert_equal(x,a)
83
- end
84
-
85
- end
86
-
87
- =end