facets 2.4.2 → 2.4.3

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 (293) hide show
  1. data/AUTHORS +1 -1
  2. data/CHANGES +25 -5
  3. data/MANIFEST +67 -34
  4. data/METADATA +2 -2
  5. data/NEWS +54 -46
  6. data/doc/news/NEWS-2.4.0 +52 -0
  7. data/doc/rdoc/core/classes/Array.html +198 -198
  8. data/doc/rdoc/core/classes/Binding.html +86 -192
  9. data/doc/rdoc/core/classes/Class.html +136 -136
  10. data/doc/rdoc/core/classes/Comparable.html +45 -45
  11. data/doc/rdoc/core/classes/Dir.html +64 -64
  12. data/doc/rdoc/core/classes/Enumerable.html +287 -281
  13. data/doc/rdoc/core/classes/Exception.html +16 -16
  14. data/doc/rdoc/core/classes/FalseClass.html +8 -8
  15. data/doc/rdoc/core/classes/File.html +100 -100
  16. data/doc/rdoc/core/classes/FileTest.html +8 -8
  17. data/doc/rdoc/core/classes/Float.html +32 -32
  18. data/doc/rdoc/core/classes/Friend.html +8 -8
  19. data/doc/rdoc/core/classes/Functor.html +12 -12
  20. data/doc/rdoc/core/classes/Hash.html +439 -847
  21. data/doc/rdoc/{more → core}/classes/Indexable.html +115 -115
  22. data/doc/rdoc/core/classes/InstanceVariables.html +88 -88
  23. data/doc/rdoc/core/classes/Integer.html +142 -142
  24. data/doc/rdoc/core/classes/Kernel.html +602 -600
  25. data/doc/rdoc/core/classes/Lazy/Promise.html +1 -1
  26. data/doc/rdoc/core/classes/MatchData.html +30 -30
  27. data/doc/rdoc/core/classes/Module.html +379 -327
  28. data/doc/rdoc/core/classes/NilClass.html +32 -32
  29. data/doc/rdoc/core/classes/Numeric.html +46 -46
  30. data/doc/rdoc/core/classes/Object.html +4 -4
  31. data/doc/rdoc/core/classes/Proc.html +46 -134
  32. data/doc/rdoc/core/classes/Range.html +60 -60
  33. data/doc/rdoc/core/classes/Regexp.html +28 -28
  34. data/doc/rdoc/{more → core}/classes/Stackable.html +38 -38
  35. data/doc/rdoc/core/classes/String.html +844 -504
  36. data/doc/rdoc/core/classes/Symbol.html +62 -62
  37. data/doc/rdoc/core/classes/Time.html +112 -112
  38. data/doc/rdoc/core/classes/TrueClass.html +8 -8
  39. data/doc/rdoc/core/classes/UnboundMethod.html +22 -22
  40. data/doc/rdoc/core/created.rid +1 -1
  41. data/doc/rdoc/core/files/lib/core/facets/array_rb.html +4 -1
  42. data/doc/rdoc/core/files/lib/core/facets/binding_rb.html +1 -1
  43. data/doc/rdoc/core/files/lib/core/facets/boolean_rb.html +2 -2
  44. data/doc/rdoc/core/files/lib/core/facets/class/methodize_rb.html +96 -0
  45. data/doc/rdoc/core/files/lib/core/facets/class/pathize_rb.html +96 -0
  46. data/doc/rdoc/core/files/lib/core/facets/class_rb.html +5 -1
  47. data/doc/rdoc/core/files/lib/core/facets/dir_rb.html +1 -1
  48. data/doc/rdoc/core/files/lib/core/facets/{class/to_methodname_rb.html → enumerable/commonality_rb.html} +4 -4
  49. data/doc/rdoc/core/files/lib/core/facets/enumerable/entropy_rb.html +96 -0
  50. data/doc/rdoc/core/files/lib/core/facets/{class/to_pathname_rb.html → enumerable/frequency_rb.html} +4 -4
  51. data/doc/rdoc/core/files/lib/core/facets/enumerable/probability_rb.html +1 -1
  52. data/doc/rdoc/core/files/lib/core/facets/enumerable_rb.html +6 -2
  53. data/doc/rdoc/core/files/lib/core/facets/file_rb.html +2 -1
  54. data/doc/rdoc/core/files/lib/core/facets/hash_rb.html +7 -1
  55. data/doc/rdoc/{more/files/lib/more → core/files/lib/core}/facets/indexable_rb.html +2 -2
  56. data/doc/rdoc/core/files/lib/core/facets/kernel/require_all_rb.html +92 -0
  57. data/doc/rdoc/core/files/lib/core/facets/kernel/require_local_rb.html +92 -0
  58. data/doc/rdoc/core/files/lib/core/facets/kernel_rb.html +15 -2
  59. data/doc/rdoc/core/files/lib/core/facets/module/integrate_rb.html +96 -0
  60. data/doc/rdoc/core/files/lib/core/facets/module/methodize_rb.html +96 -0
  61. data/doc/rdoc/core/files/lib/core/facets/module/module_load_rb.html +1 -1
  62. data/doc/rdoc/core/files/lib/core/facets/module/pathize_rb.html +5 -1
  63. data/doc/rdoc/core/files/lib/core/facets/module/redefine_method_rb.html +92 -0
  64. data/doc/rdoc/core/files/lib/core/facets/module/redirect_method_rb.html +92 -0
  65. data/doc/rdoc/core/files/lib/core/facets/module/rename_method_rb.html +92 -0
  66. data/doc/rdoc/core/files/lib/core/facets/module/revise_rb.html +8 -1
  67. data/doc/rdoc/core/files/lib/core/facets/module/wrap_method_rb.html +92 -0
  68. data/doc/rdoc/core/files/lib/core/facets/module_rb.html +8 -5
  69. data/doc/rdoc/core/files/lib/core/facets/numeric_rb.html +2 -1
  70. data/doc/rdoc/core/files/lib/core/facets/proc_rb.html +3 -5
  71. data/doc/rdoc/{more/files/lib/more → core/files/lib/core}/facets/stackable_rb.html +3 -4
  72. data/doc/rdoc/core/files/lib/core/facets/string/each_word_rb.html +96 -0
  73. data/doc/rdoc/core/files/lib/core/facets/{module/clone_rb.html → string/methodize_rb.html} +4 -4
  74. data/doc/rdoc/core/files/lib/core/facets/{kernel/load_rb.html → string/pathize_rb.html} +4 -4
  75. data/doc/rdoc/core/files/lib/core/facets/string/word_wrap_rb.html +92 -0
  76. data/doc/rdoc/core/files/lib/core/facets/string/words_rb.html +1 -5
  77. data/doc/rdoc/core/files/lib/core/facets/string_rb.html +8 -3
  78. data/doc/rdoc/core/files/lib/core/facets/symbol_rb.html +2 -1
  79. data/doc/rdoc/core/fr_class_index.html +2 -3
  80. data/doc/rdoc/core/fr_file_index.html +36 -16
  81. data/doc/rdoc/core/fr_method_index.html +778 -784
  82. data/doc/rdoc/lore/created.rid +1 -1
  83. data/doc/rdoc/more/classes/ANSICode.html +66 -66
  84. data/doc/rdoc/more/classes/Advisable.html +37 -37
  85. data/doc/rdoc/more/classes/Advisable/Method.html +20 -20
  86. data/doc/rdoc/more/classes/Archive/Tar/Minitar.html +27 -27
  87. data/doc/rdoc/more/classes/Archive/Tar/Minitar/Input.html +28 -28
  88. data/doc/rdoc/more/classes/Archive/Tar/Minitar/Output.html +19 -19
  89. data/doc/rdoc/more/classes/Archive/Tar/Minitar/Reader.html +31 -31
  90. data/doc/rdoc/more/classes/Archive/Tar/Minitar/Writer.html +33 -33
  91. data/doc/rdoc/more/classes/Association.html +28 -28
  92. data/doc/rdoc/more/classes/Association/Kernel.html +8 -8
  93. data/doc/rdoc/more/classes/Autoarray.html +12 -12
  94. data/doc/rdoc/more/classes/BBCode.html +34 -34
  95. data/doc/rdoc/more/classes/BaseX.html +16 -16
  96. data/doc/rdoc/more/classes/BiCrypt.html +67 -67
  97. data/doc/rdoc/more/classes/BigDuration.html +30 -30
  98. data/doc/rdoc/more/classes/BinReadable.html +85 -85
  99. data/doc/rdoc/more/classes/BinReadable/ByteOrder.html +25 -25
  100. data/doc/rdoc/more/classes/Binding.html +201 -0
  101. data/doc/rdoc/more/classes/Buildable.html +4 -4
  102. data/doc/rdoc/more/classes/BuildingBlock.html +32 -32
  103. data/doc/rdoc/more/classes/CLI.html +108 -0
  104. data/doc/rdoc/more/classes/CLI/Arguments.html +76 -76
  105. data/doc/rdoc/more/classes/CLI/Command.html +22 -22
  106. data/doc/rdoc/more/classes/CLI/NoCommandError.html +4 -4
  107. data/doc/rdoc/more/classes/CLI/NoOptionError.html +4 -4
  108. data/doc/rdoc/more/classes/CacheDecorator.html +21 -21
  109. data/doc/rdoc/more/classes/Capsule.html +41 -41
  110. data/doc/rdoc/more/classes/Chain.html +17 -17
  111. data/doc/rdoc/more/classes/Cloneable.html +4 -4
  112. data/doc/rdoc/more/classes/ConsoleUtils.html +18 -18
  113. data/doc/rdoc/more/classes/Coroutine.html +28 -28
  114. data/doc/rdoc/more/classes/Crypt.html +16 -16
  115. data/doc/rdoc/more/classes/CssFilter.html +45 -45
  116. data/doc/rdoc/more/classes/CssTree.html +8 -8
  117. data/doc/rdoc/more/classes/Dictionary.html +228 -228
  118. data/doc/rdoc/more/classes/DictionaryMatcher.html +38 -38
  119. data/doc/rdoc/more/classes/DictionaryMatcher/MatchData.html +4 -4
  120. data/doc/rdoc/more/classes/Downloader.html +56 -56
  121. data/doc/rdoc/more/classes/Duration.html +68 -68
  122. data/doc/rdoc/more/classes/Enumerable.html +44 -44
  123. data/doc/rdoc/more/classes/Enumerable/Elementor.html +16 -16
  124. data/doc/rdoc/more/classes/Enumerable/Enumerator.html +4 -4
  125. data/doc/rdoc/more/classes/EnumerablePass.html +15 -15
  126. data/doc/rdoc/more/classes/Equatable.html +16 -16
  127. data/doc/rdoc/more/classes/EventHook.html +8 -8
  128. data/doc/rdoc/more/classes/Expirable.html +17 -17
  129. data/doc/rdoc/more/classes/FileList.html +125 -125
  130. data/doc/rdoc/more/classes/FileShell.html +147 -147
  131. data/doc/rdoc/more/classes/Fileable.html +14 -14
  132. data/doc/rdoc/more/classes/Fileable/DSL.html +41 -41
  133. data/doc/rdoc/more/classes/Hash.html +306 -14
  134. data/doc/rdoc/more/classes/Hash2Xml.html +4 -4
  135. data/doc/rdoc/more/classes/HtmlFilter.html +9 -9
  136. data/doc/rdoc/more/classes/IORedirect.html +19 -19
  137. data/doc/rdoc/more/classes/InfinityClass.html +36 -36
  138. data/doc/rdoc/more/classes/InfinityClass/Numeric.html +23 -23
  139. data/doc/rdoc/more/classes/Ini.html +37 -37
  140. data/doc/rdoc/more/classes/Instantiable.html +9 -9
  141. data/doc/rdoc/more/classes/Instantise.html +8 -8
  142. data/doc/rdoc/more/classes/Interval.html +187 -187
  143. data/doc/rdoc/more/classes/It.html +12 -12
  144. data/doc/rdoc/more/classes/Kernel.html +77 -77
  145. data/doc/rdoc/more/classes/LRUCache.html +38 -38
  146. data/doc/rdoc/more/classes/LinkedList.html +68 -68
  147. data/doc/rdoc/more/classes/LinkedList/Node.html +4 -4
  148. data/doc/rdoc/{core → more}/classes/MissingArgument.html +1 -2
  149. data/doc/rdoc/more/classes/Module.html +171 -171
  150. data/doc/rdoc/more/classes/Multiton.html +12 -12
  151. data/doc/rdoc/more/classes/Multiton/MetaMethods.html +28 -28
  152. data/doc/rdoc/more/classes/Net/SMTP.html +19 -19
  153. data/doc/rdoc/more/classes/NullClass.html +24 -24
  154. data/doc/rdoc/more/classes/ObjectReflection.html +12 -12
  155. data/doc/rdoc/more/classes/OpEsc.html +5 -5
  156. data/doc/rdoc/more/classes/OpenCascade.html +4 -4
  157. data/doc/rdoc/more/classes/OpenCollection.html +8 -8
  158. data/doc/rdoc/more/classes/OpenHash.html +9 -9
  159. data/doc/rdoc/more/classes/OpenObject.html +95 -95
  160. data/doc/rdoc/more/classes/PQueue.html +84 -84
  161. data/doc/rdoc/more/classes/Paramix.html +11 -11
  162. data/doc/rdoc/more/classes/Paramix/Delegator.html +16 -16
  163. data/doc/rdoc/more/classes/PathList.html +8 -8
  164. data/doc/rdoc/more/classes/PathList/Finder.html +8 -8
  165. data/doc/rdoc/more/classes/Platform.html +46 -46
  166. data/doc/rdoc/more/classes/Pool.html +18 -18
  167. data/doc/rdoc/more/classes/Proc.html +48 -4
  168. data/doc/rdoc/more/classes/ProgressBar.html +52 -52
  169. data/doc/rdoc/more/classes/Prototype.html +28 -28
  170. data/doc/rdoc/more/classes/RWDelegator.html +16 -16
  171. data/doc/rdoc/more/classes/Random.html +9 -9
  172. data/doc/rdoc/more/classes/Random/Array.html +37 -37
  173. data/doc/rdoc/more/classes/Random/Hash.html +52 -52
  174. data/doc/rdoc/more/classes/Random/Object.html +4 -4
  175. data/doc/rdoc/more/classes/Random/String.html +34 -34
  176. data/doc/rdoc/more/classes/Random/String/Self.html +9 -9
  177. data/doc/rdoc/more/classes/Recorder.html +16 -16
  178. data/doc/rdoc/more/classes/Reference.html +19 -19
  179. data/doc/rdoc/more/classes/Registerable.html +13 -13
  180. data/doc/rdoc/more/classes/Semaphore.html +36 -36
  181. data/doc/rdoc/more/classes/Settings.html +28 -28
  182. data/doc/rdoc/more/classes/Settings/Setting.html +13 -13
  183. data/doc/rdoc/more/classes/Settings/SettingCollection.html +4 -4
  184. data/doc/rdoc/more/classes/SimpleStringIO.html +8 -8
  185. data/doc/rdoc/more/classes/Snapshot.html +16 -16
  186. data/doc/rdoc/more/classes/Snapshot/ValueHolder.html +12 -12
  187. data/doc/rdoc/more/classes/String/Style.html +113 -113
  188. data/doc/rdoc/{core → more}/classes/String/Words.html +78 -78
  189. data/doc/rdoc/more/classes/Struct.html +8 -8
  190. data/doc/rdoc/more/classes/SyncArray.html +4 -4
  191. data/doc/rdoc/more/classes/SyncHash.html +4 -4
  192. data/doc/rdoc/more/classes/SyncHash/Delegator.html +28 -28
  193. data/doc/rdoc/more/classes/SyncHash/Inheritor.html +28 -28
  194. data/doc/rdoc/more/classes/System.html +253 -253
  195. data/doc/rdoc/more/classes/Timer.html +48 -48
  196. data/doc/rdoc/more/classes/Timer/Dummy.html +9 -9
  197. data/doc/rdoc/more/classes/TracePoint.html +64 -62
  198. data/doc/rdoc/more/classes/Tuple.html +170 -170
  199. data/doc/rdoc/more/classes/TypeCast/Class.html +4 -4
  200. data/doc/rdoc/more/classes/TypeCast/Object.html +4 -4
  201. data/doc/rdoc/more/classes/Uninheritable.html +6 -6
  202. data/doc/rdoc/more/classes/UploadUtils.html +49 -49
  203. data/doc/rdoc/more/classes/VersionNumber.html +53 -53
  204. data/doc/rdoc/more/classes/Weekdays.html +28 -28
  205. data/doc/rdoc/more/classes/XOXO.html +9 -9
  206. data/doc/rdoc/more/classes/ZipUtils.html +58 -58
  207. data/doc/rdoc/more/classes/ZipUtils/DryRun.html +28 -28
  208. data/doc/rdoc/more/classes/ZipUtils/NoWrite.html +28 -28
  209. data/doc/rdoc/more/classes/ZipUtils/Verbose.html +28 -28
  210. data/doc/rdoc/more/created.rid +1 -1
  211. data/doc/rdoc/more/files/lib/more/facets/ansicode_rb.html +1 -1
  212. data/doc/rdoc/{core/files/lib/core → more/files/lib/more}/facets/binding/opvars_rb.html +2 -2
  213. data/doc/rdoc/{core/files/lib/core → more/files/lib/more}/facets/hash/stringify_keys_rb.html +2 -2
  214. data/doc/rdoc/{core/files/lib/core → more/files/lib/more}/facets/hash/symbolize_keys_rb.html +2 -2
  215. data/doc/rdoc/{core/files/lib/core/facets/proc → more/files/lib/more/facets}/partial_rb.html +8 -7
  216. data/doc/rdoc/more/files/lib/more/facets/snapshot_rb.html +2 -2
  217. data/doc/rdoc/more/files/lib/more/facets/string/words_rb.html +96 -0
  218. data/doc/rdoc/more/files/lib/more/facets/tracepoint_rb.html +13 -8
  219. data/doc/rdoc/more/fr_class_index.html +4 -2
  220. data/doc/rdoc/more/fr_file_index.html +9 -2
  221. data/doc/rdoc/more/fr_method_index.html +1013 -1009
  222. data/doc/ri/CLI/cdesc-CLI.yaml +7 -2
  223. data/doc/ri/Enumerable/probability-i.yaml +1 -1
  224. data/doc/ri/Module/append_features-i.yaml +4 -3
  225. data/doc/ri/Module/cdesc-Module.yaml +4 -3
  226. data/doc/ri/Module/methodize-i.yaml +14 -0
  227. data/doc/ri/Module/redefine_method-i.yaml +1 -1
  228. data/doc/ri/Module/redirect_method-i.yaml +3 -1
  229. data/doc/ri/Module/rename_method-i.yaml +1 -1
  230. data/doc/ri/created.rid +1 -1
  231. data/lib/core/facets/array.rb +3 -0
  232. data/lib/core/facets/binding.rb +0 -1
  233. data/lib/core/facets/class.rb +4 -4
  234. data/lib/core/facets/class/{to_methodname.rb → methodize.rb} +5 -2
  235. data/lib/core/facets/class/pathize.rb +14 -0
  236. data/lib/core/facets/enumerable.rb +5 -2
  237. data/lib/core/facets/enumerable/commonality.rb +33 -0
  238. data/lib/core/facets/enumerable/entropy.rb +37 -0
  239. data/lib/core/facets/enumerable/frequency.rb +18 -0
  240. data/lib/core/facets/enumerable/probability.rb +1 -98
  241. data/lib/core/facets/file.rb +1 -1
  242. data/lib/core/facets/hash.rb +6 -0
  243. data/lib/{more → core}/facets/indexable.rb +0 -0
  244. data/lib/core/facets/kernel.rb +15 -1
  245. data/lib/core/facets/kernel/require_all.rb +21 -0
  246. data/lib/core/facets/kernel/{load.rb → require_local.rb} +6 -23
  247. data/lib/core/facets/module.rb +7 -3
  248. data/lib/core/facets/module/integrate.rb +2 -0
  249. data/lib/core/facets/module/methodize.rb +14 -0
  250. data/lib/core/facets/module/pathize.rb +10 -7
  251. data/lib/core/facets/module/redefine_method.rb +35 -0
  252. data/lib/core/facets/module/redirect_method.rb +45 -0
  253. data/lib/core/facets/module/rename_method.rb +20 -0
  254. data/lib/core/facets/module/revise.rb +7 -113
  255. data/lib/core/facets/module/wrap_method.rb +28 -0
  256. data/lib/core/facets/numeric.rb +1 -1
  257. data/lib/core/facets/proc.rb +2 -3
  258. data/lib/{more → core}/facets/stackable.rb +0 -0
  259. data/lib/core/facets/string.rb +8 -6
  260. data/lib/core/facets/string/each_word.rb +13 -0
  261. data/lib/core/facets/string/methodize.rb +12 -0
  262. data/lib/core/facets/string/pathize.rb +12 -0
  263. data/lib/core/facets/string/word_wrap.rb +34 -0
  264. data/lib/core/facets/string/words.rb +6 -167
  265. data/lib/core/facets/symbol.rb +1 -0
  266. data/lib/more/facets/ansicode.rb +4 -4
  267. data/lib/{core → more}/facets/binding/opvars.rb +0 -0
  268. data/lib/{core → more}/facets/hash/stringify_keys.rb +0 -0
  269. data/lib/{core → more}/facets/hash/symbolize_keys.rb +5 -6
  270. data/lib/{core/facets/proc → more/facets}/partial.rb +0 -0
  271. data/lib/more/facets/string/words.rb +173 -0
  272. data/test/core/dir/test_multiglob.rb +1 -0
  273. data/test/core/dir/test_recurse.rb +1 -0
  274. data/test/core/enumerable/test_commonality.rb +15 -0
  275. data/test/core/enumerable/test_entropy.rb +15 -0
  276. data/test/core/enumerable/test_frequency.rb +11 -0
  277. data/test/core/enumerable/test_probability.rb +1 -34
  278. data/test/core/string/test_each_word.rb +14 -0
  279. data/test/core/string/test_fold.rb +1 -1
  280. data/test/core/string/test_word_wrap.rb +35 -0
  281. data/test/core/string/test_words.rb +12 -61
  282. data/test/more/test_command.rb +7 -9
  283. data/test/more/test_paramix.rb +4 -1
  284. data/test/{core/proc → more}/test_partial.rb +1 -1
  285. metadata +75 -38
  286. data/doc/rdoc/core/classes/Module/CloneExtensions.html +0 -287
  287. data/doc/ri/Module/CloneExtensions/cdesc-CloneExtensions.yaml +0 -20
  288. data/doc/ri/Module/CloneExtensions/clone_removing-i.yaml +0 -14
  289. data/doc/ri/Module/CloneExtensions/clone_renaming-i.yaml +0 -14
  290. data/doc/ri/Module/CloneExtensions/clone_using-i.yaml +0 -14
  291. data/lib/core/facets/class/to_pathname.rb +0 -12
  292. data/lib/core/facets/module/clone.rb +0 -57
  293. data/test/core/module/test_clone.rb +0 -45
@@ -1,4 +1,4 @@
1
1
  require 'facets/numeric/approx'
2
- #require 'facets/numeric/distance'
2
+ require 'facets/numeric/distance'
3
3
  require 'facets/numeric/round'
4
4
 
@@ -1,7 +1,6 @@
1
- #require 'facets/proc/bind'
1
+ require 'facets/proc/bind'
2
2
  require 'facets/proc/compose'
3
3
  require 'facets/proc/curry'
4
- #require 'facets/proc/partial'
5
- #require 'facets/proc/to_method'
4
+ require 'facets/proc/to_method'
6
5
  require 'facets/proc/update'
7
6
 
File without changes
@@ -5,12 +5,15 @@ require 'facets/string/capitalized.rb'
5
5
  require 'facets/string/chomp.rb'
6
6
  require 'facets/string/cleave.rb'
7
7
  require 'facets/string/divide.rb'
8
+ require 'facets/string/each_word.rb'
8
9
  require 'facets/string/fold.rb'
9
10
  require 'facets/string/interpolate.rb'
10
11
  require 'facets/string/line_wrap.rb'
12
+ require 'facets/string/methodize.rb'
11
13
  require 'facets/string/mscan.rb'
12
14
  require 'facets/string/natcmp.rb'
13
15
  require 'facets/string/nchar.rb'
16
+ require 'facets/string/pathize.rb'
14
17
  require 'facets/string/range.rb'
15
18
  require 'facets/string/rewrite.rb'
16
19
  require 'facets/string/shatter.rb'
@@ -20,16 +23,15 @@ require 'facets/string/subtract.rb'
20
23
  require 'facets/string/tab.rb'
21
24
  require 'facets/string/titlecase.rb'
22
25
  require 'facets/string/to_re.rb'
23
- #require 'facets/string/to_time.rb'
24
- #require 'facets/string/words.rb'
26
+ require 'facets/string/to_time.rb'
27
+ require 'facets/string/words.rb'
25
28
  require 'facets/string/xor.rb'
26
29
 
27
- require 'facets/string/start_with.rb'
28
- require 'facets/string/end_with.rb'
29
-
30
+ # 1.9
30
31
  require 'facets/string/bytes.rb'
31
32
  require 'facets/string/chars.rb'
32
33
  require 'facets/string/lines.rb'
33
-
34
+ require 'facets/string/start_with.rb'
35
+ require 'facets/string/end_with.rb'
34
36
  require 'facets/string/each_char.rb'
35
37
 
@@ -0,0 +1,13 @@
1
+ require 'facets/string/words'
2
+
3
+ class String
4
+
5
+ # Iterate through each word of a string.
6
+ #
7
+ # "a string".each_word { |word, range| ... }
8
+ #
9
+ def each_word(&block)
10
+ words.each(&block)
11
+ end
12
+
13
+ end
@@ -0,0 +1,12 @@
1
+ class String
2
+
3
+ # Translate a (class or module) name to a suitable method name.
4
+ #
5
+ # My::CoolClass.name.methodize => "my__cool_class"
6
+ #
7
+ def methodize
8
+ gsub(/([A-Z]+)([A-Z])/,'\1_\2').gsub(/([a-z])([A-Z])/,'\1_\2').gsub('::','__').downcase
9
+ end
10
+
11
+ end
12
+
@@ -0,0 +1,12 @@
1
+ class String
2
+
3
+ # Converts a (class or module) name to a unix path.
4
+ #
5
+ # My::CoolClass.name.pathize #=> "/my/cool_class"
6
+ #
7
+ def pathize
8
+ gsub(/([A-Z]+)([A-Z])/,'\1_\2').gsub(/([a-z])([A-Z])/,'\1_\2').gsub('::','/').downcase
9
+ end
10
+
11
+ end
12
+
@@ -0,0 +1,34 @@
1
+ class String
2
+
3
+ # Word wrap a string not exceeding max width.
4
+ #
5
+ # puts "this is a test".word_wrap(4)
6
+ #
7
+ # _produces_
8
+ #
9
+ # this
10
+ # is a
11
+ # test
12
+ #
13
+ # This is basic implementation of word wrap, but smart
14
+ # enough to suffice for most use cases.
15
+ #
16
+ # CREDIT: Gavin Kistner
17
+ # CREDIT: Dayne Broderson
18
+ #
19
+ def word_wrap( col_width=80 )
20
+ self.dup.word_wrap!( col_width )
21
+ end
22
+
23
+ # As with #word_wrap, but modifies the string in place.
24
+ #
25
+ # CREDIT: Gavin Kistner
26
+ # CREDIT: Dayne Broderson
27
+ #
28
+ def word_wrap!( col_width=80 )
29
+ self.gsub!( /(\S{#{col_width}})(?=\S)/, '\1 ' )
30
+ self.gsub!( /(.{1,#{col_width}})(?:\s+|$)/, "\\1\n" )
31
+ self
32
+ end
33
+
34
+ end
@@ -1,173 +1,12 @@
1
- require 'facets/string/fold'
2
-
3
1
  class String
4
2
 
5
- module Words
6
-
7
- # Returns an array of characters.
8
- #
9
- # "abc 123".words #=> ["abc","123"]
10
-
11
- def words
12
- self.split(/\s+/)
13
- end
14
-
15
- # Iterate through each word of a string.
16
- #
17
- # "a string".each_word { |word, range| ... }
18
-
19
- def each_word( &yld )
20
- rest_of_string = self
21
- wordfind = /([-'\w]+)/
22
- arity = yld.arity
23
- offset = 0
24
- while wmatch = wordfind.match(rest_of_string)
25
- word = wmatch[0]
26
- range = offset+wmatch.begin(0) ... offset+wmatch.end(0)
27
- rest_of_string = wmatch.post_match
28
- if arity == 1
29
- yld.call(word)
30
- else
31
- yld.call(word, range)
32
- end
33
- offset = self.length - rest_of_string.length
34
- end
35
- end
36
-
37
- # Filters out words from a string based on block test.
38
- #
39
- # "a string".word_filter { |word| word =~ /^a/ } #=> "string"
40
- #
41
- # CREDIT: George Moschovitis
42
-
43
- def word_filter( &blk )
44
- s = self.dup
45
- s.word_filter!( &blk )
46
- end
47
-
48
- # In place version of #word_filter.
49
- #
50
- # "a string".word_filter { |word| ... }
51
- #
52
- # CREDIT: George Moschovitis
53
-
54
- def word_filter! #:yield:
55
- rest_of_string = self
56
- wordfind = /(\w+)/
57
- offset = 0
58
- while wmatch = wordfind.match(rest_of_string)
59
- word = wmatch[0]
60
- range = offset+wmatch.begin(0) ... offset+wmatch.end(0)
61
- rest_of_string = wmatch.post_match
62
- self[range] = yield( word ).to_s
63
- offset = self.length - rest_of_string.length
64
- end
65
- self
66
- end
67
-
68
- # TODO: This is alternateive from glue: worth providing?
69
- #
70
- # Enforces a maximum width of a string inside an
71
- # html container. If the string exceeds this maximum width
72
- # the string gets wraped.
73
- #
74
- # Not really useful, better use the CSS overflow: hidden
75
- # functionality.
76
- #
77
- # === Input:
78
- # the string to be wrapped
79
- # the enforced width
80
- # the separator used for wrapping
81
- #
82
- # === Output:
83
- # the wrapped string
84
- #
85
- # === Example:
86
- # text = "1111111111111111111111111111111111111111111"
87
- # text = wrap(text, 10, " ")
88
- # p text # => "1111111111 1111111111 1111111111"
89
- #
90
- # See the test cases to better understand the behaviour!
91
-
92
- # def wrap(width = 20, separator = " ")
93
- # re = /([^#{separator}]{1,#{width}})/
94
- # scan(re).join(separator)
95
- # end
96
-
97
- # Word wrap a string not exceeding max width.
98
- #
99
- # puts "this is a test".word_wrap(4)
100
- #
101
- # _produces_
102
- #
103
- # this
104
- # is a
105
- # test
106
- #
107
- # CREDIT: Gavin Kistner
108
- # CREDIT: Dayne Broderson
109
-
110
- def word_wrap( col_width=80 )
111
- self.dup.word_wrap!( col_width )
112
- end
113
-
114
- # As with #word_wrap, but modifies the string in place.
115
- #
116
- # CREDIT: Gavin Kistner
117
- # CREDIT: Dayne Broderson
118
-
119
- def word_wrap!( col_width=80 )
120
- self.gsub!( /(\S{#{col_width}})(?=\S)/, '\1 ' )
121
- self.gsub!( /(.{1,#{col_width}})(?:\s+|$)/, "\\1\n" )
122
- self
123
- end
124
-
125
- # old def
126
-
127
- #def word_wrap(max=80)
128
- # c = dup
129
- # c.word_wrap!(max)
130
- # c
131
- #end
132
-
133
- #def word_wrap!(max=80)
134
- # raise ArgumentError, "Wrap margin too low: #{n}" if max <= 2
135
- # #gsub!( Regexp.new( "(.{1,#{max-1}}\\w)\\b\\s*" ), "\\1\n")
136
- # gsub!( /(.{1,#{max-1}}\S)([ ]|\n)/, "\\1\n")
137
- #end
138
-
139
- # Returns short abstract of long strings; not exceeding +range+
140
- # characters. If range is an integer then the minimum is 20%
141
- # of the maximum. The string is chopped at the nearest word
142
- # if possible, and appended by +ellipsis+, which defaults
143
- # to '...'.
144
- #
145
- # CREDIT: George Moschovitis
146
- # CREDIT: Trans
147
-
148
- def brief(range=76, ellipsis="...")
149
- if Range===range
150
- min = range.first
151
- max = range.last
152
- else
153
- max = range
154
- min = max - (max/5).to_i
155
- range = min..max
156
- end
157
-
158
- if size > max
159
- cut_at = rindex(/\b/, max) || max
160
- cut_at = max if cut_at < min
161
- xstring = slice(0, cut_at)
162
- xstring.chomp(" ") + ellipsis
163
- else
164
- self
165
- end
166
- end
167
-
3
+ # Returns an array of characters.
4
+ #
5
+ # "abc 123".words #=> ["abc","123"]
6
+ #
7
+ def words
8
+ self.split(/\s+/)
168
9
  end
169
10
 
170
- include Words
171
-
172
11
  end
173
12
 
@@ -1,4 +1,5 @@
1
1
  require 'facets/symbol/chomp'
2
+ require 'facets/symbol/generate'
2
3
  require 'facets/symbol/not'
3
4
  require 'facets/symbol/succ'
4
5
  require 'facets/symbol/to_proc'
@@ -313,8 +313,8 @@ module ANSICode
313
313
 
314
314
  end
315
315
 
316
- module CLI #:nodoc:
317
- # For backward compatability
318
- ANSICode = ::ANSICode
319
- end
316
+ #module Console #:nodoc:
317
+ # # For backward compatability
318
+ # ANSICode = ::ANSICode
319
+ #end
320
320
 
@@ -19,7 +19,7 @@ class Hash
19
19
  end
20
20
  end
21
21
 
22
- alias_method( :keys_to_sym, :symbolize_keys )
22
+ #alias_method( :keys_to_sym, :symbolize_keys )
23
23
 
24
24
  #--
25
25
  # # Rails has these aliases too, but they are not very good for
@@ -45,7 +45,7 @@ class Hash
45
45
 
46
46
  end
47
47
 
48
- alias_method( :keys_to_sym!, :symbolize_keys! )
48
+ #alias_method( :keys_to_sym!, :symbolize_keys! )
49
49
 
50
50
  # Converts all keys in the Hash to Strings, returning a new Hash.
51
51
  # With a +filter+ parameter, limits conversion to only a certain selection of keys.
@@ -64,7 +64,7 @@ class Hash
64
64
  end
65
65
  end
66
66
 
67
- alias_method(:keys_to_s, :stringify_keys)
67
+ #alias_method(:keys_to_s, :stringify_keys)
68
68
 
69
69
  # Synonym for Hash#stringify_keys, but modifies the receiver in place and returns it.
70
70
  # With a +filter+ parameter, limits conversion to only a certain selection of keys.
@@ -83,11 +83,10 @@ class Hash
83
83
  end
84
84
  end
85
85
 
86
- alias_method( :keys_to_s!, :stringify_keys!)
86
+ #alias_method( :keys_to_s!, :stringify_keys!)
87
87
 
88
88
  #--
89
- # # Rails has these aliases too, but they are not very good for
90
- # # gerenal use, IMHO. But perhaps someone can convince me otherwise.
89
+ # # Rails has these aliases too.
91
90
  # alias_method( :to_options!, :symbolize_keys! )
92
91
  #++
93
92
 
@@ -0,0 +1,173 @@
1
+ require 'facets/string/fold'
2
+
3
+ class String
4
+
5
+ module Words
6
+
7
+ # Returns an array of characters.
8
+ #
9
+ # "abc 123".words #=> ["abc","123"]
10
+
11
+ def words
12
+ self.split(/\s+/)
13
+ end
14
+
15
+ # Iterate through each word of a string.
16
+ #
17
+ # "a string".each_word { |word, range| ... }
18
+
19
+ def each_word( &yld )
20
+ rest_of_string = self
21
+ wordfind = /([-'\w]+)/
22
+ arity = yld.arity
23
+ offset = 0
24
+ while wmatch = wordfind.match(rest_of_string)
25
+ word = wmatch[0]
26
+ range = offset+wmatch.begin(0) ... offset+wmatch.end(0)
27
+ rest_of_string = wmatch.post_match
28
+ if arity == 1
29
+ yld.call(word)
30
+ else
31
+ yld.call(word, range)
32
+ end
33
+ offset = self.length - rest_of_string.length
34
+ end
35
+ end
36
+
37
+ # Filters out words from a string based on block test.
38
+ #
39
+ # "a string".word_filter { |word| word =~ /^a/ } #=> "string"
40
+ #
41
+ # CREDIT: George Moschovitis
42
+
43
+ def word_filter( &blk )
44
+ s = self.dup
45
+ s.word_filter!( &blk )
46
+ end
47
+
48
+ # In place version of #word_filter.
49
+ #
50
+ # "a string".word_filter { |word| ... }
51
+ #
52
+ # CREDIT: George Moschovitis
53
+
54
+ def word_filter! #:yield:
55
+ rest_of_string = self
56
+ wordfind = /(\w+)/
57
+ offset = 0
58
+ while wmatch = wordfind.match(rest_of_string)
59
+ word = wmatch[0]
60
+ range = offset+wmatch.begin(0) ... offset+wmatch.end(0)
61
+ rest_of_string = wmatch.post_match
62
+ self[range] = yield( word ).to_s
63
+ offset = self.length - rest_of_string.length
64
+ end
65
+ self
66
+ end
67
+
68
+ # TODO: This is alternateive from glue: worth providing?
69
+ #
70
+ # Enforces a maximum width of a string inside an
71
+ # html container. If the string exceeds this maximum width
72
+ # the string gets wraped.
73
+ #
74
+ # Not really useful, better use the CSS overflow: hidden
75
+ # functionality.
76
+ #
77
+ # === Input:
78
+ # the string to be wrapped
79
+ # the enforced width
80
+ # the separator used for wrapping
81
+ #
82
+ # === Output:
83
+ # the wrapped string
84
+ #
85
+ # === Example:
86
+ # text = "1111111111111111111111111111111111111111111"
87
+ # text = wrap(text, 10, " ")
88
+ # p text # => "1111111111 1111111111 1111111111"
89
+ #
90
+ # See the test cases to better understand the behaviour!
91
+
92
+ # def wrap(width = 20, separator = " ")
93
+ # re = /([^#{separator}]{1,#{width}})/
94
+ # scan(re).join(separator)
95
+ # end
96
+
97
+ # Word wrap a string not exceeding max width.
98
+ #
99
+ # puts "this is a test".word_wrap(4)
100
+ #
101
+ # _produces_
102
+ #
103
+ # this
104
+ # is a
105
+ # test
106
+ #
107
+ # CREDIT: Gavin Kistner
108
+ # CREDIT: Dayne Broderson
109
+
110
+ def word_wrap( col_width=80 )
111
+ self.dup.word_wrap!( col_width )
112
+ end
113
+
114
+ # As with #word_wrap, but modifies the string in place.
115
+ #
116
+ # CREDIT: Gavin Kistner
117
+ # CREDIT: Dayne Broderson
118
+
119
+ def word_wrap!( col_width=80 )
120
+ self.gsub!( /(\S{#{col_width}})(?=\S)/, '\1 ' )
121
+ self.gsub!( /(.{1,#{col_width}})(?:\s+|$)/, "\\1\n" )
122
+ self
123
+ end
124
+
125
+ # old def
126
+
127
+ #def word_wrap(max=80)
128
+ # c = dup
129
+ # c.word_wrap!(max)
130
+ # c
131
+ #end
132
+
133
+ #def word_wrap!(max=80)
134
+ # raise ArgumentError, "Wrap margin too low: #{n}" if max <= 2
135
+ # #gsub!( Regexp.new( "(.{1,#{max-1}}\\w)\\b\\s*" ), "\\1\n")
136
+ # gsub!( /(.{1,#{max-1}}\S)([ ]|\n)/, "\\1\n")
137
+ #end
138
+
139
+ # Returns short abstract of long strings; not exceeding +range+
140
+ # characters. If range is an integer then the minimum is 20%
141
+ # of the maximum. The string is chopped at the nearest word
142
+ # if possible, and appended by +ellipsis+, which defaults
143
+ # to '...'.
144
+ #
145
+ # CREDIT: George Moschovitis
146
+ # CREDIT: Trans
147
+
148
+ def brief(range=76, ellipsis="...")
149
+ if Range===range
150
+ min = range.first
151
+ max = range.last
152
+ else
153
+ max = range
154
+ min = max - (max/5).to_i
155
+ range = min..max
156
+ end
157
+
158
+ if size > max
159
+ cut_at = rindex(/\b/, max) || max
160
+ cut_at = max if cut_at < min
161
+ xstring = slice(0, cut_at)
162
+ xstring.chomp(" ") + ellipsis
163
+ else
164
+ self
165
+ end
166
+ end
167
+
168
+ end
169
+
170
+ include Words
171
+
172
+ end
173
+