facets 3.1.0 → 3.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 (755) hide show
  1. checksums.yaml +5 -5
  2. data/HISTORY.md +141 -0
  3. data/LICENSE.txt +21 -343
  4. data/README.md +26 -19
  5. data/lib/core/facets/array/arrange.rb +1 -42
  6. data/lib/core/facets/array/average.rb +0 -1
  7. data/lib/core/facets/array/before.rb +1 -1
  8. data/lib/core/facets/array/delete_first.rb +21 -0
  9. data/lib/core/facets/array/duplicates.rb +13 -0
  10. data/lib/core/facets/array/indexes.rb +113 -0
  11. data/lib/core/facets/array/nonuniq.rb +6 -8
  12. data/lib/core/facets/array/occurrence.rb +4 -1
  13. data/lib/core/facets/array/remove.rb +39 -0
  14. data/lib/core/facets/array/span.rb +29 -0
  15. data/lib/core/facets/array/split_at.rb +25 -0
  16. data/lib/core/facets/array/standard_deviation.rb +7 -2
  17. data/lib/core/facets/array/step.rb +12 -14
  18. data/lib/core/facets/array/to_ranges.rb +48 -0
  19. data/lib/core/facets/array/uniq_by.rb +3 -3
  20. data/lib/core/facets/binding/caller.rb +8 -2
  21. data/lib/core/facets/binding/op_get.rb +7 -11
  22. data/lib/core/facets/binding/self.rb +4 -10
  23. data/lib/core/facets/boolean.rb +1 -1
  24. data/lib/core/facets/class/descendants.rb +0 -2
  25. data/lib/core/facets/class.rb +2 -2
  26. data/lib/core/facets/comparable/bound.rb +13 -1
  27. data/lib/core/facets/comparable/clip.rb +3 -32
  28. data/lib/core/facets/denumerable.rb +0 -3
  29. data/lib/core/facets/dir/find.rb +20 -0
  30. data/lib/core/facets/dir/recurse.rb +8 -26
  31. data/lib/core/facets/enumerable/compact_map.rb +2 -12
  32. data/lib/core/facets/enumerable/defer.rb +2 -13
  33. data/lib/core/facets/enumerable/each_by.rb +0 -2
  34. data/lib/core/facets/enumerable/frequency.rb +2 -2
  35. data/lib/core/facets/enumerable/hinge.rb +3 -4
  36. data/lib/core/facets/enumerable/map_with_index.rb +3 -6
  37. data/lib/core/facets/enumerable/mash.rb +5 -28
  38. data/lib/core/facets/enumerable/uniq_by.rb +4 -8
  39. data/lib/core/facets/enumerable/with_position.rb +58 -0
  40. data/lib/core/facets/enumerator.rb +2 -75
  41. data/lib/core/facets/exception/error_print.rb +6 -71
  42. data/lib/core/facets/file/null.rb +3 -15
  43. data/lib/core/facets/file/read_binary.rb +3 -12
  44. data/lib/core/facets/hash/except.rb +0 -7
  45. data/lib/core/facets/hash/fetch_nested.rb +8 -9
  46. data/lib/core/facets/hash/graph.rb +1 -1
  47. data/lib/core/facets/hash/rekey.rb +3 -3
  48. data/lib/core/facets/hash/revalue.rb +3 -3
  49. data/lib/core/facets/hash/{to_proc.rb → setter.rb} +8 -9
  50. data/lib/core/facets/hash/slice.rb +0 -26
  51. data/lib/core/facets/hash/update_keys.rb +4 -11
  52. data/lib/core/facets/hash/update_values.rb +4 -10
  53. data/lib/core/facets/indexable.rb +6 -4
  54. data/lib/core/facets/kernel/callstack.rb +5 -24
  55. data/lib/core/facets/kernel/eigenclass.rb +6 -6
  56. data/lib/core/facets/kernel/extension.rb +3 -6
  57. data/lib/core/facets/kernel/functor.rb +16 -0
  58. data/lib/core/facets/kernel/instance_class.rb +4 -20
  59. data/lib/core/facets/kernel/instance_send.rb +5 -3
  60. data/lib/core/facets/kernel/load_relative.rb +8 -20
  61. data/lib/core/facets/kernel/memo.rb +4 -26
  62. data/lib/core/facets/kernel/meta_class.rb +10 -6
  63. data/lib/core/facets/kernel/object_class.rb +5 -6
  64. data/lib/core/facets/kernel/object_send.rb +5 -26
  65. data/lib/core/facets/kernel/qua_class.rb +4 -20
  66. data/lib/core/facets/kernel/require_all.rb +8 -20
  67. data/lib/core/facets/kernel/returning.rb +3 -19
  68. data/lib/core/facets/kernel/tap.rb +3 -36
  69. data/lib/core/facets/kernel/tee.rb +2 -0
  70. data/lib/core/facets/kernel/try.rb +38 -28
  71. data/lib/core/facets/kernel.rb +2 -4
  72. data/lib/core/facets/lazy.rb +1 -1
  73. data/lib/core/facets/module/alias_method_chain.rb +4 -43
  74. data/lib/core/facets/module/attr_setter.rb +3 -2
  75. data/lib/core/facets/module/can.rb +5 -16
  76. data/lib/core/facets/module/class_extend.rb +2 -2
  77. data/lib/core/facets/object/dup.rb +0 -46
  78. data/lib/core/facets/proc/bind.rb +0 -2
  79. data/lib/core/facets/proc/compose.rb +7 -28
  80. data/lib/core/facets/proc/to_method.rb +0 -1
  81. data/lib/core/facets/proc/update.rb +8 -1
  82. data/lib/core/facets/range/intersection.rb +42 -0
  83. data/lib/core/facets/range/nudge.rb +6 -8
  84. data/lib/core/facets/string/ascii_only.rb +2 -2
  85. data/lib/core/facets/string/cleanlines.rb +0 -2
  86. data/lib/core/facets/string/dashcase.rb +21 -0
  87. data/lib/core/facets/string/lchomp.rb +7 -14
  88. data/lib/core/facets/string/newlines.rb +0 -2
  89. data/lib/core/facets/string/snakecase.rb +12 -5
  90. data/lib/core/facets/string/words.rb +13 -1
  91. data/lib/core/facets/string.rb +0 -1
  92. data/lib/core/facets/struct/attributes.rb +2 -3
  93. data/lib/core/facets/time/trunc.rb +12 -5
  94. data/lib/core/facets/unboundmethod/arguments.rb +1 -0
  95. data/lib/core/facets/version.rb +1 -17
  96. data/lib/core/facets.rb +0 -1
  97. data/lib/standard/facets/argvector.rb +1 -1
  98. data/lib/standard/facets/cgi/escape_html.rb +14 -25
  99. data/lib/standard/facets/cloneable.rb +4 -51
  100. data/lib/standard/facets/continuation.rb +2 -56
  101. data/lib/standard/facets/crypt3.rb +126 -0
  102. data/lib/standard/facets/date/cmp.rb +32 -0
  103. data/lib/standard/facets/date.rb +1 -0
  104. data/lib/standard/facets/digest.rb +0 -1
  105. data/lib/standard/facets/fileutils/cp_rx.rb +0 -2
  106. data/lib/standard/facets/fileutils/ln_r.rb +0 -1
  107. data/lib/standard/facets/find/select.rb +0 -2
  108. data/lib/standard/facets/getoptlong.rb +3 -59
  109. data/lib/standard/facets/load_monitor.rb +2 -26
  110. data/lib/standard/facets/math/gini_coefficient.rb +5 -4
  111. data/lib/standard/facets/math/kldivergence.rb +8 -7
  112. data/lib/standard/facets/math/percentile.rb +1 -1
  113. data/lib/standard/facets/multiton.rb +1 -1
  114. data/lib/standard/facets/ostruct/initialize.rb +4 -19
  115. data/lib/standard/facets/ostruct/to_ostruct.rb +2 -1
  116. data/lib/standard/facets/ostruct.rb +0 -88
  117. data/lib/standard/facets/pathname/empty.rb +2 -10
  118. data/lib/standard/facets/pathname/glob.rb +19 -12
  119. data/lib/standard/facets/pathname/null.rb +3 -14
  120. data/lib/standard/facets/random.rb +47 -133
  121. data/lib/standard/facets/tuple.rb +2 -4
  122. data/lib/standard/facets/uri.rb +3 -2
  123. metadata +29 -1172
  124. data/.index +0 -80
  125. data/.yardopts +0 -10
  126. data/NOTICE.rdoc +0 -167
  127. data/demo/applique/assertion_framework.rb +0 -1
  128. data/demo/applique/file_helpers.rb +0 -34
  129. data/demo/core/array/after.md +0 -13
  130. data/demo/core/array/arrange.md +0 -17
  131. data/demo/core/array/before.md +0 -14
  132. data/demo/core/array/collapse.md +0 -15
  133. data/demo/core/array/collisions.md +0 -30
  134. data/demo/core/array/commonality.md +0 -31
  135. data/demo/core/array/conjoin.md +0 -47
  136. data/demo/core/array/contains.md +0 -9
  137. data/demo/core/array/delete_unless.md +0 -13
  138. data/demo/core/array/delete_values.md +0 -10
  139. data/demo/core/array/delete_values_at.md +0 -15
  140. data/demo/core/array/divide.md +0 -14
  141. data/demo/core/array/duplicates.md +0 -14
  142. data/demo/core/array/each_overlap.md +0 -12
  143. data/demo/core/array/each_pair.md +0 -13
  144. data/demo/core/array/each_value.md +0 -12
  145. data/demo/core/array/entropy.md +0 -13
  146. data/demo/core/array/extract_options.md +0 -13
  147. data/demo/core/array/first.md +0 -11
  148. data/demo/core/array/from.md +0 -11
  149. data/demo/core/array/ideal_entropy.md +0 -11
  150. data/demo/core/array/intersection.md +0 -11
  151. data/demo/core/array/last.md +0 -11
  152. data/demo/core/array/median.md +0 -23
  153. data/demo/core/array/merge.md +0 -15
  154. data/demo/core/array/missing.md +0 -10
  155. data/demo/core/array/mode.md +0 -9
  156. data/demo/core/array/nonuniq.md +0 -16
  157. data/demo/core/array/not_empty.md +0 -8
  158. data/demo/core/array/occur.md +0 -18
  159. data/demo/core/array/occurrence.md +0 -13
  160. data/demo/core/array/only.md +0 -9
  161. data/demo/core/array/op_pow.md +0 -10
  162. data/demo/core/array/pad.md +0 -28
  163. data/demo/core/array/peek.md +0 -10
  164. data/demo/core/array/poke.md +0 -15
  165. data/demo/core/array/probability +0 -8
  166. data/demo/core/array/pull.md +0 -10
  167. data/demo/core/array/recurse.md +0 -10
  168. data/demo/core/array/recursively.md +0 -20
  169. data/demo/core/array/reject_values.md +0 -10
  170. data/demo/core/array/splice.md +0 -14
  171. data/demo/core/array/split.md +0 -13
  172. data/demo/core/array/squeeze.md +0 -14
  173. data/demo/core/array/step.md +0 -16
  174. data/demo/core/array/store.md +0 -9
  175. data/demo/core/array/thru.md +0 -12
  176. data/demo/core/array/to_h.md +0 -11
  177. data/demo/core/array/traverse.md +0 -20
  178. data/demo/core/array/uniq_by.md +0 -16
  179. data/demo/core/array/unique_permutation.md +0 -14
  180. data/demo/core/array/zip.md +0 -8
  181. data/demo/core/binding/caller.md +0 -57
  182. data/demo/core/binding/defined.md +0 -10
  183. data/demo/core/binding/opvars.md +0 -16
  184. data/demo/core/binding/self.md +0 -6
  185. data/demo/core/class/descendants.md +0 -13
  186. data/demo/core/class/to_proc.md +0 -11
  187. data/demo/core/comparable/at_least.md +0 -11
  188. data/demo/core/comparable/at_most.md +0 -11
  189. data/demo/core/comparable/bound.md +0 -13
  190. data/demo/core/comparable/cap.md +0 -11
  191. data/demo/core/comparable/clip.md +0 -29
  192. data/demo/core/comparable/cmp.md +0 -18
  193. data/demo/core/comparable/op_get.md +0 -32
  194. data/demo/core/dir/ascend.md +0 -24
  195. data/demo/core/dir/descend.md +0 -16
  196. data/demo/core/dir/multiglob.md +0 -41
  197. data/demo/core/dir/parent.md +0 -6
  198. data/demo/core/dir/recurse.md +0 -41
  199. data/demo/core/exception/detail.md +0 -19
  200. data/demo/core/facets.md +0 -6
  201. data/demo/core/filetest/root.md +0 -13
  202. data/demo/core/hash/recursively.md +0 -21
  203. data/demo/core/indexable.md +0 -95
  204. data/demo/core/integer/bitmask.md +0 -46
  205. data/demo/core/integer/factorial.md +0 -10
  206. data/demo/core/integer/length.md +0 -7
  207. data/demo/core/integer/multiple.md +0 -12
  208. data/demo/core/integer/of.md +0 -11
  209. data/demo/core/integer/ordinal.md +0 -11
  210. data/demo/core/integer/times_collect.md +0 -9
  211. data/demo/core/matchdata/match.md +0 -7
  212. data/demo/core/matchdata/matchset.md +0 -7
  213. data/demo/core/matchdata/matchtree.md +0 -10
  214. data/demo/core/module/cattr.md +0 -43
  215. data/demo/core/module/class_extend.md +0 -64
  216. data/demo/core/module/class_inheritor.md +0 -126
  217. data/demo/core/module/copy_inheritor.md +0 -30
  218. data/demo/core/module/include_as.md +0 -31
  219. data/demo/core/module/method_space.md +0 -24
  220. data/demo/core/string/acronym.md +0 -9
  221. data/demo/core/string/align.md +0 -34
  222. data/demo/core/string/ascii_only.md +0 -37
  223. data/demo/core/string/bracket.md +0 -35
  224. data/demo/core/string/camelcase.md +0 -47
  225. data/demo/core/string/capitalized.md +0 -27
  226. data/demo/core/string/characters.md +0 -11
  227. data/demo/core/string/cleanlines.md +0 -10
  228. data/demo/core/string/cleave.md +0 -49
  229. data/demo/core/string/compress_lines.md +0 -22
  230. data/demo/core/string/crypt.md +0 -15
  231. data/demo/core/string/divide.md +0 -9
  232. data/demo/core/string/each_word.md +0 -11
  233. data/demo/core/string/edit_distance.md +0 -15
  234. data/demo/core/string/exclude.md +0 -15
  235. data/demo/core/string/expand_tabs.md +0 -69
  236. data/demo/core/string/fold.md +0 -14
  237. data/demo/core/string/indent.md +0 -65
  238. data/demo/core/string/index_all.md +0 -14
  239. data/demo/core/string/interpolate.md +0 -8
  240. data/demo/core/string/lchomp.md +0 -14
  241. data/demo/core/string/line_wrap.md +0 -7
  242. data/demo/core/string/lowercase.md +0 -12
  243. data/demo/core/string/methodize.md +0 -22
  244. data/demo/core/string/modulize.md +0 -22
  245. data/demo/core/string/mscan.md +0 -10
  246. data/demo/core/string/natcmp.md +0 -10
  247. data/demo/core/string/nchar.md +0 -9
  248. data/demo/core/string/newlines.md +0 -9
  249. data/demo/core/string/number.md +0 -27
  250. data/demo/core/string/op_div.md +0 -10
  251. data/demo/core/string/op_sub.md +0 -7
  252. data/demo/core/string/pathize.md +0 -22
  253. data/demo/core/string/quote.md +0 -20
  254. data/demo/core/string/random.md +0 -25
  255. data/demo/core/string/range.md +0 -19
  256. data/demo/core/string/remove.md +0 -33
  257. data/demo/core/string/rewrite.md +0 -9
  258. data/demo/core/string/shatter.md +0 -9
  259. data/demo/core/string/similarity.md +0 -12
  260. data/demo/core/string/snakecase.md +0 -14
  261. data/demo/core/string/splice.md +0 -28
  262. data/demo/core/string/squish.md +0 -27
  263. data/demo/core/string/store.md +0 -10
  264. data/demo/core/string/subtract.md +0 -8
  265. data/demo/core/string/titlecase.md +0 -8
  266. data/demo/core/string/to_re.md +0 -22
  267. data/demo/core/string/trim.md +0 -92
  268. data/demo/core/string/unbracket.md +0 -24
  269. data/demo/core/string/underscore.md +0 -17
  270. data/demo/core/string/unfold.md +0 -9
  271. data/demo/core/string/unindent.md +0 -65
  272. data/demo/core/string/unquote.md +0 -6
  273. data/demo/core/string/uppercase.md +0 -15
  274. data/demo/core/string/variablize.md +0 -7
  275. data/demo/core/string/word_wrap.md +0 -54
  276. data/demo/core/string/words.md +0 -13
  277. data/demo/core/string/xor.md +0 -8
  278. data/demo/standard/02_cloneable.rdoc +0 -46
  279. data/demo/standard/03_enumargs.rdoc +0 -75
  280. data/demo/standard/04_equitable.rdoc +0 -35
  281. data/demo/standard/05_instantiable.rdoc +0 -42
  282. data/demo/standard/basic_object.rdoc +0 -22
  283. data/demo/standard/memoizable.rdoc +0 -134
  284. data/demo/standard/mulititon.rdoc +0 -156
  285. data/lib/core/facets/applique/file_helpers.rb +0 -33
  286. data/lib/core/facets/array/intersection.rb +0 -25
  287. data/lib/core/facets/array/op_pow.rb +0 -12
  288. data/lib/core/facets/array/to_h.rb +0 -19
  289. data/lib/core/facets/class/singleton.rb +0 -1
  290. data/lib/core/facets/class/singleton_class.rb +0 -16
  291. data/lib/core/facets/class/subclasses.rb +0 -28
  292. data/lib/core/facets/dir/each_child.rb +0 -16
  293. data/lib/core/facets/enumerable/filter.rb +0 -33
  294. data/lib/core/facets/enumerable/sum.rb +0 -40
  295. data/lib/core/facets/exception/set_message.rb +0 -10
  296. data/lib/core/facets/file/write.rb +0 -24
  297. data/lib/core/facets/fixnum.rb +0 -7
  298. data/lib/core/facets/kernel/__dir__.rb +0 -28
  299. data/lib/core/facets/kernel/constant.rb +0 -22
  300. data/lib/core/facets/kernel/instance_exec.rb +0 -47
  301. data/lib/core/facets/kernel/p.rb +0 -24
  302. data/lib/core/facets/kernel/singleton_class.rb +0 -10
  303. data/lib/core/facets/matchdata/match.rb +0 -15
  304. data/lib/core/facets/method/curry.rb +0 -13
  305. data/lib/core/facets/numeric/negative.rb +0 -1
  306. data/lib/core/facets/numeric/positive.rb +0 -15
  307. data/lib/core/facets/object/itself.rb +0 -16
  308. data/lib/core/facets/object/try_dup.rb +0 -1
  309. data/lib/core/facets/process/daemon.rb +0 -32
  310. data/lib/core/facets/range/overlap.rb +0 -12
  311. data/lib/core/facets/string/characters.rb +0 -13
  312. data/lib/core/facets/string/crypt.rb +0 -22
  313. data/lib/core/facets/symbol/succ.rb +0 -23
  314. data/lib/core/facets.yml +0 -80
  315. data/lib/standard/facets/basicobject.rb +0 -75
  316. data/lib/standard/facets/digest/base64digest.rb +0 -45
  317. data/lib/standard/facets/ostruct/each.rb +0 -11
  318. data/lib/standard/facets/ostruct/merge.rb +0 -21
  319. data/lib/standard/facets/ostruct/op_fetch.rb +0 -29
  320. data/lib/standard/facets/ostruct/op_store.rb +0 -1
  321. data/lib/standard/facets/ostruct/to_h.rb +0 -10
  322. data/test/core/array/test_arrange.rb +0 -37
  323. data/test/core/array/test_average.rb +0 -16
  324. data/test/core/array/test_before.rb +0 -48
  325. data/test/core/array/test_collapse.rb +0 -23
  326. data/test/core/array/test_commonality.rb +0 -35
  327. data/test/core/array/test_conjoin.rb +0 -50
  328. data/test/core/array/test_contains.rb +0 -14
  329. data/test/core/array/test_delete.rb +0 -42
  330. data/test/core/array/test_delete_unless.rb +0 -17
  331. data/test/core/array/test_delete_values.rb +0 -31
  332. data/test/core/array/test_divide.rb +0 -24
  333. data/test/core/array/test_duplicates.rb +0 -29
  334. data/test/core/array/test_each_overlap.rb +0 -31
  335. data/test/core/array/test_each_pair.rb +0 -16
  336. data/test/core/array/test_each_value.rb +0 -16
  337. data/test/core/array/test_entropy.rb +0 -23
  338. data/test/core/array/test_extract_options.rb +0 -28
  339. data/test/core/array/test_first.rb +0 -17
  340. data/test/core/array/test_from.rb +0 -42
  341. data/test/core/array/test_intersection.rb +0 -19
  342. data/test/core/array/test_last.rb +0 -17
  343. data/test/core/array/test_median.rb +0 -27
  344. data/test/core/array/test_merge.rb +0 -27
  345. data/test/core/array/test_missing.rb +0 -12
  346. data/test/core/array/test_mode.rb +0 -17
  347. data/test/core/array/test_nonuniq.rb +0 -25
  348. data/test/core/array/test_not_empty.rb +0 -17
  349. data/test/core/array/test_occur.rb +0 -52
  350. data/test/core/array/test_occurrence.rb +0 -20
  351. data/test/core/array/test_only.rb +0 -17
  352. data/test/core/array/test_op_pow.rb +0 -13
  353. data/test/core/array/test_pad.rb +0 -40
  354. data/test/core/array/test_peek.rb +0 -28
  355. data/test/core/array/test_poke.rb +0 -21
  356. data/test/core/array/test_probability.rb +0 -18
  357. data/test/core/array/test_pull.rb +0 -15
  358. data/test/core/array/test_recurse.rb +0 -40
  359. data/test/core/array/test_recursively.rb +0 -33
  360. data/test/core/array/test_reject_values.rb +0 -17
  361. data/test/core/array/test_splice.rb +0 -21
  362. data/test/core/array/test_split.rb +0 -22
  363. data/test/core/array/test_squeeze.rb +0 -22
  364. data/test/core/array/test_standard_deviation.rb +0 -18
  365. data/test/core/array/test_step.rb +0 -28
  366. data/test/core/array/test_store.rb +0 -22
  367. data/test/core/array/test_to_h.rb +0 -14
  368. data/test/core/array/test_traverse.rb +0 -26
  369. data/test/core/array/test_uniq_by.rb +0 -24
  370. data/test/core/array/test_unique_permutation.rb +0 -23
  371. data/test/core/array/test_variance.rb +0 -17
  372. data/test/core/array/test_zip.rb +0 -13
  373. data/test/core/binding/test_caller.rb +0 -69
  374. data/test/core/binding/test_defined.rb +0 -18
  375. data/test/core/binding/test_op.rb +0 -24
  376. data/test/core/binding/test_self.rb +0 -16
  377. data/test/core/class/test_descendents.rb +0 -19
  378. data/test/core/class/test_preallocate.rb +0 -32
  379. data/test/core/class/test_subclasses.rb +0 -20
  380. data/test/core/class/test_to_proc.rb +0 -16
  381. data/test/core/comparable/test_bound.rb +0 -32
  382. data/test/core/comparable/test_cap.rb +0 -36
  383. data/test/core/comparable/test_clip.rb +0 -31
  384. data/test/core/comparable/test_cmp.rb +0 -16
  385. data/test/core/comparable/test_op_get.rb +0 -61
  386. data/test/core/denumerable_tc.rb +0 -194
  387. data/test/core/dir/test_ascend.rb +0 -40
  388. data/test/core/dir/test_descend.rb +0 -24
  389. data/test/core/dir/test_each_child.rb +0 -22
  390. data/test/core/dir/test_multiglob.rb +0 -25
  391. data/test/core/dir/test_parent.rb +0 -14
  392. data/test/core/dir/test_recurse.rb +0 -26
  393. data/test/core/enumerable/test_accumulate.rb +0 -44
  394. data/test/core/enumerable/test_cluster.rb +0 -36
  395. data/test/core/enumerable/test_compact_map.rb +0 -32
  396. data/test/core/enumerable/test_defer.rb +0 -27
  397. data/test/core/enumerable/test_each_by.rb +0 -49
  398. data/test/core/enumerable/test_every.rb +0 -33
  399. data/test/core/enumerable/test_ewise.rb +0 -30
  400. data/test/core/enumerable/test_exclude.rb +0 -15
  401. data/test/core/enumerable/test_expand.rb +0 -15
  402. data/test/core/enumerable/test_filter.rb +0 -19
  403. data/test/core/enumerable/test_find_yield.rb +0 -96
  404. data/test/core/enumerable/test_frequency.rb +0 -15
  405. data/test/core/enumerable/test_graph.rb +0 -42
  406. data/test/core/enumerable/test_hashify.rb +0 -113
  407. data/test/core/enumerable/test_key_by.rb +0 -22
  408. data/test/core/enumerable/test_map_by.rb +0 -27
  409. data/test/core/enumerable/test_map_send.rb +0 -26
  410. data/test/core/enumerable/test_map_with_index.rb +0 -23
  411. data/test/core/enumerable/test_mash.rb +0 -17
  412. data/test/core/enumerable/test_modulate.rb +0 -17
  413. data/test/core/enumerable/test_occur.rb +0 -40
  414. data/test/core/enumerable/test_only.rb +0 -40
  415. data/test/core/enumerable/test_per.rb +0 -19
  416. data/test/core/enumerable/test_purge.rb +0 -22
  417. data/test/core/enumerable/test_recursively.rb +0 -33
  418. data/test/core/enumerable/test_squeeze.rb +0 -35
  419. data/test/core/enumerable/test_sum.rb +0 -40
  420. data/test/core/enumerable/test_uniq_by.rb +0 -25
  421. data/test/core/enumerable/test_visit.rb +0 -14
  422. data/test/core/enumerator/lazy/test_squeeze.rb +0 -33
  423. data/test/core/enumerator/test_fx.rb +0 -16
  424. data/test/core/enumerator/test_new.rb +0 -21
  425. data/test/core/enumerator_tc.rb +0 -40
  426. data/test/core/exception/test_detail.rb +0 -15
  427. data/test/core/exception/test_raised.rb +0 -15
  428. data/test/core/exception/test_suppress.rb +0 -16
  429. data/test/core/file/test_append.rb +0 -22
  430. data/test/core/file/test_create.rb +0 -17
  431. data/test/core/file/test_ext.rb +0 -31
  432. data/test/core/file/test_null.rb +0 -14
  433. data/test/core/file/test_read_binary.rb +0 -19
  434. data/test/core/file/test_read_list.rb +0 -16
  435. data/test/core/file/test_rewrite.rb +0 -35
  436. data/test/core/file/test_rootname.rb +0 -13
  437. data/test/core/file/test_sanitize.rb +0 -32
  438. data/test/core/file/test_split_all.rb +0 -14
  439. data/test/core/file/test_write.rb +0 -22
  440. data/test/core/file/test_writelines.rb +0 -21
  441. data/test/core/filetest/test_root.rb +0 -14
  442. data/test/core/functor_tc.rb +0 -41
  443. data/test/core/hash/test_alias.rb +0 -25
  444. data/test/core/hash/test_argumentize.rb +0 -23
  445. data/test/core/hash/test_at.rb +0 -16
  446. data/test/core/hash/test_autonew.rb +0 -22
  447. data/test/core/hash/test_collate.rb +0 -61
  448. data/test/core/hash/test_count.rb +0 -23
  449. data/test/core/hash/test_data.rb +0 -35
  450. data/test/core/hash/test_dearray_values.rb +0 -26
  451. data/test/core/hash/test_deep_merge.rb +0 -31
  452. data/test/core/hash/test_deep_rekey.rb +0 -131
  453. data/test/core/hash/test_delete_at.rb +0 -18
  454. data/test/core/hash/test_delete_unless.rb +0 -18
  455. data/test/core/hash/test_delete_values.rb +0 -30
  456. data/test/core/hash/test_diff.rb +0 -16
  457. data/test/core/hash/test_each_with_key.rb +0 -16
  458. data/test/core/hash/test_expect.rb +0 -34
  459. data/test/core/hash/test_fetch_nested.rb +0 -24
  460. data/test/core/hash/test_graph.rb +0 -40
  461. data/test/core/hash/test_insert.rb +0 -20
  462. data/test/core/hash/test_inverse.rb +0 -20
  463. data/test/core/hash/test_join.rb +0 -32
  464. data/test/core/hash/test_keys.rb +0 -41
  465. data/test/core/hash/test_new_with.rb +0 -17
  466. data/test/core/hash/test_op_add.rb +0 -17
  467. data/test/core/hash/test_op_and.rb +0 -31
  468. data/test/core/hash/test_op_mul.rb +0 -17
  469. data/test/core/hash/test_op_or.rb +0 -17
  470. data/test/core/hash/test_op_push.rb +0 -34
  471. data/test/core/hash/test_op_sub.rb +0 -28
  472. data/test/core/hash/test_recurse.rb +0 -39
  473. data/test/core/hash/test_recursively.rb +0 -71
  474. data/test/core/hash/test_rekey.rb +0 -119
  475. data/test/core/hash/test_replace_each.rb +0 -17
  476. data/test/core/hash/test_revalue.rb +0 -98
  477. data/test/core/hash/test_reverse_merge.rb +0 -39
  478. data/test/core/hash/test_slice.rb +0 -36
  479. data/test/core/hash/test_stringify_keys.rb +0 -26
  480. data/test/core/hash/test_swap.rb +0 -15
  481. data/test/core/hash/test_symbolize_keys.rb +0 -26
  482. data/test/core/hash/test_to_mod.rb +0 -24
  483. data/test/core/hash/test_to_proc.rb +0 -23
  484. data/test/core/hash/test_to_struct.rb +0 -22
  485. data/test/core/hash/test_traverse.rb +0 -29
  486. data/test/core/hash/test_update_each.rb +0 -16
  487. data/test/core/hash/test_update_keys.rb +0 -21
  488. data/test/core/hash/test_update_values.rb +0 -15
  489. data/test/core/hash/test_weave.rb +0 -18
  490. data/test/core/hash/test_zip.rb +0 -16
  491. data/test/core/indexable_tc.rb +0 -226
  492. data/test/core/integer/test_bitmask.rb +0 -73
  493. data/test/core/integer/test_factorial.rb +0 -30
  494. data/test/core/integer/test_multiple.rb +0 -16
  495. data/test/core/integer/test_of.rb +0 -36
  496. data/test/core/integer/test_ordinal.rb +0 -27
  497. data/test/core/kernel/test_as.rb +0 -74
  498. data/test/core/kernel/test_ask.rb +0 -9
  499. data/test/core/kernel/test_assign.rb +0 -61
  500. data/test/core/kernel/test_assign_from.rb +0 -48
  501. data/test/core/kernel/test_attr_singleton.rb +0 -51
  502. data/test/core/kernel/test_blank.rb +0 -103
  503. data/test/core/kernel/test_callstack.rb +0 -21
  504. data/test/core/kernel/test_class.rb +0 -14
  505. data/test/core/kernel/test_complete.rb +0 -19
  506. data/test/core/kernel/test_constant.rb +0 -18
  507. data/test/core/kernel/test_d.rb +0 -10
  508. data/test/core/kernel/test_deep_clone.rb +0 -31
  509. data/test/core/kernel/test_deep_copy.rb +0 -15
  510. data/test/core/kernel/test_dir.rb +0 -24
  511. data/test/core/kernel/test_disable_warnings.rb +0 -38
  512. data/test/core/kernel/test_ergo.rb +0 -34
  513. data/test/core/kernel/test_extension.rb +0 -18
  514. data/test/core/kernel/test_get.rb +0 -54
  515. data/test/core/kernel/test_here.rb +0 -13
  516. data/test/core/kernel/test_hierarchical_send.rb +0 -48
  517. data/test/core/kernel/test_in.rb +0 -14
  518. data/test/core/kernel/test_instance_assign.rb +0 -19
  519. data/test/core/kernel/test_instance_class.rb +0 -15
  520. data/test/core/kernel/test_instance_extract.rb +0 -28
  521. data/test/core/kernel/test_instance_replace.rb +0 -47
  522. data/test/core/kernel/test_instance_send.rb +0 -26
  523. data/test/core/kernel/test_maybe.rb +0 -13
  524. data/test/core/kernel/test_meta_alias.rb +0 -18
  525. data/test/core/kernel/test_meta_class.rb +0 -33
  526. data/test/core/kernel/test_meta_def.rb +0 -15
  527. data/test/core/kernel/test_meta_eval.rb +0 -18
  528. data/test/core/kernel/test_method.rb +0 -20
  529. data/test/core/kernel/test_not.rb +0 -51
  530. data/test/core/kernel/test_not_nil.rb +0 -25
  531. data/test/core/kernel/test_object_class.rb +0 -22
  532. data/test/core/kernel/test_object_hexid.rb +0 -20
  533. data/test/core/kernel/test_object_send.rb +0 -25
  534. data/test/core/kernel/test_presence.rb +0 -37
  535. data/test/core/kernel/test_qua_class.rb +0 -25
  536. data/test/core/kernel/test_require_all.rb +0 -11
  537. data/test/core/kernel/test_respond.rb +0 -38
  538. data/test/core/kernel/test_returning.rb +0 -17
  539. data/test/core/kernel/test_silence.rb +0 -24
  540. data/test/core/kernel/test_singleton_class.rb +0 -15
  541. data/test/core/kernel/test_super_method.rb +0 -23
  542. data/test/core/kernel/test_tap.rb +0 -38
  543. data/test/core/kernel/test_temporarily.rb +0 -25
  544. data/test/core/kernel/test_true.rb +0 -31
  545. data/test/core/kernel/test_try.rb +0 -35
  546. data/test/core/kernel/test_val.rb +0 -30
  547. data/test/core/kernel/test_with.rb +0 -18
  548. data/test/core/kernel/test_writers.rb +0 -53
  549. data/test/core/matchdata/test_match.rb +0 -14
  550. data/test/core/matchdata/test_matchset.rb +0 -29
  551. data/test/core/method/test_composition.rb +0 -42
  552. data/test/core/module/test_abstract.rb +0 -24
  553. data/test/core/module/test_alias_accessor.rb +0 -27
  554. data/test/core/module/test_alias_method_chain.rb +0 -34
  555. data/test/core/module/test_alias_module_function.rb +0 -24
  556. data/test/core/module/test_all_instance_methods.rb +0 -27
  557. data/test/core/module/test_ancestor.rb +0 -16
  558. data/test/core/module/test_anonymous.rb +0 -18
  559. data/test/core/module/test_attr_setter.rb +0 -28
  560. data/test/core/module/test_basename.rb +0 -14
  561. data/test/core/module/test_can.rb +0 -22
  562. data/test/core/module/test_class.rb +0 -22
  563. data/test/core/module/test_class_def.rb +0 -22
  564. data/test/core/module/test_class_extend.rb +0 -73
  565. data/test/core/module/test_class_inheritor.rb +0 -135
  566. data/test/core/module/test_copy_inheritor.rb +0 -35
  567. data/test/core/module/test_enclosure.rb +0 -24
  568. data/test/core/module/test_instance_function.rb +0 -30
  569. data/test/core/module/test_instance_method.rb +0 -20
  570. data/test/core/module/test_instance_method_defined.rb +0 -38
  571. data/test/core/module/test_integrate.rb +0 -28
  572. data/test/core/module/test_is.rb +0 -50
  573. data/test/core/module/test_memoize.rb +0 -33
  574. data/test/core/module/test_method_clash.rb +0 -59
  575. data/test/core/module/test_method_space.rb +0 -72
  576. data/test/core/module/test_methodize.rb +0 -26
  577. data/test/core/module/test_modname.rb +0 -13
  578. data/test/core/module/test_module_def.rb +0 -22
  579. data/test/core/module/test_module_load.rb +0 -23
  580. data/test/core/module/test_nodef.rb +0 -19
  581. data/test/core/module/test_op.rb +0 -56
  582. data/test/core/module/test_pathize.rb +0 -25
  583. data/test/core/module/test_preextend.rb +0 -26
  584. data/test/core/module/test_redefine_method.rb +0 -30
  585. data/test/core/module/test_redirect_method.rb +0 -32
  586. data/test/core/module/test_remove.rb +0 -18
  587. data/test/core/module/test_rename_method.rb +0 -34
  588. data/test/core/module/test_revise.rb +0 -61
  589. data/test/core/module/test_set.rb +0 -30
  590. data/test/core/module/test_spacename.rb +0 -15
  591. data/test/core/module/test_to_obj.rb +0 -20
  592. data/test/core/module/test_wrap_method.rb +0 -32
  593. data/test/core/numeric/test_approx.rb +0 -26
  594. data/test/core/numeric/test_delimit.rb +0 -68
  595. data/test/core/numeric/test_distance.rb +0 -16
  596. data/test/core/numeric/test_length.rb +0 -16
  597. data/test/core/numeric/test_round_to.rb +0 -76
  598. data/test/core/numeric/test_spacing.rb +0 -17
  599. data/test/core/object/test_dup.rb +0 -115
  600. data/test/core/object/test_object_state.rb +0 -75
  601. data/test/core/object/test_try_dup.rb +0 -59
  602. data/test/core/proc/test_bind.rb +0 -29
  603. data/test/core/proc/test_bind_to.rb +0 -17
  604. data/test/core/proc/test_compose.rb +0 -27
  605. data/test/core/proc/test_partial.rb +0 -27
  606. data/test/core/proc/test_to_method.rb +0 -43
  607. data/test/core/proc/test_update.rb +0 -15
  608. data/test/core/range/test_combine.rb +0 -32
  609. data/test/core/range/test_nudge.rb +0 -32
  610. data/test/core/range/test_op_add.rb +0 -24
  611. data/test/core/range/test_op_sub.rb +0 -34
  612. data/test/core/range/test_overlap.rb +0 -15
  613. data/test/core/range/test_to_rng.rb +0 -20
  614. data/test/core/range/test_umbrella.rb +0 -32
  615. data/test/core/range/test_within.rb +0 -25
  616. data/test/core/regexp/test_arity.rb +0 -30
  617. data/test/core/regexp/test_multiline.rb +0 -19
  618. data/test/core/regexp/test_op_add.rb +0 -15
  619. data/test/core/regexp/test_op_or.rb +0 -16
  620. data/test/core/regexp/test_to_re.rb +0 -24
  621. data/test/core/string/test_acronym.rb +0 -14
  622. data/test/core/string/test_align.rb +0 -32
  623. data/test/core/string/test_ascii_only.rb +0 -51
  624. data/test/core/string/test_bracket.rb +0 -37
  625. data/test/core/string/test_camelcase.rb +0 -59
  626. data/test/core/string/test_capitalized.rb +0 -36
  627. data/test/core/string/test_characters.rb +0 -13
  628. data/test/core/string/test_cleanlines.rb +0 -12
  629. data/test/core/string/test_cleave.rb +0 -27
  630. data/test/core/string/test_cmp.rb +0 -18
  631. data/test/core/string/test_compress_lines.rb +0 -27
  632. data/test/core/string/test_crypt.rb +0 -17
  633. data/test/core/string/test_divide.rb +0 -17
  634. data/test/core/string/test_each_word.rb +0 -17
  635. data/test/core/string/test_edit_distance.rb +0 -20
  636. data/test/core/string/test_exclude.rb +0 -23
  637. data/test/core/string/test_expand_tabs.rb +0 -83
  638. data/test/core/string/test_file.rb +0 -15
  639. data/test/core/string/test_fold.rb +0 -21
  640. data/test/core/string/test_indent.rb +0 -90
  641. data/test/core/string/test_index_all.rb +0 -22
  642. data/test/core/string/test_interpolate.rb +0 -16
  643. data/test/core/string/test_lchomp.rb +0 -25
  644. data/test/core/string/test_line_wrap.rb +0 -15
  645. data/test/core/string/test_lowercase.rb +0 -18
  646. data/test/core/string/test_margin.rb +0 -16
  647. data/test/core/string/test_methodize.rb +0 -28
  648. data/test/core/string/test_modulize.rb +0 -28
  649. data/test/core/string/test_mscan.rb +0 -18
  650. data/test/core/string/test_natcmp.rb +0 -17
  651. data/test/core/string/test_nchar.rb +0 -17
  652. data/test/core/string/test_newlines.rb +0 -14
  653. data/test/core/string/test_number.rb +0 -44
  654. data/test/core/string/test_op_div.rb +0 -15
  655. data/test/core/string/test_op_sub.rb +0 -15
  656. data/test/core/string/test_pathize.rb +0 -31
  657. data/test/core/string/test_quote.rb +0 -41
  658. data/test/core/string/test_random.rb +0 -25
  659. data/test/core/string/test_range.rb +0 -35
  660. data/test/core/string/test_remove.rb +0 -50
  661. data/test/core/string/test_rewrite.rb +0 -17
  662. data/test/core/string/test_rotate.rb +0 -31
  663. data/test/core/string/test_shatter.rb +0 -17
  664. data/test/core/string/test_similarity.rb +0 -22
  665. data/test/core/string/test_snakecase.rb +0 -22
  666. data/test/core/string/test_splice.rb +0 -37
  667. data/test/core/string/test_squish.rb +0 -31
  668. data/test/core/string/test_store.rb +0 -16
  669. data/test/core/string/test_subtract.rb +0 -16
  670. data/test/core/string/test_titlecase.rb +0 -16
  671. data/test/core/string/test_to_re.rb +0 -35
  672. data/test/core/string/test_trim.rb +0 -116
  673. data/test/core/string/test_unbracket.rb +0 -38
  674. data/test/core/string/test_underscore.rb +0 -21
  675. data/test/core/string/test_unfold.rb +0 -17
  676. data/test/core/string/test_unindent.rb +0 -105
  677. data/test/core/string/test_unquote.rb +0 -13
  678. data/test/core/string/test_uppercase.rb +0 -22
  679. data/test/core/string/test_variablize.rb +0 -15
  680. data/test/core/string/test_word_wrap.rb +0 -80
  681. data/test/core/string/test_words.rb +0 -24
  682. data/test/core/string/test_xor.rb +0 -16
  683. data/test/core/struct/test_replace.rb +0 -18
  684. data/test/core/symbol/test_as_s.rb +0 -15
  685. data/test/core/symbol/test_bang.rb +0 -15
  686. data/test/core/symbol/test_chomp.rb +0 -22
  687. data/test/core/symbol/test_generate.rb +0 -20
  688. data/test/core/symbol/test_not.rb +0 -19
  689. data/test/core/symbol/test_op_div.rb +0 -15
  690. data/test/core/symbol/test_plain.rb +0 -19
  691. data/test/core/symbol/test_query.rb +0 -19
  692. data/test/core/symbol/test_setter.rb +0 -17
  693. data/test/core/symbol/test_succ.rb +0 -16
  694. data/test/core/symbol/test_thrown.rb +0 -22
  695. data/test/core/symbol/test_variablize.rb +0 -14
  696. data/test/core/time/test_ago.rb +0 -18
  697. data/test/core/time/test_change.rb +0 -17
  698. data/test/core/time/test_dst_adjustment.rb +0 -19
  699. data/test/core/time/test_elapse.rb +0 -15
  700. data/test/core/time/test_future.rb +0 -32
  701. data/test/core/time/test_hence.rb +0 -18
  702. data/test/core/time/test_in.rb +0 -18
  703. data/test/core/time/test_less.rb +0 -139
  704. data/test/core/time/test_past.rb +0 -32
  705. data/test/core/time/test_round_to.rb +0 -34
  706. data/test/core/time/test_set.rb +0 -43
  707. data/test/core/time/test_shift.rb +0 -135
  708. data/test/core/time/test_stamp.rb +0 -42
  709. data/test/core/time/test_to_time.rb +0 -15
  710. data/test/core/time/test_trunc.rb +0 -34
  711. data/test/core/unboundmethod/test_arguments.rb +0 -25
  712. data/test/standard/binding/test_block_exec.rb +0 -21
  713. data/test/standard/math/test_abs.rb +0 -13
  714. data/test/standard/math/test_acot.rb +0 -23
  715. data/test/standard/math/test_acoth.rb +0 -22
  716. data/test/standard/math/test_beta.rb +0 -19
  717. data/test/standard/math/test_ceil.rb +0 -22
  718. data/test/standard/math/test_cosec.rb +0 -19
  719. data/test/standard/math/test_cosech.rb +0 -19
  720. data/test/standard/math/test_cot.rb +0 -13
  721. data/test/standard/math/test_coth.rb +0 -13
  722. data/test/standard/math/test_distance.rb +0 -16
  723. data/test/standard/math/test_exp10.rb +0 -14
  724. data/test/standard/math/test_exp2.rb +0 -14
  725. data/test/standard/math/test_factorial.rb +0 -13
  726. data/test/standard/math/test_floor.rb +0 -23
  727. data/test/standard/math/test_gcd.rb +0 -18
  728. data/test/standard/math/test_lcm.rb +0 -13
  729. data/test/standard/math/test_median.rb +0 -17
  730. data/test/standard/math/test_percentile.rb +0 -13
  731. data/test/standard/math/test_pow.rb +0 -30
  732. data/test/standard/math/test_root.rb +0 -15
  733. data/test/standard/math/test_sec.rb +0 -19
  734. data/test/standard/math/test_sech.rb +0 -19
  735. data/test/standard/math/test_sign.rb +0 -20
  736. data/test/standard/math/test_sinc.rb +0 -15
  737. data/test/standard/math/test_srq.rb +0 -20
  738. data/test/standard/pathname/test_chdir.rb +0 -16
  739. data/test/standard/pathname/test_readline.rb +0 -23
  740. data/test/standard/test_argvector.rb +0 -64
  741. data/test/standard/test_cloneable.rb +0 -60
  742. data/test/standard/test_date.rb +0 -82
  743. data/test/standard/test_enumargs.rb +0 -105
  744. data/test/standard/test_equitable.rb +0 -46
  745. data/test/standard/test_instantiable.rb +0 -40
  746. data/test/standard/test_math.rb +0 -3
  747. data/test/standard/test_memoizable.rb +0 -42
  748. data/test/standard/test_multipliers.rb +0 -141
  749. data/test/standard/test_ostruct.rb +0 -191
  750. data/test/standard/test_random.rb +0 -241
  751. data/test/standard/test_shellwords.rb +0 -74
  752. data/test/standard/test_thread.rb +0 -24
  753. data/test/standard/test_timer.rb +0 -62
  754. data/test/standard/test_tuple.rb +0 -68
  755. data/test/standard/test_uri.rb +0 -50
@@ -2,26 +2,25 @@ require 'cgi'
2
2
 
3
3
  class CGI
4
4
 
5
- # Extends `#escape_html` to support escape modes. By default all strings
6
- # are escaped on `&`, `>` and `<`. Add the `:nonstandard` mode to omit
7
- # this conversion.
5
+ # Extended HTML/XHTML escaping with mode support. Unlike Ruby's built-in
6
+ # `CGI.escape_html`, this supports additional escape modes.
8
7
  #
9
- # If no mode is given then the `:default` mode is used.
10
- #
11
- # Available modes include:
8
+ # Available modes:
12
9
  # * `:quote` - escapes single and double quotes
13
10
  # * `:newlines` - escapes newline characters (\r and \n)
14
11
  # * `:ampersand` - escapes the ampersand sign
15
12
  # * `:brackets` - escapes less-than and greater-than signs
16
13
  # * `:default` - escapes double quotes
17
14
  #
15
+ # By default all strings are escaped on `&`, `>`, `<` and `"`.
16
+ #
18
17
  # @example
19
- # escape_html("<tag>") #=> "&lt;tag&gt;"
20
- # escape_html("Example\nString", :newlines) #=> "Example&#13;&#10;String"
21
- # escape_html("\"QUOTE\"", false) #=> "\"QUOTE\""
18
+ # CGI.escape_xhtml("<tag>") #=> "&lt;tag&gt;"
19
+ # CGI.escape_xhtml("Example\nString", :newlines) #=> "Example&#13;&#10;String"
20
+ # CGI.escape_xhtml("\"QUOTE\"", false) #=> "\"QUOTE\""
22
21
  #
23
- def self.escape_html(string, *modes)
24
- modes << :defualt if modes.empty?
22
+ def self.escape_xhtml(string, *modes)
23
+ modes << :default if modes.empty?
25
24
 
26
25
  unless modes.include?(:nonstandard)
27
26
  string = string.gsub(/&/, '&amp;').gsub(/>/, '&gt;').gsub(/</, '&lt;')
@@ -32,7 +31,7 @@ class CGI
32
31
  case mode
33
32
  when :quote, :quotes
34
33
  string.gsub(%r|"|,'&quot;').gsub(%r|'|,'&#39;')
35
- when :newlines, :newlines
34
+ when :newlines
36
35
  string.gsub(/[\r\n]+/,'&#13;&#10;')
37
36
  when :ampersand
38
37
  string.gsub(/&/, '&amp;')
@@ -41,23 +40,13 @@ class CGI
41
40
  when :default, true
42
41
  string.gsub(/\"/, '&quot;')
43
42
  when false
43
+ string
44
44
  else
45
- raise ArgumentError, "unrecognized HTML escape mode -- #{node}"
45
+ raise ArgumentError, "unrecognized HTML escape mode -- #{mode}"
46
46
  end
47
47
  end
48
- end
49
48
 
50
- class << self
51
- # @deprecated
52
- alias :escapeHTML :escape_html
53
- end
54
-
55
- if RUBY_VERSION < '1.9'
56
- class << self
57
- alias :unescape_html :unescapeHTML
58
- alias :escape_element :escapeElement
59
- alias :unescape_element :unescapeElement
60
- end
49
+ string
61
50
  end
62
51
 
63
52
  end
@@ -1,67 +1,20 @@
1
- # Clonable provides a standard basis for adding deep cloneablity to a class
2
- # via the standard #dup and #clone methods.
3
- #
4
- # Cloneable was originally ported from Jim Weirich's Rake.
5
- # The current version is the work of Ken Bloom.
6
- #
7
- # DEPRECATED: A better approach is to provide a #deep_dup and and a #deep_clone,
8
- # then if a class needs these for #dup and #clone they can just alias them.
9
- #
10
- # CREDIT: Ken Bloom
1
+ # @deprecated Use deep_dup/deep_clone instead, or define your own
2
+ # initialize_copy method.
3
+ warn "facets/cloneable is deprecated. Use deep_dup/deep_clone instead.", uplevel: 1
11
4
 
12
5
  module Cloneable
13
6
 
14
7
  def initialize_copy(sibling)
15
- # First duplicate my superclass' state. Note that if it's duplicating
16
- # instance variables, this will be overwritten, but this is important
17
- # because we could be dealing with a C extension with state hidden from
18
- # the Ruby interpreter.
19
8
  super
20
-
21
- # We want to know if we're being dup'ed or clone'd, because we want to
22
- # preserve the state of our internals the same way our state is being
23
- # preserved. (If we can't figure it out, we'll just use #dup.)
24
9
  operation = (
25
10
  copy_call = caller.find{|x| x !~ /'initialize_copy'/}
26
11
  copy_match = copy_call.match(/`(dup|clone)'/)
27
12
  copy_match ? copy_match[1] : :dup
28
13
  )
29
-
30
14
  sibling.instance_variables.each do |ivar|
31
15
  value = sibling.instance_variable_get(ivar)
32
-
33
- # Set my instance variable to be a #dup or #clone
34
- # or my sibling, depending on what's happening to me right now.
35
16
  instance_variable_set(ivar, value.send(operation))
36
17
  end
37
18
  end
38
19
 
39
- # TODO: Is there a more robust means of determining if clone or dup is used?
40
- #def clone
41
- # @_copy_operation = :clone
42
- # super
43
- #end
44
- #
45
- #def dup
46
- # @_copy_operation = :dup
47
- # super
48
- #end
49
-
50
- end
51
-
52
-
53
-
54
- # OLD VERSION
55
-
56
- #module Cloneable
57
- # def clone
58
- # sibling = self.class.new
59
- # instance_variables.each do |ivar|
60
- # value = self.instance_variable_get(ivar)
61
- # sibling.instance_variable_set(ivar, value.dup) #rake_dup)
62
- # end
63
- # sibling
64
- # end
65
- # alias_method :dup, :clone
66
- #end
67
-
20
+ end
@@ -1,56 +1,2 @@
1
- if defined?(Continuation)
2
-
3
- # = Continuation Extension
4
- #
5
- # Creates a continuation in a way that is easier to use than callcc.
6
- # On the initial call this will return the created Continuation and
7
- # the arguments you gave to Continuation.create in an Array. If you
8
- # then issue .call() on the Continuation execution will jump back to
9
- # the point of time where you initially invoked Continuation.create,
10
- # but this time it will return the Continuation and the arguments
11
- # you supplied in an Array.
12
- #
13
- # You can supply a block instead of default arguments which will
14
- # cause that block to be executed once and its result to be returned
15
- # along side the created Continuation, but this form is confusing
16
- # and does only rarely make sense.
17
- #
18
- # # Count from 0 to 10
19
- # cc, counter = Continuation.create(0)
20
- # counter #~> 0..10
21
- # cc.call(counter + 1) if counter < 10
22
- #
23
- # # Implement something similar to Array#inject using Continuations.
24
- # # For simplicity's sake, this is not fully compatible with the real
25
- # # inject. Make sure that you understand Array#inject before you try
26
- # # to understand this.
27
- # class ::Array
28
- # def cc_inject(value = nil)
29
- # copy = self.clone
30
- # cc, result, item = Continuation.create(value, nil)
31
- # next_item = copy.shift
32
- # if result and item
33
- # # Aggregate the result using the block.
34
- # cc.call(yield(result, item), next_item)
35
- # elsif next_item
36
- # # item not yet set and Array is not empty:
37
- # # This means we did not get a value and thus need to use the
38
- # # first item from the Array before we can start using the
39
- # # block to aggregate the result.
40
- # cc.call(next_item, result)
41
- # end
42
- #
43
- # return result
44
- # end
45
- # end
46
- # [1,2,3,4,5].cc_inject { |acc, n| acc + n } # => 15
47
- #
48
- def Continuation.create(*args, &block)
49
- args = [args] if not args.nil? and not args.is_a? Array # 1.6.8 compatibility
50
- cc = nil; result = callcc {|c| cc = c; block.call(cc) if block and args.empty?}
51
- result ||= args
52
- return *[cc, *result]
53
- end
54
-
55
- end
56
-
1
+ # @deprecated callcc is obsolete in Ruby. Use Fiber instead.
2
+ warn "facets/continuation is deprecated. callcc is obsolete; use Fiber instead.", uplevel: 1
@@ -0,0 +1,126 @@
1
+ # Crypt3 is a pure Ruby version of crypt(3), a salted one-way hashing
2
+ # of a password.
3
+ #
4
+ # Supported hashing algorithms are: md5, sha1, sha256, sha384, sha512, rmd160.
5
+ #
6
+ # Only the md5 hashing algorithm is standard and compatible with crypt(3),
7
+ # the others are not standard.
8
+ #
9
+ # Originally written by Poul-Henning Kamp (Beer-Ware License).
10
+ # Adapted by guillaume.pierronnet based on FreeBSD src/lib/libcrypt/crypt.c
11
+ #
12
+ # Copyright (c) 2002 Poul-Henning Kamp
13
+ # License: BSD-2-Clause
14
+
15
+ module Crypt3
16
+
17
+ VERSION = '1.2.0'
18
+
19
+ # Base 64 character set.
20
+ ITOA64 = "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
21
+
22
+ # A pure ruby version of crypt(3), a salted one-way hashing of a password.
23
+ #
24
+ # Automatically generates an 8-byte salt if none given.
25
+ #
26
+ # Crypt3.crypt('password') #=> "$1$xxxxxxxx$hash..."
27
+ # Crypt3.crypt('password', :sha256) #=> "$1$xxxxxxxx$hash..."
28
+ #
29
+ # password - The phrase to encrypt. [String]
30
+ # algo - The algorithm to use. [Symbol]
31
+ # salt - Cryptographic salt, random if nil. [String]
32
+ # magic - The magic prefix. [String]
33
+ #
34
+ # Returns the cryptographic hash. [String]
35
+ def self.crypt(password, algo = :md5, salt = nil, magic = '$1$')
36
+ salt ||= generate_salt(8)
37
+
38
+ case algo
39
+ when :md5
40
+ require "digest/md5"
41
+ when :sha1
42
+ require "digest/sha1"
43
+ when :rmd160
44
+ require "digest/rmd160"
45
+ when :sha256, :sha384, :sha512
46
+ require "digest/sha2"
47
+ else
48
+ raise(ArgumentError, "unknown algorithm: #{algo}")
49
+ end
50
+
51
+ digest_class = Digest.const_get(algo.to_s.upcase)
52
+
53
+ m = digest_class.new
54
+ m.update(password + magic + salt)
55
+
56
+ mixin = digest_class.new.update(password + salt + password).digest
57
+ password.length.times do |i|
58
+ m.update(mixin[i % 16].chr)
59
+ end
60
+
61
+ i = password.length
62
+ while i != 0
63
+ if (i & 1) != 0
64
+ m.update("\x00")
65
+ else
66
+ m.update(password[0].chr)
67
+ end
68
+ i >>= 1
69
+ end
70
+
71
+ final = m.digest
72
+
73
+ 1000.times do |i|
74
+ m2 = digest_class.new
75
+ m2.update((i & 1) != 0 ? password : final)
76
+ m2.update(salt) if (i % 3) != 0
77
+ m2.update(password) if (i % 7) != 0
78
+ m2.update((i & 1) != 0 ? final : password)
79
+ final = m2.digest
80
+ end
81
+
82
+ rearranged = ""
83
+ [[0, 6, 12], [1, 7, 13], [2, 8, 14], [3, 9, 15], [4, 10, 5]].each do |a, b, c|
84
+ v = final.getbyte(a) << 16 | final.getbyte(b) << 8 | final.getbyte(c)
85
+ 4.times do
86
+ rearranged += ITOA64[v & 0x3f]
87
+ v >>= 6
88
+ end
89
+ end
90
+
91
+ v = final.getbyte(11)
92
+ 2.times do
93
+ rearranged += ITOA64[v & 0x3f]
94
+ v >>= 6
95
+ end
96
+
97
+ magic + salt + '$' + rearranged
98
+ end
99
+
100
+ # Check the validity of a password against a hashed string.
101
+ #
102
+ # Crypt3.check('password', '$1$xxxxxxxx$hash...') #=> true
103
+ #
104
+ # password - The phrase that was encrypted. [String]
105
+ # hash - The cryptographic hash. [String]
106
+ # algo - The algorithm used. [Symbol]
107
+ #
108
+ # Returns true if valid. [Boolean]
109
+ def self.check(password, hash, algo = :md5)
110
+ magic, salt = hash.split('$')[1, 2]
111
+ magic = '$' + magic + '$'
112
+ self.crypt(password, algo, salt, magic) == hash
113
+ end
114
+
115
+ # Generate a random salt of the given size.
116
+ #
117
+ # Crypt3.generate_salt(8) #=> "xK3d9Wq2"
118
+ #
119
+ # size - The size of the salt. [Integer]
120
+ #
121
+ # Returns random salt. [String]
122
+ def self.generate_salt(size)
123
+ (1..size).map { ITOA64[rand(ITOA64.size)] }.join
124
+ end
125
+
126
+ end
@@ -0,0 +1,32 @@
1
+
2
+ require 'date'
3
+
4
+ class Time
5
+ alias_method :old_compare, :<=>
6
+ private :old_compare
7
+
8
+ # Allow for Date <=> DateTime <=> Time, to work as expected.
9
+
10
+ def <=>(other)
11
+ if Date === other or DateTime === other
12
+ self.to_datetime <=> other
13
+ else
14
+ old_compare(other)
15
+ end
16
+ end
17
+ end
18
+
19
+ class Date
20
+ alias_method :old_compare, :<=>
21
+ private :old_compare
22
+
23
+ # Allow for Date <=> DateTime <=> Time, to work as expected.
24
+
25
+ def <=>(other)
26
+ if Time === other
27
+ self.to_datetime <=> other.to_datetime
28
+ else
29
+ old_compare(other)
30
+ end
31
+ end
32
+ end
@@ -1,5 +1,6 @@
1
1
  require 'date'
2
2
  require 'facets/time/stamp'
3
+ require 'facets/date/cmp'
3
4
 
4
5
  # = Date
5
6
  #
@@ -1,2 +1 @@
1
- require 'facets/digest/base64digest'
2
1
  require 'facets/digest/salted_digest'
@@ -14,7 +14,6 @@ module FileUtils
14
14
  # subdirectory is automatically skipped as well.
15
15
 
16
16
  def cp_rx(src, dest, options = {}, &filter)
17
- fu_check_options(options, OPT_TABLE['cp_r'])
18
17
  if options[:verbose]
19
18
  fu_output_message("cp -r#{options[:preserve] ? 'p' : ''}#{options[:remove_destination] ? ' --remove-destination' : ''} #{[src,dest].flatten.join ' '}")
20
19
  end
@@ -41,4 +40,3 @@ module FileUtils
41
40
  end
42
41
 
43
42
  end
44
-
@@ -27,7 +27,6 @@ module FileUtils
27
27
  #
28
28
  # TODO: Why --remove-destination and not just --force?
29
29
  def ln_r(src, dest, options = {})
30
- fu_check_options options, OPT_TABLE['ln_r']
31
30
  fu_output_message "ln -r#{options[:remove_destination] ? ' --remove-destination' : ''} #{[src,dest].flatten.join ' '}" if options[:verbose]
32
31
  return if options[:noop]
33
32
  options = options.dup
@@ -1,5 +1,3 @@
1
- require 'facets/enumerator'
2
-
3
1
  module Find
4
2
  # Identical to find except select returns the matching files as an array.
5
3
  # (find returns nil, which is not very useful if you actually wanted an array.)
@@ -1,59 +1,3 @@
1
- require 'getoptlong'
2
-
3
- # = GetoptLong
4
- #
5
- # Ruby's standard GetoptLong class with an added DSL.
6
- #
7
- # opts = GetoptLong.new do
8
- # reqs '--expect', '-x'
9
- # flag '--help', '-h'
10
- # end
11
- #
12
- # See GetoptLong::DSL for details.
13
-
14
- class GetoptLong
15
-
16
- alias :init :initialize
17
-
18
- #
19
- def initialize(*arguments, &block)
20
- if block_given?
21
- raise ArgumentError unless arguments.empty?
22
- arguments = DSL.new(&block).arguments
23
- end
24
- init(*arguments)
25
- end
26
-
27
- # DSL-mode parser.
28
- class DSL
29
- attr :arguments
30
-
31
- def initialize(&block)
32
- @arguments = []
33
- instance_eval(&block)
34
- end
35
-
36
- #
37
- def flag(*opts)
38
- @arguments << (opts << GetoptLong::NO_ARGUMENT)
39
- end
40
-
41
- #
42
- def required(*opts)
43
- @arguments << (opts << GetoptLong::REQUIRED_ARGUMENT)
44
- end
45
-
46
- #
47
- alias :reqs :required
48
-
49
- #
50
- def optional(*opts)
51
- @arguments << (opts << GetoptLong::OPTIONAL_ARGUMENT)
52
- end
53
-
54
- #
55
- alias :opts :optional
56
- end
57
-
58
- end
59
-
1
+ # @deprecated GetoptLong is a bundled gem heading for removal.
2
+ # Consider using OptionParser or a modern CLI library instead.
3
+ warn "facets/getoptlong is deprecated. Consider OptionParser instead.", uplevel: 1
@@ -1,26 +1,2 @@
1
- module ::Kernel
2
- class << self
3
- alias_method :require_without_monitor, :require
4
- alias_method :load_without_monitor, :load
5
- end
6
-
7
- alias_method :require_without_monitor, :require
8
- alias_method :load_without_monitor, :load
9
-
10
- # Require script and print what is being require.
11
- def require(file)
12
- $stderr.puts "monitor require: #{file}\n#{caller.inspect}\n\n"
13
- require_without_monitor(file)
14
- end
15
-
16
- module_function :require
17
-
18
- # Load script and print what is being loaded.
19
- def load(file, wrap=false)
20
- $stderr.puts "monitor load: #{file}\n#{caller.inspect}\n\n"
21
- load_without_monitor(file, wrap)
22
- end
23
-
24
- module_function :load
25
- end
26
-
1
+ # @deprecated Monkey-patching require/load globally is dangerous.
2
+ warn "facets/load_monitor is deprecated. It monkey-patches require/load globally.", uplevel: 1
@@ -1,4 +1,5 @@
1
1
  require 'facets/math/approx_equal'
2
+ require 'facets/math/mean'
2
3
 
3
4
  module Math
4
5
 
@@ -13,11 +14,11 @@ module Math
13
14
  # GC = \frac{\sum_{i=1}^N (2i-N-1)x_i}{N^2-\bar{x}}
14
15
  #
15
16
  def self.gini_coefficient(array)
16
- return -1 if size <= 0 or any? { |x| x < 0 }
17
- return 0 if size < 2 or all? { |x| approx_equal(x,0) }
17
+ return -1 if array.size <= 0 or array.any? { |x| x < 0 }
18
+ return 0 if array.size < 2 or array.all? { |x| approx_equal(x,0) }
18
19
  s = 0
19
- sort.each_with_index { |li,i| s += (2*i+1-size)*li }
20
- s.to_f/(size**2*mean).to_f
20
+ array.sort.each_with_index { |li,i| s += (2*i+1-array.size)*li }
21
+ s.to_f/(array.size**2*mean(array)).to_f
21
22
  end
22
23
 
23
24
  ## OLD WAY
@@ -1,19 +1,20 @@
1
1
  module Math
2
2
 
3
- # The Kullback-Leibler divergence from this array to that of +q+.
3
+ # The Kullback-Leibler divergence from distribution +p+ to distribution +q+.
4
+ #
5
+ # Both arrays must be the same size and represent probability distributions
6
+ # (values should be positive).
4
7
  #
5
8
  # NB: You will possibly want to sort both P and Q before calling this
6
9
  # depending on what you're actually trying to measure.
7
10
  #
8
11
  # http://en.wikipedia.org/wiki/Kullback-Leibler_divergence
9
12
  #
10
- def self.kldivergence(array, q)
11
- fail "Buggy."
12
- fail "Cannot compare differently sized arrays." unless size = q.size
13
- kld = 0
14
- each_with_index { |pi,i| kld += pi*Math::log(pi.to_f/q[i].to_f) }
13
+ def self.kldivergence(p, q)
14
+ raise ArgumentError, "Cannot compare differently sized arrays." unless p.size == q.size
15
+ kld = 0.0
16
+ p.each_with_index { |pi, i| kld += pi * Math.log(pi.to_f / q[i].to_f) }
15
17
  kld
16
18
  end
17
19
 
18
20
  end
19
-
@@ -13,7 +13,7 @@ module Math
13
13
  # CREDIT: Ben Koski
14
14
  #
15
15
  # @non-core
16
- # require 'facets/array/precentile'
16
+ # require 'facets/math/percentile'
17
17
  #
18
18
  def self.percentile(array, pcnt)
19
19
  sorted_array = array.sort
@@ -76,7 +76,7 @@
76
76
  #
77
77
  # Copyright (c) 2007 Christoph Rippel, Thomas Sawyer
78
78
  #
79
- # Ruby License
79
+ # Ruby License / BSD-2 License
80
80
  #
81
81
  # This module is free software. You may use, modify, and/or redistribute this
82
82
  # software under the same terms as Ruby.
@@ -17,30 +17,15 @@ class OpenStruct
17
17
  # p.gender = :M
18
18
  # end
19
19
  #
20
- # Alternatively you can provide a default block:
21
- #
22
- # stuff = OpenStruct.new{ |o,k| o[k] = [] }
23
- # stuff.place << :a
24
- # stuff.place << :b
25
- # stuff.place #=> [:a, :b]
26
- #
27
- # A setter block versus a defualt block is determined by the arity of
28
- # the block. You cannot provide both at the same time.
29
- #
30
20
  # CREDIT: Noah Gibbs, Gavin Sinclair
31
21
  def initialize(hash=nil, &block)
32
- if block && block.arity==2
33
- @table = Hash.new(&block)
34
- else
35
- @table = {}
36
- end
22
+ @table = {}
37
23
  if hash
38
- for k,v in hash
39
- @table[k.to_sym] = v
40
- new_ostruct_member(k)
24
+ hash.each_pair do |k, v|
25
+ self[k.to_sym] = v
41
26
  end
42
27
  end
43
- if block && block.arity==1
28
+ if block && block.arity == 1
44
29
  yield self
45
30
  end
46
31
  end
@@ -52,7 +52,8 @@ class Hash
52
52
  each_pair do |k,v|
53
53
  h[k] = v.to_ostruct_recurse( exclude ) if v.respond_to?(:to_ostruct_recurse)
54
54
  end
55
- o.merge!(h)
55
+ h.each_pair { |k, v| o[k.to_sym] = v }
56
+ o
56
57
  end
57
58
  end
58
59