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
@@ -16,3 +16,5 @@ require 'facets/string/nchar.rb'
16
16
  require 'facets/string/bracket.rb'
17
17
  require 'facets/string/case.rb'
18
18
  require 'facets/string/natcmp.rb'
19
+ require 'facets/string/op'
20
+
@@ -1,23 +1,27 @@
1
- # TITLE:
2
- #
3
- # String Alignment Extensions
4
- #
5
- # SUMMARY:
6
- #
7
- # String extensions for alignment.
8
- #
9
- # CREDIT:
10
- #
11
- # - Thomas Sawyer
12
-
13
1
  class String
14
2
 
15
3
  # Align a string to the right.
16
4
  # The defualt alignment seperation is a new line ("/n")
17
5
  # This can be changes as can be the padding string which
18
6
  # defaults to a single space (' ').
7
+ #
8
+ # s = <<-EOS
9
+ # This is a test
10
+ # and
11
+ # so on
12
+ # EOS
13
+ #
14
+ # puts s.align_right(2)
15
+ #
16
+ # _produces_
17
+ #
18
+ # This is a test
19
+ # and
20
+ # so on
21
+ #
22
+ # CREDIT: Trans
19
23
 
20
- def align_right( n, sep="\n", c=' ' )
24
+ def align_right(n, sep="\n", c=' ')
21
25
  return rjust(n.to_i,c.to_s) if sep==nil
22
26
  q = split(sep.to_s).collect { |line|
23
27
  line.rjust(n.to_i,c.to_s)
@@ -26,11 +30,28 @@ class String
26
30
  end
27
31
 
28
32
  # Align a string to the left.
33
+ #
29
34
  # The defualt alignment seperation is a new line ("/n")
30
35
  # This can be changes as can be the padding string which
31
36
  # defaults to a single space (' ').
37
+ #
38
+ # s = <<-EOS
39
+ # This is a test
40
+ # and
41
+ # so on
42
+ # EOS
43
+ #
44
+ # puts s.align_left(2)
45
+ #
46
+ # _produces_
47
+ #
48
+ # This is a test
49
+ # and
50
+ # so on
51
+ #
52
+ # CREDIT: Trans
32
53
 
33
- def align_left( n, sep="\n", c=' ' )
54
+ def align_left(n, sep="\n", c=' ')
34
55
  return ljust(n.to_i,c.to_s) if sep==nil
35
56
  q = split(sep.to_s).collect { |line|
36
57
  line.ljust(n.to_i,c.to_s)
@@ -40,11 +61,16 @@ class String
40
61
 
41
62
  # Centers each line of a string.
42
63
  #
64
+ # The defualt alignment seperation is a new line ("/n")
65
+ # This can be changed as can be the padding string which
66
+ # defaults to a single space (' ').
67
+ #
43
68
  # s = <<-EOS
44
- # This is a test
45
- # and
46
- # so on
69
+ # This is a test
70
+ # and
71
+ # so on
47
72
  # EOS
73
+ #
48
74
  # puts s.align_center(14)
49
75
  #
50
76
  # _produces_
@@ -53,12 +79,9 @@ class String
53
79
  # and
54
80
  # so on
55
81
  #
56
- # Align a string to the center.
57
- # The defualt alignment seperation is a new line ("/n")
58
- # This can be changed as can be the padding string which
59
- # defaults to a single space (' ').
82
+ # CREDIT: Trans
60
83
 
61
- def align_center( n, sep="\n", c=' ' )
84
+ def align_center(n, sep="\n", c=' ')
62
85
  return center(n.to_i,c.to_s) if sep==nil
63
86
  q = split(sep.to_s).collect { |line|
64
87
  line.center(n.to_i,c.to_s)
@@ -66,37 +89,4 @@ class String
66
89
  q.join(sep.to_s)
67
90
  end
68
91
 
69
- # Deprecated alias for #align_center.
70
- #alias_method :center_lines, :align_center
71
92
  end
72
-
73
-
74
-
75
-
76
- # _____ _
77
- # |_ _|__ ___| |_
78
- # | |/ _ \/ __| __|
79
- # | | __/\__ \ |_
80
- # |_|\___||___/\__|
81
- #
82
- =begin test
83
-
84
- require 'test/unit'
85
-
86
- class TestStringAlign < Test::Unit::TestCase
87
-
88
- def test_align_right
89
- assert_equal( " xxx", "xxx".align_right(9) )
90
- end
91
-
92
- def test_align_left
93
- assert_equal( "xxx ", "xxx".align_left(9) )
94
- end
95
-
96
- def test_align_center
97
- assert_equal( " xxx ", "xxx".align_center(9) )
98
- end
99
-
100
- end
101
-
102
- =end
@@ -1,29 +1,11 @@
1
- # TITLE:
2
- #
3
- # String Blank Extension
4
- #
5
- # SUMMARY:
6
- #
7
- # String blank extensions.
8
- #
9
- # CREDIT:
10
- #
11
- # - Martin Pool
12
- # - Alan Davies
13
- # - Derek Lewis
14
- # - Peter Vanbroekhoven
15
- #
16
- # TODO:
17
- #
18
- # - Does #blank? really belong here?
19
-
20
- #
21
1
  class String
22
2
 
23
3
  # Is this string just whitespace?
24
4
  #
25
5
  # "abc".blank? #=> false
26
6
  # " ".blank? #=> true
7
+ #
8
+ # CREDIT: ?
27
9
 
28
10
  def blank?
29
11
  self !~ /\S/
@@ -32,29 +14,3 @@ class String
32
14
  alias whitespace? blank?
33
15
 
34
16
  end
35
-
36
-
37
- # _____ _
38
- # |_ _|__ ___| |_
39
- # | |/ _ \/ __| __|
40
- # | | __/\__ \ |_
41
- # |_|\___||___/\__|
42
- #
43
- =begin test
44
-
45
- require 'test/unit'
46
-
47
- class TestStringBlank < Test::Unit::TestCase
48
-
49
- def test_blank?
50
- assert( ! "xyz".blank? )
51
- assert( " ".blank? )
52
- end
53
-
54
- def test_whitespace?
55
- assert( ! "xyz".whitespace? )
56
- assert( " ".whitespace? )
57
- end
58
- end
59
-
60
- =end
@@ -1,16 +1,3 @@
1
- # TITLE:
2
- #
3
- # String Bracketing Extensoins
4
- #
5
- # SUMMARY:
6
- #
7
- # String extension methods which enclose on unenclose a striong.
8
- #
9
- # CREDITS:
10
- #
11
- # - Thomas Sawyer
12
-
13
- #
14
1
  class String
15
2
 
16
3
  BRA2KET = { '['=>']', '('=>')', '{'=>'}', '<'=>'>' }
@@ -21,6 +8,8 @@ class String
21
8
  #
22
9
  # "wrap me".bracket('{') #=> "{wrap me}"
23
10
  # "wrap me".bracket('--','!') #=> "--wrap me!"
11
+ #
12
+ # CREDIT: Trans
24
13
 
25
14
  def bracket(bra, ket=nil)
26
15
  #ket = String.bra2ket[$&] if ! ket && /^[\[({<]$/ =~ bra
@@ -29,6 +18,8 @@ class String
29
18
  end
30
19
 
31
20
  # Inplace version of #braket.
21
+ #
22
+ # CREDIT: Trans
32
23
 
33
24
  def bracket!(bra, ket=nil)
34
25
  self.replace(bracket(bra, ket))
@@ -40,6 +31,8 @@ class String
40
31
  #
41
32
  # "{unwrap me}".debracket('{') #=> "unwrap me"
42
33
  # "--unwrap me!".debracket('--','!') #=> "unwrap me!"
34
+ #
35
+ # CREDIT: Trans
43
36
 
44
37
  def unbracket(bra=nil, ket=nil)
45
38
  if bra
@@ -58,6 +51,8 @@ class String
58
51
  end
59
52
 
60
53
  # Inplace version of #debraket.
54
+ #
55
+ # CREDIT: Trans
61
56
 
62
57
  def unbracket!(bra=nil, ket=nil)
63
58
  self.replace( unbracket(bra, ket) )
@@ -68,6 +63,8 @@ class String
68
63
  #
69
64
  # "quote me".quote #=> "'quote me'"
70
65
  # "quote me".quote(2) #=> "\"quote me\""
66
+ #
67
+ # CREDIT: Trans
71
68
 
72
69
  def quote(type=:s)
73
70
  case type.to_s.downcase
@@ -83,6 +80,10 @@ class String
83
80
  end
84
81
 
85
82
  # Remove quotes from string.
83
+ #
84
+ # "'hi'".dequite #=> "hi"
85
+ #
86
+ # CREDIT: Trans
86
87
 
87
88
  def dequote
88
89
  s = self.dup
@@ -100,77 +101,3 @@ class String
100
101
  return s
101
102
  end
102
103
  end
103
-
104
-
105
-
106
- # _____ _
107
- # |_ _|__ ___| |_
108
- # | |/ _ \/ __| __|
109
- # | | __/\__ \ |_
110
- # |_|\___||___/\__|
111
- #
112
- =begin test
113
-
114
- require 'test/unit'
115
-
116
- class TestStringBracket < Test::Unit::TestCase
117
-
118
- def test_bracket
119
- assert_equal( '#X#', 'X'.bracket('#') )
120
- assert_equal( 'xX!', 'X'.bracket('x','!') )
121
- assert_equal( '{X}', 'X'.bracket('{','}') )
122
- assert_equal( '<X>', 'X'.bracket('<') )
123
- assert_equal( '(X)', 'X'.bracket('(') )
124
- assert_equal( '[X]', 'X'.bracket('[') )
125
- assert_equal( '{X}', 'X'.bracket('{') )
126
- end
127
-
128
- def test_braket!
129
- a = 'X' ; a.bracket!('#')
130
- assert_equal( '#X#', a )
131
- a = 'X' ; a.bracket!('x','!')
132
- assert_equal( 'xX!', a )
133
- a = 'X' ; a.bracket!('{','}')
134
- assert_equal( '{X}', a )
135
- a = 'X' ; a.bracket!('<')
136
- assert_equal( '<X>', a )
137
- a = 'X' ; a.bracket!('(')
138
- assert_equal( '(X)', a )
139
- a = 'X' ; a.bracket!('[')
140
- assert_equal( '[X]', a )
141
- a = 'X' ; a.bracket!('{')
142
- assert_equal( '{X}', a )
143
- end
144
-
145
- def test_quote_01
146
- a = "hi"
147
- assert_raises( ArgumentError ) { a.quote(1,2) }
148
- end
149
-
150
- def test_quote_02
151
- a = "hi"
152
- assert_equal( %{'hi'}, a.quote )
153
- end
154
-
155
- def test_quote_03
156
- a = "hi"
157
- assert_equal( %{"hi"}, a.quote(:d) )
158
- assert_equal( %{"hi"}, a.quote(:double) )
159
- end
160
-
161
- def test_quote_04
162
- a = "hi"
163
- assert_equal( %{'hi'}, a.quote(:s) )
164
- assert_equal( %{'hi'}, a.quote(:single) )
165
- end
166
-
167
- def test_quote_05
168
- a = "hi"
169
- assert_equal( %{`hi`}, a.quote(:b) )
170
- assert_equal( %{`hi`}, a.quote(:back) )
171
- end
172
-
173
- end
174
-
175
- =end
176
-
@@ -1,54 +1,31 @@
1
- # TITLE:
2
- #
3
- # String Case Extensions
4
- #
5
- # SUMMARY:
6
- #
7
- # String case-related extensions.
8
- #
9
- # CREDIT:
10
- #
11
- # - Phil Tomson
12
- # - Thomas Sawyer
13
- #
14
- # TODO:
15
- #
16
- # - Perhaps add camelcase methods.
17
-
18
- #
19
1
  class String
20
2
 
21
- # Title case.
22
-
23
- def titlecase
24
- gsub(/\b\w/){$&.upcase}
25
- end
26
-
27
3
  # Return true if the string is capitalized, otherwise false.
28
4
  #
29
5
  # "THIS".capitalized? #=> true
30
6
  # "This".capitalized? #=> true
31
7
  # "this".capitalized? #=> false
32
8
  #
33
- # CREDIT: Phil Tomson
9
+ # CREDIT: Phil Tomson
34
10
 
35
11
  def capitalized?
36
12
  self =~ /^[A-Z]/
37
13
  end
38
14
 
39
-
40
15
  # Return true if the string is lowercase (downcase), otherwise false.
41
16
  #
42
17
  # "THIS".downcase? #=> false
43
18
  # "This".downcase? #=> false
44
19
  # "this".downcase? #=> true
45
20
  #
46
- # CREDIT Phil Tomson
21
+ # CREDIT: Phil Tomson
47
22
 
48
23
  def downcase?
49
24
  downcase == self
50
25
  end
51
26
 
27
+ # Alias for #downcase? method.
28
+ alias_method :lowercase?, :downcase?
52
29
 
53
30
  # Is the string upcase/uppercase?
54
31
  #
@@ -56,16 +33,52 @@ class String
56
33
  # "This".upcase? #=> false
57
34
  # "this".upcase? #=> false
58
35
  #
59
- # CREDIT Phil Tomson
36
+ # CREDIT: Phil Tomson
60
37
 
61
38
  def upcase?
62
39
  self.upcase == self
63
40
  end
64
41
 
65
- # Alias for #downcase? method.
66
- alias_method :lowercase?, :downcase?
67
-
68
42
  # Alias for #upcase? method.
69
43
  alias_method :uppercase?, :upcase?
70
- end
71
44
 
45
+ # Title case.
46
+ #
47
+ # "this is a string".titlecase
48
+ # => "This Is A String"
49
+ #
50
+ # CREDIT: Eliazar Parra
51
+
52
+ def titlecase
53
+ gsub(/\b\w/){$&.upcase}
54
+ end
55
+
56
+ # Converts a string to camelcase. By default capitalization
57
+ # occurs on whitespace and underscores. By setting the first
58
+ # parameter to <tt>true</tt> the first character can also be
59
+ # captizlized. The second parameter can be assigned a valid
60
+ # Regualr Expression characeter set to determine which
61
+ # characters to match for capitalizing subsequent parts of
62
+ # the string.
63
+ #
64
+ # "this_is a test".camelcase #=> "thisIsATest"
65
+ # "this_is a test".camelcase(true) #=> "ThisIsATest"
66
+ # "this_is a test".camelcase(true, ' ') #=> "This_isATest"
67
+ #
68
+ # CREDIT: Trans
69
+
70
+ def camelcase(first=false, on='_\s')
71
+ if first
72
+ gsub(/(^|[#{on}]+)([A-Za-z])/){ $2.upcase }
73
+ else
74
+ gsub(/([#{on}]+)([A-Za-z])/){ $2.upcase }
75
+ end
76
+ end
77
+
78
+ # Snakecase (underscore) string based on camelcase characteristics.
79
+
80
+ def snakecase #(camel_cased_word)
81
+ gsub(/([A-Z]+)([A-Z])/,'\1_\2').gsub(/([a-z])([A-Z])/,'\1_\2').downcase
82
+ end
83
+
84
+ end