facets 3.0.0 → 3.1.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 (353) hide show
  1. checksums.yaml +4 -4
  2. data/.index +11 -7
  3. data/CONTRIBUTING.md +112 -0
  4. data/HISTORY.md +38 -0
  5. data/{README.rdoc → README.md} +59 -59
  6. data/demo/core/array/after.md +13 -0
  7. data/demo/core/array/arrange.md +17 -0
  8. data/demo/core/array/before.md +14 -0
  9. data/demo/core/array/collapse.md +15 -0
  10. data/demo/core/array/collisions.md +30 -0
  11. data/demo/core/array/commonality.md +31 -0
  12. data/demo/core/array/conjoin.md +47 -0
  13. data/demo/core/array/contains.md +9 -0
  14. data/demo/core/array/delete_unless.md +13 -0
  15. data/demo/core/array/delete_values.md +10 -0
  16. data/demo/core/array/delete_values_at.md +15 -0
  17. data/demo/core/array/divide.md +14 -0
  18. data/demo/core/array/duplicates.md +14 -0
  19. data/demo/core/array/each_overlap.md +12 -0
  20. data/demo/core/array/each_pair.md +13 -0
  21. data/demo/core/array/each_value.md +12 -0
  22. data/demo/core/array/entropy.md +13 -0
  23. data/demo/core/array/extract_options.md +13 -0
  24. data/demo/core/array/first.md +11 -0
  25. data/demo/core/array/from.md +11 -0
  26. data/demo/core/array/ideal_entropy.md +11 -0
  27. data/demo/core/array/intersection.md +11 -0
  28. data/demo/core/array/last.md +11 -0
  29. data/demo/core/array/median.md +23 -0
  30. data/demo/core/array/merge.md +15 -0
  31. data/demo/core/array/missing.md +10 -0
  32. data/demo/core/array/mode.md +9 -0
  33. data/demo/core/array/nonuniq.md +16 -0
  34. data/demo/core/array/not_empty.md +8 -0
  35. data/demo/core/array/occur.md +18 -0
  36. data/demo/core/array/occurrence.md +13 -0
  37. data/demo/core/array/only.md +9 -0
  38. data/demo/core/array/op_pow.md +10 -0
  39. data/demo/core/array/pad.md +28 -0
  40. data/demo/core/array/peek.md +10 -0
  41. data/demo/core/array/poke.md +15 -0
  42. data/demo/core/array/probability +8 -0
  43. data/demo/core/array/pull.md +10 -0
  44. data/demo/core/array/recurse.md +10 -0
  45. data/demo/core/array/recursively.md +20 -0
  46. data/demo/core/array/reject_values.md +10 -0
  47. data/demo/core/array/splice.md +14 -0
  48. data/demo/core/array/split.md +13 -0
  49. data/demo/core/array/squeeze.md +14 -0
  50. data/demo/core/array/step.md +16 -0
  51. data/demo/core/array/store.md +9 -0
  52. data/demo/core/array/thru.md +12 -0
  53. data/demo/core/array/to_h.md +11 -0
  54. data/demo/core/array/traverse.md +20 -0
  55. data/demo/core/array/uniq_by.md +16 -0
  56. data/demo/core/array/unique_permutation.md +14 -0
  57. data/demo/core/array/zip.md +8 -0
  58. data/demo/core/binding/caller.md +57 -0
  59. data/demo/core/binding/defined.md +10 -0
  60. data/demo/core/binding/opvars.md +16 -0
  61. data/demo/core/binding/self.md +6 -0
  62. data/demo/core/class/descendants.md +13 -0
  63. data/demo/core/class/to_proc.md +11 -0
  64. data/demo/core/comparable/at_least.md +11 -0
  65. data/demo/core/comparable/at_most.md +11 -0
  66. data/demo/core/comparable/bound.md +13 -0
  67. data/demo/core/comparable/cap.md +11 -0
  68. data/demo/core/comparable/clip.md +29 -0
  69. data/demo/core/comparable/cmp.md +18 -0
  70. data/demo/core/comparable/op_get.md +32 -0
  71. data/demo/core/dir/ascend.md +24 -0
  72. data/demo/core/dir/descend.md +16 -0
  73. data/demo/core/dir/multiglob.md +41 -0
  74. data/demo/core/dir/parent.md +6 -0
  75. data/demo/core/dir/recurse.md +41 -0
  76. data/demo/core/exception/detail.md +19 -0
  77. data/demo/core/{facets.rdoc → facets.md} +1 -1
  78. data/demo/core/filetest/root.md +13 -0
  79. data/demo/core/hash/recursively.md +21 -0
  80. data/demo/core/indexable.md +95 -0
  81. data/demo/core/integer/bitmask.md +46 -0
  82. data/demo/core/integer/{factorial.rdoc → factorial.md} +1 -1
  83. data/demo/core/integer/{length.rdoc → length.md} +1 -1
  84. data/demo/core/integer/{multiple.rdoc → multiple.md} +3 -1
  85. data/demo/core/integer/of.md +11 -0
  86. data/demo/core/integer/{ordinal.rdoc → ordinal.md} +3 -1
  87. data/demo/core/integer/{of.rdoc → times_collect.md} +2 -7
  88. data/demo/core/matchdata/match.md +7 -0
  89. data/demo/core/matchdata/matchset.md +7 -0
  90. data/demo/core/matchdata/matchtree.md +10 -0
  91. data/demo/core/module/cattr.md +43 -0
  92. data/demo/core/module/class_extend.md +64 -0
  93. data/demo/core/module/{class_inheritor.rdoc → class_inheritor.md} +2 -2
  94. data/demo/core/module/{copy_inheritor.rdoc → copy_inheritor.md} +4 -4
  95. data/demo/core/module/include_as.md +31 -0
  96. data/demo/core/module/method_space.md +24 -0
  97. data/demo/core/string/acronym.md +9 -0
  98. data/demo/core/string/{align.rdoc → align.md} +10 -10
  99. data/demo/core/string/ascii_only.md +37 -0
  100. data/demo/core/string/{bracket.rdoc → bracket.md} +10 -10
  101. data/demo/core/string/camelcase.md +47 -0
  102. data/demo/core/string/{capitalized.rdoc → capitalized.md} +9 -9
  103. data/demo/core/string/characters.md +11 -0
  104. data/demo/core/string/{cleanlines.rdoc → cleanlines.md} +3 -3
  105. data/demo/core/string/cleave.md +49 -0
  106. data/demo/core/string/compress_lines.md +22 -0
  107. data/demo/core/string/crypt.md +15 -0
  108. data/demo/core/string/divide.md +9 -0
  109. data/demo/core/string/each_word.md +11 -0
  110. data/demo/core/string/edit_distance.md +15 -0
  111. data/demo/core/string/exclude.md +15 -0
  112. data/demo/core/string/expand_tabs.md +69 -0
  113. data/demo/core/string/fold.md +14 -0
  114. data/demo/core/string/indent.md +65 -0
  115. data/demo/core/string/index_all.md +14 -0
  116. data/demo/core/string/interpolate.md +8 -0
  117. data/demo/core/string/lchomp.md +14 -0
  118. data/demo/core/string/line_wrap.md +7 -0
  119. data/demo/core/string/lowercase.md +12 -0
  120. data/demo/core/string/methodize.md +22 -0
  121. data/demo/core/string/modulize.md +22 -0
  122. data/demo/core/string/mscan.md +10 -0
  123. data/demo/core/string/natcmp.md +10 -0
  124. data/demo/core/string/nchar.md +9 -0
  125. data/demo/core/string/{newlines.rdoc → newlines.md} +3 -3
  126. data/demo/core/string/number.md +27 -0
  127. data/demo/core/string/op_div.md +10 -0
  128. data/demo/core/string/op_sub.md +7 -0
  129. data/demo/core/string/pathize.md +22 -0
  130. data/demo/core/string/quote.md +20 -0
  131. data/demo/core/string/random.md +25 -0
  132. data/demo/core/string/range.md +19 -0
  133. data/demo/core/string/remove.md +33 -0
  134. data/demo/core/string/rewrite.md +9 -0
  135. data/demo/core/string/shatter.md +9 -0
  136. data/demo/core/string/similarity.md +12 -0
  137. data/demo/core/string/snakecase.md +14 -0
  138. data/demo/core/string/splice.md +28 -0
  139. data/demo/core/string/squish.md +27 -0
  140. data/demo/core/string/store.md +10 -0
  141. data/demo/core/string/subtract.md +8 -0
  142. data/demo/core/string/titlecase.md +8 -0
  143. data/demo/core/string/to_re.md +22 -0
  144. data/demo/core/string/{margin.rdoc → trim.md} +14 -14
  145. data/demo/core/string/unbracket.md +24 -0
  146. data/demo/core/string/underscore.md +17 -0
  147. data/demo/core/string/unfold.md +9 -0
  148. data/demo/core/string/unindent.md +65 -0
  149. data/demo/core/string/unquote.md +6 -0
  150. data/demo/core/string/uppercase.md +15 -0
  151. data/demo/core/string/variablize.md +7 -0
  152. data/demo/core/string/word_wrap.md +54 -0
  153. data/demo/core/string/words.md +13 -0
  154. data/demo/core/string/xor.md +8 -0
  155. data/lib/core/facets.yml +11 -7
  156. data/lib/core/facets/array.rb +1 -0
  157. data/lib/core/facets/array/average.rb +16 -0
  158. data/lib/core/facets/array/collapse.rb +4 -0
  159. data/lib/core/facets/array/delete_values_at.rb +1 -0
  160. data/lib/core/facets/array/divide.rb +7 -0
  161. data/lib/core/facets/array/duplicates.rb +2 -0
  162. data/lib/core/facets/array/each_pair.rb +1 -4
  163. data/lib/core/facets/array/first.rb +1 -0
  164. data/lib/core/facets/array/from.rb +11 -16
  165. data/lib/core/facets/array/intersection.rb +1 -1
  166. data/lib/core/facets/array/last.rb +1 -0
  167. data/lib/core/facets/array/mode.rb +2 -2
  168. data/lib/core/facets/array/occurrence.rb +4 -3
  169. data/lib/core/facets/array/op_pow.rb +0 -2
  170. data/lib/core/facets/array/probability.rb +1 -1
  171. data/lib/core/facets/array/recursively.rb +2 -2
  172. data/lib/core/facets/array/splice.rb +1 -1
  173. data/lib/core/facets/array/standard_deviation.rb +23 -0
  174. data/lib/core/facets/array/to_h.rb +0 -3
  175. data/lib/core/facets/array/uniq_by.rb +4 -0
  176. data/lib/core/facets/array/variance.rb +20 -0
  177. data/lib/core/facets/binding.rb +0 -1
  178. data/lib/core/facets/enumerable/cluster.rb +6 -4
  179. data/lib/core/facets/enumerable/hashify.rb +27 -31
  180. data/lib/core/facets/enumerable/sum.rb +12 -2
  181. data/lib/core/facets/file/atomic_open.rb +1 -1
  182. data/lib/core/facets/hash/except.rb +13 -1
  183. data/lib/core/facets/indexable.rb +1 -1
  184. data/lib/core/facets/kernel/ergo.rb +3 -3
  185. data/lib/core/facets/kernel/like.rb +1 -1
  186. data/lib/core/facets/matchdata/matchtree.rb +2 -0
  187. data/lib/core/facets/numeric/delimit.rb +20 -0
  188. data/lib/core/facets/range/nudge.rb +29 -0
  189. data/lib/core/facets/string.rb +0 -2
  190. data/lib/core/facets/string/indent.rb +0 -8
  191. data/lib/core/facets/string/margin.rb +0 -4
  192. data/lib/core/facets/string/random.rb +13 -3
  193. data/lib/core/facets/string/similarity.rb +7 -6
  194. data/lib/standard/facets/enumargs.rb +5 -0
  195. data/lib/standard/facets/math/percentile.rb +1 -1
  196. data/lib/standard/facets/net/http.rb +33 -14
  197. data/lib/standard/facets/timer.rb +3 -3
  198. data/test/core/array/test_average.rb +16 -0
  199. data/test/core/array/test_before.rb +21 -0
  200. data/test/core/array/test_collapse.rb +10 -1
  201. data/test/core/array/test_delete_unless.rb +17 -0
  202. data/test/core/array/test_delete_values.rb +31 -0
  203. data/test/core/array/test_divide.rb +10 -0
  204. data/test/core/array/test_each_pair.rb +16 -0
  205. data/test/core/array/test_each_value.rb +16 -0
  206. data/test/core/array/test_from.rb +42 -0
  207. data/test/core/array/test_op_pow.rb +13 -0
  208. data/test/core/array/test_standard_deviation.rb +18 -0
  209. data/test/core/array/test_to_h.rb +14 -0
  210. data/test/core/array/test_uniq_by.rb +7 -0
  211. data/test/core/array/test_variance.rb +17 -0
  212. data/test/core/array/test_zip.rb +13 -0
  213. data/test/core/dir/test_each_child.rb +1 -1
  214. data/test/core/dir/test_multiglob.rb +1 -1
  215. data/test/core/enumerable/test_cluster.rb +36 -0
  216. data/test/core/enumerable/test_hashify.rb +113 -0
  217. data/test/core/hash/test_expect.rb +11 -1
  218. data/test/core/kernel/test_ergo.rb +7 -5
  219. data/test/core/{object/test_replace.rb → kernel/test_instance_replace.rb} +6 -28
  220. data/test/core/numeric/test_delimit.rb +68 -0
  221. data/test/core/numeric/{test_round.rb → test_round_to.rb} +27 -27
  222. data/test/core/range/test_nudge.rb +32 -0
  223. data/test/core/range/{test_to_r.rb → test_to_rng.rb} +3 -3
  224. data/test/core/string/test_acronym.rb +14 -0
  225. data/test/core/string/test_ascii_only.rb +21 -0
  226. data/test/core/string/test_compress_lines.rb +9 -0
  227. data/test/core/string/test_crypt.rb +17 -0
  228. data/test/core/string/test_index_all.rb +4 -0
  229. data/test/core/string/test_random.rb +25 -0
  230. data/test/core/string/test_remove.rb +14 -0
  231. data/test/core/string/test_similarity.rb +9 -1
  232. data/test/core/struct/test_replace.rb +18 -0
  233. data/test/standard/test_enumargs.rb +26 -10
  234. data/test/standard/test_timer.rb +1 -1
  235. metadata +634 -588
  236. data/CONTRIBUTE.md +0 -78
  237. data/demo/core/array/combination.rdoc +0 -19
  238. data/demo/core/array/delete.rdoc +0 -23
  239. data/demo/core/array/index.rdoc +0 -14
  240. data/demo/core/array/merge.rdoc +0 -15
  241. data/demo/core/array/only.rdoc +0 -9
  242. data/demo/core/array/pad.rdoc +0 -28
  243. data/demo/core/array/permutation.rdoc +0 -10
  244. data/demo/core/array/product.rdoc +0 -26
  245. data/demo/core/array/recursively.rdoc +0 -16
  246. data/demo/core/array/rotate.rdoc +0 -30
  247. data/demo/core/array/select.rdoc +0 -8
  248. data/demo/core/array/uniq_by.rdoc +0 -9
  249. data/demo/core/binding/caller.rdoc +0 -57
  250. data/demo/core/binding/defined.rdoc +0 -10
  251. data/demo/core/binding/eval.rdoc +0 -8
  252. data/demo/core/binding/local_variables.rdoc +0 -26
  253. data/demo/core/binding/opvars.rdoc +0 -16
  254. data/demo/core/binding/self.rdoc +0 -6
  255. data/demo/core/class/descendants.rdoc +0 -10
  256. data/demo/core/class/to_proc.rdoc +0 -8
  257. data/demo/core/comparable/cap.rdoc +0 -20
  258. data/demo/core/comparable/clip.rdoc +0 -37
  259. data/demo/core/comparable/cmp.rdoc +0 -18
  260. data/demo/core/comparable/op_get.rdoc +0 -29
  261. data/demo/core/dir/ascend.rdoc +0 -24
  262. data/demo/core/dir/descend.rdoc +0 -14
  263. data/demo/core/dir/multiglob.rdoc +0 -41
  264. data/demo/core/dir/parent.rdoc +0 -6
  265. data/demo/core/dir/recurse.rdoc +0 -41
  266. data/demo/core/exception/detail.rdoc +0 -12
  267. data/demo/core/filetest/root.rdoc +0 -6
  268. data/demo/core/hash/recursively.rdoc +0 -21
  269. data/demo/core/indexable.rdoc +0 -95
  270. data/demo/core/integer/bitmask.rdoc +0 -46
  271. data/demo/core/integer/even.rdoc +0 -12
  272. data/demo/core/integer/odd.rdoc +0 -12
  273. data/demo/core/matchdata/match.rdoc +0 -7
  274. data/demo/core/matchdata/matchset.rdoc +0 -15
  275. data/demo/core/module/cattr.rdoc +0 -43
  276. data/demo/core/module/class_extend.rdoc +0 -64
  277. data/demo/core/module/method_space.rdoc +0 -55
  278. data/demo/core/string/bytes.rdoc +0 -8
  279. data/demo/core/string/camelcase.rdoc +0 -47
  280. data/demo/core/string/characters.rdoc +0 -11
  281. data/demo/core/string/cleave.rdoc +0 -49
  282. data/demo/core/string/divide.rdoc +0 -9
  283. data/demo/core/string/each_char.rdoc +0 -9
  284. data/demo/core/string/each_word.rdoc +0 -9
  285. data/demo/core/string/end_with.rdoc +0 -6
  286. data/demo/core/string/expand_tabs.rdoc +0 -69
  287. data/demo/core/string/fold.rdoc +0 -14
  288. data/demo/core/string/indent.rdoc +0 -65
  289. data/demo/core/string/interpolate.rdoc +0 -7
  290. data/demo/core/string/lchomp.rdoc +0 -14
  291. data/demo/core/string/line_wrap.rdoc +0 -7
  292. data/demo/core/string/lines.rdoc +0 -8
  293. data/demo/core/string/methodize.rdoc +0 -22
  294. data/demo/core/string/modulize.rdoc +0 -22
  295. data/demo/core/string/mscan.rdoc +0 -10
  296. data/demo/core/string/natcmp.rdoc +0 -10
  297. data/demo/core/string/nchar.rdoc +0 -9
  298. data/demo/core/string/op_sub.rdoc +0 -7
  299. data/demo/core/string/pathize.rdoc +0 -22
  300. data/demo/core/string/quote.rdoc +0 -20
  301. data/demo/core/string/range.rdoc +0 -19
  302. data/demo/core/string/rewrite.rdoc +0 -9
  303. data/demo/core/string/shatter.rdoc +0 -9
  304. data/demo/core/string/snakecase.rdoc +0 -10
  305. data/demo/core/string/splice.rdoc +0 -28
  306. data/demo/core/string/start_with.rdoc +0 -7
  307. data/demo/core/string/subtract.rdoc +0 -8
  308. data/demo/core/string/tab.rdoc +0 -16
  309. data/demo/core/string/tabto.rdoc +0 -29
  310. data/demo/core/string/titlecase.rdoc +0 -8
  311. data/demo/core/string/to_re.rdoc +0 -22
  312. data/demo/core/string/unfold.rdoc +0 -9
  313. data/demo/core/string/unindent.rdoc +0 -65
  314. data/demo/core/string/unquote.rdoc +0 -6
  315. data/demo/core/string/variablize.rdoc +0 -7
  316. data/demo/core/string/word_wrap.rdoc +0 -54
  317. data/demo/core/string/words.rdoc +0 -13
  318. data/demo/core/string/xor.rdoc +0 -8
  319. data/lib/core/facets/binding/local_variables.rb +0 -16
  320. data/lib/core/facets/string/tab.rb +0 -2
  321. data/lib/core/facets/string/tabto.rb +0 -2
  322. data/test/core/array/test_after.rb +0 -27
  323. data/test/core/array/test_combination.rb +0 -25
  324. data/test/core/array/test_index.rb +0 -20
  325. data/test/core/array/test_permutation.rb +0 -20
  326. data/test/core/array/test_product.rb +0 -64
  327. data/test/core/array/test_rotate.rb +0 -38
  328. data/test/core/array/test_select.rb +0 -16
  329. data/test/core/binding/test_eval.rb +0 -15
  330. data/test/core/binding/test_local_variables.rb +0 -36
  331. data/test/core/enumerable/test_cluster_by.rb +0 -30
  332. data/test/core/enumerable/test_count.rb +0 -32
  333. data/test/core/enumerable/test_each_with_object.rb +0 -18
  334. data/test/core/enumerable/test_group_by.rb +0 -36
  335. data/test/core/enumerable/test_none.rb +0 -29
  336. data/test/core/enumerable/test_one.rb +0 -34
  337. data/test/core/enumerable/test_take.rb +0 -15
  338. data/test/core/hash/test_select.rb +0 -44
  339. data/test/core/hash/test_url_params.rb +0 -26
  340. data/test/core/integer/test_even.rb +0 -24
  341. data/test/core/integer/test_odd.rb +0 -24
  342. data/test/core/kernel/test_require_relative.rb +0 -12
  343. data/test/core/nilclass/test_to_f.rb +0 -13
  344. data/test/core/proc/test_curry.rb +0 -38
  345. data/test/core/string/test_bytes.rb +0 -13
  346. data/test/core/string/test_each_char.rb +0 -17
  347. data/test/core/string/test_end_with.rb +0 -24
  348. data/test/core/string/test_lines.rb +0 -15
  349. data/test/core/string/test_start_with.rb +0 -24
  350. data/test/core/string/test_tab.rb +0 -16
  351. data/test/core/symbol/test_to_proc.rb +0 -35
  352. data/test/core/to_hash_tc.rb +0 -210
  353. data/test/core/unboundmethod/test_name.rb +0 -19
@@ -1,12 +0,0 @@
1
- == Integer#odd?
2
-
3
- require 'facets/integer/odd'
4
-
5
- (-101..101).step(2) do |n|
6
- n.odd?.assert == true
7
- end
8
-
9
- (-100..100).step(2) do |n|
10
- n.odd?.assert == false
11
- end
12
-
@@ -1,7 +0,0 @@
1
- = MatchData#match
2
-
3
- require 'facets/matchdata/match'
4
-
5
- md = /X(a)(b)(c)X/.match("YXabcXY")
6
- md.match.assert == "XabcX"
7
-
@@ -1,15 +0,0 @@
1
- == MatchData#matchtree
2
-
3
- require 'facets/matchdata/matchset'
4
-
5
- md = /(bb)(cc(dd))(ee)/.match "XXaabbccddeeffXX"
6
- md.matchtree.assert == [["bb"], ["cc", ["dd"]], ["ee"]]
7
-
8
- md = /(bb)c(c(dd))(ee)/.match "XXaabbccddeeffXX"
9
- md.matchtree.assert == [["bb"], "c", ["c", ["dd"]], ["ee"]]
10
-
11
- == MatchData#matchset
12
-
13
- md = /(bb)(cc(dd))(ee)/.match "XXaabbccddeeffXX"
14
- md.matchset.assert == ["XXaa", [["bb"], ["cc", ["dd"]], ["ee"]], "ffXX"]
15
-
@@ -1,43 +0,0 @@
1
- == Class#cattr
2
-
3
- require 'facets/module/cattr'
4
-
5
- class CAttrMockObject
6
- def initialize
7
- @@a = 10
8
- end
9
- def b ; @@b ; end
10
- end
11
-
12
- Exception.refute.raised? do
13
- CAttrMockObject.class_eval{ cattr :a }
14
- end
15
- t = CAttrMockObject.new
16
- t.a.assert == 10
17
-
18
- == Class#cattr_reader
19
-
20
- Exception.refute.raised? do
21
- CAttrMockObject.class_eval { cattr_reader :a }
22
- end
23
- t = CAttrMockObject.new
24
- t.a.assert == 10
25
-
26
- == Class#cattr_writer
27
-
28
- Exception.refute.raised? do
29
- CAttrMockObject.class_eval { cattr_writer :b }
30
- end
31
- t = CAttrMockObject.new
32
- t.b = 5
33
- t.b.assert == 5
34
-
35
- == Class#cattr_accessor
36
-
37
- Exception.refute.raised? do
38
- CAttrMockObject.class_eval { cattr_accessor :c }
39
- end
40
- t = CAttrMockObject.new
41
- t.c = 50
42
- t.c.assert == 50
43
-
@@ -1,64 +0,0 @@
1
- == Module#class_extend
2
-
3
- require 'facets/module/class_extend'
4
-
5
- Module using class_extend
6
-
7
- mix = Module.new do
8
- def i ; end
9
- class_extend do
10
- def n ; 42 ; end
11
- def s ; self ; end
12
- end
13
- end
14
-
15
- Extends module
16
-
17
- mix.n.assert == 42
18
- mix.s.assert == mix
19
-
20
- Has expected methods
21
-
22
- mix.instance_methods.map{ |m| m.to_s }.assert == ['i']
23
-
24
- transfers class methods to including class
25
-
26
- mod = Module.new do
27
- include mix
28
- end
29
- mod.n.assert == 42
30
- mod.s.assert == mod
31
-
32
- Doesn't overwrite instance methods
33
-
34
- c = Class.new do
35
- include mix
36
- def n ; 11 ; end
37
- end
38
- c.new.n.assert == 11
39
-
40
- Is overridable via including module
41
-
42
- mod = Module.new do
43
- include mix
44
- class_extend do
45
- def n ; super + 1 ; end
46
- end
47
- end
48
- mod.n.assert == 43 # notice the difference!
49
- mod.s.assert == mod
50
-
51
- Transfers class methods thru multiple levels of include
52
-
53
- alt = Module.new do
54
- include mix
55
- class_extend do
56
- def n ; super + 1 ; end
57
- end
58
- end
59
- mod = Module.new do
60
- include alt
61
- end
62
- mod.n.assert == 43
63
- mod.s.assert == mod
64
-
@@ -1,55 +0,0 @@
1
- == Module#method_space
2
-
3
- require 'facets/module/method_space'
4
-
5
- class A
6
- attr_writer :x
7
- method_space :inside do
8
- def x; @x; end
9
- end
10
- end
11
-
12
- a = A.new
13
- a.x = 10
14
-
15
- We can see that the `inside` method space has access to the instance space.
16
-
17
- a.inside.x #=> 10
18
-
19
- But there is no reader in the instance space.
20
-
21
- expect NoMethodError do
22
- a.x
23
- end
24
-
25
- == Module#include_as
26
-
27
- require 'facets/module/include_as'
28
-
29
- Module#include_as utilizes #method_space to allow modules to be included
30
- within a separated namespace.
31
-
32
- module T
33
- def t ; "Tt" ; end
34
- def r ; "Tr" ; end
35
- def q ; super ; end
36
- end
37
-
38
- class N
39
- def q ; "Nq" ; end
40
- end
41
-
42
- class X < N
43
- include_as :test => T
44
-
45
- def n ; test.inspect ; end
46
- def m ; test.t ; end
47
- def o ; test.r ; end
48
- end
49
-
50
- x = X.new
51
-
52
- x.m.assert == "Tt"
53
- x.o.assert == "Tr"
54
- x.q.assert == "Nq"
55
-
@@ -1,8 +0,0 @@
1
- == String#bytes
2
-
3
- require 'facets/string/bytes'
4
-
5
- s = "abc"
6
-
7
- s.bytes.to_a.assert == s.unpack('C*')
8
-
@@ -1,47 +0,0 @@
1
- == String#Camelcase
2
-
3
- require 'facets/string/camelcase'
4
-
5
- The `camelcase` method converts snakecase strings into camelcase strings.
6
-
7
- "abc_xyz".camelcase.assert == "abcXyz"
8
-
9
- Continious underscore characters are treated as if a single underscore
10
- character.
11
-
12
- "abc____xyz".camelcase.assert == "abcXyz"
13
-
14
- Without an argument the first character is left alone.
15
-
16
- "Camel_case".camelcase.assert == "CamelCase"
17
-
18
- Passing +:upper+ or +true+ to #camelcase captializes the first letter.
19
- This is known as upper-camelcase.
20
-
21
- "Abc_xyz".camelcase(true).assert == "AbcXyz"
22
- "Abc____xyz".camelcase(:upper).assert == "AbcXyz"
23
-
24
- Where as passing +false+ or +:lower+ downcases the first character,
25
- known as lower-camelcase.
26
-
27
- "abc_xyz".camelcase(false).assert == "abcXyz"
28
- "abc____xyz".camelcase(false).assert == "abcXyz"
29
- "Abc_xyz".camelcase(:lower).assert == "abcXyz"
30
- "Abc____xyz".camelcase(:lower).assert == "abcXyz"
31
-
32
- By passing a match string to the method we can make +camelcase+
33
- apply to each word in a string.
34
-
35
- "abc xyz".camelcase(' ').assert == "abcXyz"
36
- "abc xyz".camelcase(/\s/).assert == "abcXyz"
37
- "abc\txyz".camelcase(/\s/).assert == "abcXyz"
38
- "abc\nxyz".camelcase(/\s/).assert == "abcXyz"
39
-
40
- == String#lower_camelcase
41
-
42
- "abc_xyz".lower_camelcase.assert == "abcXyz"
43
-
44
- == String#upper_camelcase
45
-
46
- "abc_xyz".upper_camelcase.assert == "AbcXyz"
47
-
@@ -1,11 +0,0 @@
1
- == String#characters
2
-
3
- The String#chars methods simply splits a string into
4
- an Array of character strings.
5
-
6
- require 'facets/string/characters'
7
-
8
- "abc".characters.assert == ["a","b","c"]
9
-
10
- "ab\nc".characters.assert == ["a","b","\n","c"]
11
-
@@ -1,49 +0,0 @@
1
- == String#cleave
2
-
3
- require 'facets/string/cleave'
4
-
5
- no spaces short word
6
-
7
- s, x = 'whole', ['whole', '']
8
- s.cleave.assert == x
9
-
10
- no spaces long word
11
-
12
- s, x = 'Supercalifragilisticexpialidocious' , ['Supercalifragilisticexpialidocious', '']
13
- s.cleave.assert == x
14
-
15
- exact middle two words
16
-
17
- s, x = 'fancy split', ['fancy', 'split']
18
- s.cleave.assert == x
19
-
20
- exact middle many words
21
-
22
- s, x = 'All good Rubyists know how to party', ['All good Rubyists', 'know how to party']
23
- s.cleave.assert == x
24
-
25
- closer to start
26
-
27
- s, x = 'short splitter', ['short', 'splitter']
28
- s.cleave.assert == x
29
-
30
- closer to start
31
-
32
- s, x = 'Four score and seven years ago...', ['Four score and', 'seven years ago...']
33
- s.cleave.assert == x
34
-
35
- closer to start
36
-
37
- s, x = 'abc def ghijklm nop', ['abc def', 'ghijklm nop']
38
- s.cleave.assert == x
39
-
40
- closer to end
41
-
42
- s, x = 'extended split', ['extended', 'split']
43
- s.cleave.assert == x
44
-
45
- closer to end
46
-
47
- s, x = 'abc defghi jklm nop', [ 'abc defghi', 'jklm nop']
48
- s.cleave.assert == x
49
-
@@ -1,9 +0,0 @@
1
- == String#divide
2
-
3
- require 'facets/string/divide'
4
-
5
- s = "<p>This<b>is</b>a test.</p>"
6
- d = s.divide(/<.*?>/)
7
- e = ["<p>This", "<b>is", "</b>a test.", "</p>"]
8
- d.assert == e
9
-
@@ -1,9 +0,0 @@
1
- == String#each_char
2
-
3
- require 'facets/string/each_char'
4
-
5
- a = []
6
- i = "this"
7
- i.each_char{ |w| a << w }
8
- a.assert == ['t', 'h', 'i', 's']
9
-
@@ -1,9 +0,0 @@
1
- == String#each_word
2
-
3
- require 'facets/string/each_word'
4
-
5
- a = []
6
- i = "this is a test"
7
- i.each_word{ |w| a << w }
8
- a.assert == ['this', 'is', 'a', 'test']
9
-
@@ -1,6 +0,0 @@
1
- = String#end_with?
2
-
3
- require 'facets/string/end_with'
4
-
5
- "xxboo".assert.end_with?('boo')
6
-
@@ -1,69 +0,0 @@
1
- == String#expand_tab
2
-
3
- require 'facets/string/expand_tab'
4
-
5
- We will use this string as a basis for demonstration.
6
-
7
- tabs = <<-EOF.gsub(/^\s+\|/, '')
8
- |
9
- |\tOne tab
10
- | \tOne space and one tab
11
- | \t Six spaces, a tab, and a space
12
- EOF
13
-
14
- Expanding tabs 0.
15
-
16
- expected = <<-EOF.gsub(/^\s+\|/, '')
17
- |
18
- |One tab
19
- | One space and one tab
20
- | Six spaces, a tab, and a space
21
- EOF
22
-
23
- tabs.expand_tabs(0).assert == expected
24
-
25
- Expanding tabs 1.
26
-
27
- expected = <<-EOF.gsub(/^\s+\|/, '')
28
- |
29
- | One tab
30
- | One space and one tab
31
- | Six spaces, a tab, and a space
32
- EOF
33
-
34
- tabs.expand_tabs(1).assert == expected
35
-
36
- Expanding tabs 4.
37
-
38
- expected = <<-EOF.gsub(/^\s+\|/, '')
39
- |
40
- | One tab
41
- | One space and one tab
42
- | Six spaces, a tab, and a space
43
- EOF
44
-
45
- tabs.expand_tabs(4).assert == expected
46
-
47
- Expanding tabs 8.
48
-
49
- expected = <<-EOF.gsub(/^\s+\|/, '')
50
- |
51
- | One tab
52
- | One space and one tab
53
- | Six spaces, a tab, and a space
54
- EOF
55
-
56
- tabs.expand_tabs.assert == expected
57
- tabs.expand_tabs(8).assert == expected
58
-
59
- Expanding tabs 16.
60
-
61
- expected = <<-EOF.gsub(/^\s+\|/, '')
62
- |
63
- | One tab
64
- | One space and one tab
65
- | Six spaces, a tab, and a space
66
- EOF
67
-
68
- tabs.expand_tabs(16).assert == expected
69
-
@@ -1,14 +0,0 @@
1
- == String#fold
2
-
3
- require 'facets/string/fold'
4
-
5
- s = "This is\na test.\n\nIt clumps\nlines of text."
6
- o = "This is a test.\n\nIt clumps lines of text."
7
- s.fold.assert == o
8
-
9
- leave spaces
10
-
11
- s = "This is\na test.\n\n This is pre.\n Leave alone.\n\nIt clumps\nlines of text."
12
- o = "This is a test.\n\n This is pre.\n Leave alone.\n\nIt clumps lines of text."
13
- s.fold(true).assert == o
14
-