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.
- checksums.yaml +5 -5
- data/HISTORY.md +141 -0
- data/LICENSE.txt +21 -343
- data/README.md +26 -19
- data/lib/core/facets/array/arrange.rb +1 -42
- data/lib/core/facets/array/average.rb +0 -1
- data/lib/core/facets/array/before.rb +1 -1
- data/lib/core/facets/array/delete_first.rb +21 -0
- data/lib/core/facets/array/duplicates.rb +13 -0
- data/lib/core/facets/array/indexes.rb +113 -0
- data/lib/core/facets/array/nonuniq.rb +6 -8
- data/lib/core/facets/array/occurrence.rb +4 -1
- data/lib/core/facets/array/remove.rb +39 -0
- data/lib/core/facets/array/span.rb +29 -0
- data/lib/core/facets/array/split_at.rb +25 -0
- data/lib/core/facets/array/standard_deviation.rb +7 -2
- data/lib/core/facets/array/step.rb +12 -14
- data/lib/core/facets/array/to_ranges.rb +48 -0
- data/lib/core/facets/array/uniq_by.rb +3 -3
- data/lib/core/facets/binding/caller.rb +8 -2
- data/lib/core/facets/binding/op_get.rb +7 -11
- data/lib/core/facets/binding/self.rb +4 -10
- data/lib/core/facets/boolean.rb +1 -1
- data/lib/core/facets/class/descendants.rb +0 -2
- data/lib/core/facets/class.rb +2 -2
- data/lib/core/facets/comparable/bound.rb +13 -1
- data/lib/core/facets/comparable/clip.rb +3 -32
- data/lib/core/facets/denumerable.rb +0 -3
- data/lib/core/facets/dir/find.rb +20 -0
- data/lib/core/facets/dir/recurse.rb +8 -26
- data/lib/core/facets/enumerable/compact_map.rb +2 -12
- data/lib/core/facets/enumerable/defer.rb +2 -13
- data/lib/core/facets/enumerable/each_by.rb +0 -2
- data/lib/core/facets/enumerable/frequency.rb +2 -2
- data/lib/core/facets/enumerable/hinge.rb +3 -4
- data/lib/core/facets/enumerable/map_with_index.rb +3 -6
- data/lib/core/facets/enumerable/mash.rb +5 -28
- data/lib/core/facets/enumerable/uniq_by.rb +4 -8
- data/lib/core/facets/enumerable/with_position.rb +58 -0
- data/lib/core/facets/enumerator.rb +2 -75
- data/lib/core/facets/exception/error_print.rb +6 -71
- data/lib/core/facets/file/null.rb +3 -15
- data/lib/core/facets/file/read_binary.rb +3 -12
- data/lib/core/facets/hash/except.rb +0 -7
- data/lib/core/facets/hash/fetch_nested.rb +8 -9
- data/lib/core/facets/hash/graph.rb +1 -1
- data/lib/core/facets/hash/rekey.rb +3 -3
- data/lib/core/facets/hash/revalue.rb +3 -3
- data/lib/core/facets/hash/{to_proc.rb → setter.rb} +8 -9
- data/lib/core/facets/hash/slice.rb +0 -26
- data/lib/core/facets/hash/update_keys.rb +4 -11
- data/lib/core/facets/hash/update_values.rb +4 -10
- data/lib/core/facets/indexable.rb +6 -4
- data/lib/core/facets/kernel/callstack.rb +5 -24
- data/lib/core/facets/kernel/eigenclass.rb +6 -6
- data/lib/core/facets/kernel/extension.rb +3 -6
- data/lib/core/facets/kernel/functor.rb +16 -0
- data/lib/core/facets/kernel/instance_class.rb +4 -20
- data/lib/core/facets/kernel/instance_send.rb +5 -3
- data/lib/core/facets/kernel/load_relative.rb +8 -20
- data/lib/core/facets/kernel/memo.rb +4 -26
- data/lib/core/facets/kernel/meta_class.rb +10 -6
- data/lib/core/facets/kernel/object_class.rb +5 -6
- data/lib/core/facets/kernel/object_send.rb +5 -26
- data/lib/core/facets/kernel/qua_class.rb +4 -20
- data/lib/core/facets/kernel/require_all.rb +8 -20
- data/lib/core/facets/kernel/returning.rb +3 -19
- data/lib/core/facets/kernel/tap.rb +3 -36
- data/lib/core/facets/kernel/tee.rb +2 -0
- data/lib/core/facets/kernel/try.rb +38 -28
- data/lib/core/facets/kernel.rb +2 -4
- data/lib/core/facets/lazy.rb +1 -1
- data/lib/core/facets/module/alias_method_chain.rb +4 -43
- data/lib/core/facets/module/attr_setter.rb +3 -2
- data/lib/core/facets/module/can.rb +5 -16
- data/lib/core/facets/module/class_extend.rb +2 -2
- data/lib/core/facets/object/dup.rb +0 -46
- data/lib/core/facets/proc/bind.rb +0 -2
- data/lib/core/facets/proc/compose.rb +7 -28
- data/lib/core/facets/proc/to_method.rb +0 -1
- data/lib/core/facets/proc/update.rb +8 -1
- data/lib/core/facets/range/intersection.rb +42 -0
- data/lib/core/facets/range/nudge.rb +6 -8
- data/lib/core/facets/string/ascii_only.rb +2 -2
- data/lib/core/facets/string/cleanlines.rb +0 -2
- data/lib/core/facets/string/dashcase.rb +21 -0
- data/lib/core/facets/string/lchomp.rb +7 -14
- data/lib/core/facets/string/newlines.rb +0 -2
- data/lib/core/facets/string/snakecase.rb +12 -5
- data/lib/core/facets/string/words.rb +13 -1
- data/lib/core/facets/string.rb +0 -1
- data/lib/core/facets/struct/attributes.rb +2 -3
- data/lib/core/facets/time/trunc.rb +12 -5
- data/lib/core/facets/unboundmethod/arguments.rb +1 -0
- data/lib/core/facets/version.rb +1 -17
- data/lib/core/facets.rb +0 -1
- data/lib/standard/facets/argvector.rb +1 -1
- data/lib/standard/facets/cgi/escape_html.rb +14 -25
- data/lib/standard/facets/cloneable.rb +4 -51
- data/lib/standard/facets/continuation.rb +2 -56
- data/lib/standard/facets/crypt3.rb +126 -0
- data/lib/standard/facets/date/cmp.rb +32 -0
- data/lib/standard/facets/date.rb +1 -0
- data/lib/standard/facets/digest.rb +0 -1
- data/lib/standard/facets/fileutils/cp_rx.rb +0 -2
- data/lib/standard/facets/fileutils/ln_r.rb +0 -1
- data/lib/standard/facets/find/select.rb +0 -2
- data/lib/standard/facets/getoptlong.rb +3 -59
- data/lib/standard/facets/load_monitor.rb +2 -26
- data/lib/standard/facets/math/gini_coefficient.rb +5 -4
- data/lib/standard/facets/math/kldivergence.rb +8 -7
- data/lib/standard/facets/math/percentile.rb +1 -1
- data/lib/standard/facets/multiton.rb +1 -1
- data/lib/standard/facets/ostruct/initialize.rb +4 -19
- data/lib/standard/facets/ostruct/to_ostruct.rb +2 -1
- data/lib/standard/facets/ostruct.rb +0 -88
- data/lib/standard/facets/pathname/empty.rb +2 -10
- data/lib/standard/facets/pathname/glob.rb +19 -12
- data/lib/standard/facets/pathname/null.rb +3 -14
- data/lib/standard/facets/random.rb +47 -133
- data/lib/standard/facets/tuple.rb +2 -4
- data/lib/standard/facets/uri.rb +3 -2
- metadata +29 -1172
- data/.index +0 -80
- data/.yardopts +0 -10
- data/NOTICE.rdoc +0 -167
- data/demo/applique/assertion_framework.rb +0 -1
- data/demo/applique/file_helpers.rb +0 -34
- data/demo/core/array/after.md +0 -13
- data/demo/core/array/arrange.md +0 -17
- data/demo/core/array/before.md +0 -14
- data/demo/core/array/collapse.md +0 -15
- data/demo/core/array/collisions.md +0 -30
- data/demo/core/array/commonality.md +0 -31
- data/demo/core/array/conjoin.md +0 -47
- data/demo/core/array/contains.md +0 -9
- data/demo/core/array/delete_unless.md +0 -13
- data/demo/core/array/delete_values.md +0 -10
- data/demo/core/array/delete_values_at.md +0 -15
- data/demo/core/array/divide.md +0 -14
- data/demo/core/array/duplicates.md +0 -14
- data/demo/core/array/each_overlap.md +0 -12
- data/demo/core/array/each_pair.md +0 -13
- data/demo/core/array/each_value.md +0 -12
- data/demo/core/array/entropy.md +0 -13
- data/demo/core/array/extract_options.md +0 -13
- data/demo/core/array/first.md +0 -11
- data/demo/core/array/from.md +0 -11
- data/demo/core/array/ideal_entropy.md +0 -11
- data/demo/core/array/intersection.md +0 -11
- data/demo/core/array/last.md +0 -11
- data/demo/core/array/median.md +0 -23
- data/demo/core/array/merge.md +0 -15
- data/demo/core/array/missing.md +0 -10
- data/demo/core/array/mode.md +0 -9
- data/demo/core/array/nonuniq.md +0 -16
- data/demo/core/array/not_empty.md +0 -8
- data/demo/core/array/occur.md +0 -18
- data/demo/core/array/occurrence.md +0 -13
- data/demo/core/array/only.md +0 -9
- data/demo/core/array/op_pow.md +0 -10
- data/demo/core/array/pad.md +0 -28
- data/demo/core/array/peek.md +0 -10
- data/demo/core/array/poke.md +0 -15
- data/demo/core/array/probability +0 -8
- data/demo/core/array/pull.md +0 -10
- data/demo/core/array/recurse.md +0 -10
- data/demo/core/array/recursively.md +0 -20
- data/demo/core/array/reject_values.md +0 -10
- data/demo/core/array/splice.md +0 -14
- data/demo/core/array/split.md +0 -13
- data/demo/core/array/squeeze.md +0 -14
- data/demo/core/array/step.md +0 -16
- data/demo/core/array/store.md +0 -9
- data/demo/core/array/thru.md +0 -12
- data/demo/core/array/to_h.md +0 -11
- data/demo/core/array/traverse.md +0 -20
- data/demo/core/array/uniq_by.md +0 -16
- data/demo/core/array/unique_permutation.md +0 -14
- data/demo/core/array/zip.md +0 -8
- data/demo/core/binding/caller.md +0 -57
- data/demo/core/binding/defined.md +0 -10
- data/demo/core/binding/opvars.md +0 -16
- data/demo/core/binding/self.md +0 -6
- data/demo/core/class/descendants.md +0 -13
- data/demo/core/class/to_proc.md +0 -11
- data/demo/core/comparable/at_least.md +0 -11
- data/demo/core/comparable/at_most.md +0 -11
- data/demo/core/comparable/bound.md +0 -13
- data/demo/core/comparable/cap.md +0 -11
- data/demo/core/comparable/clip.md +0 -29
- data/demo/core/comparable/cmp.md +0 -18
- data/demo/core/comparable/op_get.md +0 -32
- data/demo/core/dir/ascend.md +0 -24
- data/demo/core/dir/descend.md +0 -16
- data/demo/core/dir/multiglob.md +0 -41
- data/demo/core/dir/parent.md +0 -6
- data/demo/core/dir/recurse.md +0 -41
- data/demo/core/exception/detail.md +0 -19
- data/demo/core/facets.md +0 -6
- data/demo/core/filetest/root.md +0 -13
- data/demo/core/hash/recursively.md +0 -21
- data/demo/core/indexable.md +0 -95
- data/demo/core/integer/bitmask.md +0 -46
- data/demo/core/integer/factorial.md +0 -10
- data/demo/core/integer/length.md +0 -7
- data/demo/core/integer/multiple.md +0 -12
- data/demo/core/integer/of.md +0 -11
- data/demo/core/integer/ordinal.md +0 -11
- data/demo/core/integer/times_collect.md +0 -9
- data/demo/core/matchdata/match.md +0 -7
- data/demo/core/matchdata/matchset.md +0 -7
- data/demo/core/matchdata/matchtree.md +0 -10
- data/demo/core/module/cattr.md +0 -43
- data/demo/core/module/class_extend.md +0 -64
- data/demo/core/module/class_inheritor.md +0 -126
- data/demo/core/module/copy_inheritor.md +0 -30
- data/demo/core/module/include_as.md +0 -31
- data/demo/core/module/method_space.md +0 -24
- data/demo/core/string/acronym.md +0 -9
- data/demo/core/string/align.md +0 -34
- data/demo/core/string/ascii_only.md +0 -37
- data/demo/core/string/bracket.md +0 -35
- data/demo/core/string/camelcase.md +0 -47
- data/demo/core/string/capitalized.md +0 -27
- data/demo/core/string/characters.md +0 -11
- data/demo/core/string/cleanlines.md +0 -10
- data/demo/core/string/cleave.md +0 -49
- data/demo/core/string/compress_lines.md +0 -22
- data/demo/core/string/crypt.md +0 -15
- data/demo/core/string/divide.md +0 -9
- data/demo/core/string/each_word.md +0 -11
- data/demo/core/string/edit_distance.md +0 -15
- data/demo/core/string/exclude.md +0 -15
- data/demo/core/string/expand_tabs.md +0 -69
- data/demo/core/string/fold.md +0 -14
- data/demo/core/string/indent.md +0 -65
- data/demo/core/string/index_all.md +0 -14
- data/demo/core/string/interpolate.md +0 -8
- data/demo/core/string/lchomp.md +0 -14
- data/demo/core/string/line_wrap.md +0 -7
- data/demo/core/string/lowercase.md +0 -12
- data/demo/core/string/methodize.md +0 -22
- data/demo/core/string/modulize.md +0 -22
- data/demo/core/string/mscan.md +0 -10
- data/demo/core/string/natcmp.md +0 -10
- data/demo/core/string/nchar.md +0 -9
- data/demo/core/string/newlines.md +0 -9
- data/demo/core/string/number.md +0 -27
- data/demo/core/string/op_div.md +0 -10
- data/demo/core/string/op_sub.md +0 -7
- data/demo/core/string/pathize.md +0 -22
- data/demo/core/string/quote.md +0 -20
- data/demo/core/string/random.md +0 -25
- data/demo/core/string/range.md +0 -19
- data/demo/core/string/remove.md +0 -33
- data/demo/core/string/rewrite.md +0 -9
- data/demo/core/string/shatter.md +0 -9
- data/demo/core/string/similarity.md +0 -12
- data/demo/core/string/snakecase.md +0 -14
- data/demo/core/string/splice.md +0 -28
- data/demo/core/string/squish.md +0 -27
- data/demo/core/string/store.md +0 -10
- data/demo/core/string/subtract.md +0 -8
- data/demo/core/string/titlecase.md +0 -8
- data/demo/core/string/to_re.md +0 -22
- data/demo/core/string/trim.md +0 -92
- data/demo/core/string/unbracket.md +0 -24
- data/demo/core/string/underscore.md +0 -17
- data/demo/core/string/unfold.md +0 -9
- data/demo/core/string/unindent.md +0 -65
- data/demo/core/string/unquote.md +0 -6
- data/demo/core/string/uppercase.md +0 -15
- data/demo/core/string/variablize.md +0 -7
- data/demo/core/string/word_wrap.md +0 -54
- data/demo/core/string/words.md +0 -13
- data/demo/core/string/xor.md +0 -8
- data/demo/standard/02_cloneable.rdoc +0 -46
- data/demo/standard/03_enumargs.rdoc +0 -75
- data/demo/standard/04_equitable.rdoc +0 -35
- data/demo/standard/05_instantiable.rdoc +0 -42
- data/demo/standard/basic_object.rdoc +0 -22
- data/demo/standard/memoizable.rdoc +0 -134
- data/demo/standard/mulititon.rdoc +0 -156
- data/lib/core/facets/applique/file_helpers.rb +0 -33
- data/lib/core/facets/array/intersection.rb +0 -25
- data/lib/core/facets/array/op_pow.rb +0 -12
- data/lib/core/facets/array/to_h.rb +0 -19
- data/lib/core/facets/class/singleton.rb +0 -1
- data/lib/core/facets/class/singleton_class.rb +0 -16
- data/lib/core/facets/class/subclasses.rb +0 -28
- data/lib/core/facets/dir/each_child.rb +0 -16
- data/lib/core/facets/enumerable/filter.rb +0 -33
- data/lib/core/facets/enumerable/sum.rb +0 -40
- data/lib/core/facets/exception/set_message.rb +0 -10
- data/lib/core/facets/file/write.rb +0 -24
- data/lib/core/facets/fixnum.rb +0 -7
- data/lib/core/facets/kernel/__dir__.rb +0 -28
- data/lib/core/facets/kernel/constant.rb +0 -22
- data/lib/core/facets/kernel/instance_exec.rb +0 -47
- data/lib/core/facets/kernel/p.rb +0 -24
- data/lib/core/facets/kernel/singleton_class.rb +0 -10
- data/lib/core/facets/matchdata/match.rb +0 -15
- data/lib/core/facets/method/curry.rb +0 -13
- data/lib/core/facets/numeric/negative.rb +0 -1
- data/lib/core/facets/numeric/positive.rb +0 -15
- data/lib/core/facets/object/itself.rb +0 -16
- data/lib/core/facets/object/try_dup.rb +0 -1
- data/lib/core/facets/process/daemon.rb +0 -32
- data/lib/core/facets/range/overlap.rb +0 -12
- data/lib/core/facets/string/characters.rb +0 -13
- data/lib/core/facets/string/crypt.rb +0 -22
- data/lib/core/facets/symbol/succ.rb +0 -23
- data/lib/core/facets.yml +0 -80
- data/lib/standard/facets/basicobject.rb +0 -75
- data/lib/standard/facets/digest/base64digest.rb +0 -45
- data/lib/standard/facets/ostruct/each.rb +0 -11
- data/lib/standard/facets/ostruct/merge.rb +0 -21
- data/lib/standard/facets/ostruct/op_fetch.rb +0 -29
- data/lib/standard/facets/ostruct/op_store.rb +0 -1
- data/lib/standard/facets/ostruct/to_h.rb +0 -10
- data/test/core/array/test_arrange.rb +0 -37
- data/test/core/array/test_average.rb +0 -16
- data/test/core/array/test_before.rb +0 -48
- data/test/core/array/test_collapse.rb +0 -23
- data/test/core/array/test_commonality.rb +0 -35
- data/test/core/array/test_conjoin.rb +0 -50
- data/test/core/array/test_contains.rb +0 -14
- data/test/core/array/test_delete.rb +0 -42
- data/test/core/array/test_delete_unless.rb +0 -17
- data/test/core/array/test_delete_values.rb +0 -31
- data/test/core/array/test_divide.rb +0 -24
- data/test/core/array/test_duplicates.rb +0 -29
- data/test/core/array/test_each_overlap.rb +0 -31
- data/test/core/array/test_each_pair.rb +0 -16
- data/test/core/array/test_each_value.rb +0 -16
- data/test/core/array/test_entropy.rb +0 -23
- data/test/core/array/test_extract_options.rb +0 -28
- data/test/core/array/test_first.rb +0 -17
- data/test/core/array/test_from.rb +0 -42
- data/test/core/array/test_intersection.rb +0 -19
- data/test/core/array/test_last.rb +0 -17
- data/test/core/array/test_median.rb +0 -27
- data/test/core/array/test_merge.rb +0 -27
- data/test/core/array/test_missing.rb +0 -12
- data/test/core/array/test_mode.rb +0 -17
- data/test/core/array/test_nonuniq.rb +0 -25
- data/test/core/array/test_not_empty.rb +0 -17
- data/test/core/array/test_occur.rb +0 -52
- data/test/core/array/test_occurrence.rb +0 -20
- data/test/core/array/test_only.rb +0 -17
- data/test/core/array/test_op_pow.rb +0 -13
- data/test/core/array/test_pad.rb +0 -40
- data/test/core/array/test_peek.rb +0 -28
- data/test/core/array/test_poke.rb +0 -21
- data/test/core/array/test_probability.rb +0 -18
- data/test/core/array/test_pull.rb +0 -15
- data/test/core/array/test_recurse.rb +0 -40
- data/test/core/array/test_recursively.rb +0 -33
- data/test/core/array/test_reject_values.rb +0 -17
- data/test/core/array/test_splice.rb +0 -21
- data/test/core/array/test_split.rb +0 -22
- data/test/core/array/test_squeeze.rb +0 -22
- data/test/core/array/test_standard_deviation.rb +0 -18
- data/test/core/array/test_step.rb +0 -28
- data/test/core/array/test_store.rb +0 -22
- data/test/core/array/test_to_h.rb +0 -14
- data/test/core/array/test_traverse.rb +0 -26
- data/test/core/array/test_uniq_by.rb +0 -24
- data/test/core/array/test_unique_permutation.rb +0 -23
- data/test/core/array/test_variance.rb +0 -17
- data/test/core/array/test_zip.rb +0 -13
- data/test/core/binding/test_caller.rb +0 -69
- data/test/core/binding/test_defined.rb +0 -18
- data/test/core/binding/test_op.rb +0 -24
- data/test/core/binding/test_self.rb +0 -16
- data/test/core/class/test_descendents.rb +0 -19
- data/test/core/class/test_preallocate.rb +0 -32
- data/test/core/class/test_subclasses.rb +0 -20
- data/test/core/class/test_to_proc.rb +0 -16
- data/test/core/comparable/test_bound.rb +0 -32
- data/test/core/comparable/test_cap.rb +0 -36
- data/test/core/comparable/test_clip.rb +0 -31
- data/test/core/comparable/test_cmp.rb +0 -16
- data/test/core/comparable/test_op_get.rb +0 -61
- data/test/core/denumerable_tc.rb +0 -194
- data/test/core/dir/test_ascend.rb +0 -40
- data/test/core/dir/test_descend.rb +0 -24
- data/test/core/dir/test_each_child.rb +0 -22
- data/test/core/dir/test_multiglob.rb +0 -25
- data/test/core/dir/test_parent.rb +0 -14
- data/test/core/dir/test_recurse.rb +0 -26
- data/test/core/enumerable/test_accumulate.rb +0 -44
- data/test/core/enumerable/test_cluster.rb +0 -36
- data/test/core/enumerable/test_compact_map.rb +0 -32
- data/test/core/enumerable/test_defer.rb +0 -27
- data/test/core/enumerable/test_each_by.rb +0 -49
- data/test/core/enumerable/test_every.rb +0 -33
- data/test/core/enumerable/test_ewise.rb +0 -30
- data/test/core/enumerable/test_exclude.rb +0 -15
- data/test/core/enumerable/test_expand.rb +0 -15
- data/test/core/enumerable/test_filter.rb +0 -19
- data/test/core/enumerable/test_find_yield.rb +0 -96
- data/test/core/enumerable/test_frequency.rb +0 -15
- data/test/core/enumerable/test_graph.rb +0 -42
- data/test/core/enumerable/test_hashify.rb +0 -113
- data/test/core/enumerable/test_key_by.rb +0 -22
- data/test/core/enumerable/test_map_by.rb +0 -27
- data/test/core/enumerable/test_map_send.rb +0 -26
- data/test/core/enumerable/test_map_with_index.rb +0 -23
- data/test/core/enumerable/test_mash.rb +0 -17
- data/test/core/enumerable/test_modulate.rb +0 -17
- data/test/core/enumerable/test_occur.rb +0 -40
- data/test/core/enumerable/test_only.rb +0 -40
- data/test/core/enumerable/test_per.rb +0 -19
- data/test/core/enumerable/test_purge.rb +0 -22
- data/test/core/enumerable/test_recursively.rb +0 -33
- data/test/core/enumerable/test_squeeze.rb +0 -35
- data/test/core/enumerable/test_sum.rb +0 -40
- data/test/core/enumerable/test_uniq_by.rb +0 -25
- data/test/core/enumerable/test_visit.rb +0 -14
- data/test/core/enumerator/lazy/test_squeeze.rb +0 -33
- data/test/core/enumerator/test_fx.rb +0 -16
- data/test/core/enumerator/test_new.rb +0 -21
- data/test/core/enumerator_tc.rb +0 -40
- data/test/core/exception/test_detail.rb +0 -15
- data/test/core/exception/test_raised.rb +0 -15
- data/test/core/exception/test_suppress.rb +0 -16
- data/test/core/file/test_append.rb +0 -22
- data/test/core/file/test_create.rb +0 -17
- data/test/core/file/test_ext.rb +0 -31
- data/test/core/file/test_null.rb +0 -14
- data/test/core/file/test_read_binary.rb +0 -19
- data/test/core/file/test_read_list.rb +0 -16
- data/test/core/file/test_rewrite.rb +0 -35
- data/test/core/file/test_rootname.rb +0 -13
- data/test/core/file/test_sanitize.rb +0 -32
- data/test/core/file/test_split_all.rb +0 -14
- data/test/core/file/test_write.rb +0 -22
- data/test/core/file/test_writelines.rb +0 -21
- data/test/core/filetest/test_root.rb +0 -14
- data/test/core/functor_tc.rb +0 -41
- data/test/core/hash/test_alias.rb +0 -25
- data/test/core/hash/test_argumentize.rb +0 -23
- data/test/core/hash/test_at.rb +0 -16
- data/test/core/hash/test_autonew.rb +0 -22
- data/test/core/hash/test_collate.rb +0 -61
- data/test/core/hash/test_count.rb +0 -23
- data/test/core/hash/test_data.rb +0 -35
- data/test/core/hash/test_dearray_values.rb +0 -26
- data/test/core/hash/test_deep_merge.rb +0 -31
- data/test/core/hash/test_deep_rekey.rb +0 -131
- data/test/core/hash/test_delete_at.rb +0 -18
- data/test/core/hash/test_delete_unless.rb +0 -18
- data/test/core/hash/test_delete_values.rb +0 -30
- data/test/core/hash/test_diff.rb +0 -16
- data/test/core/hash/test_each_with_key.rb +0 -16
- data/test/core/hash/test_expect.rb +0 -34
- data/test/core/hash/test_fetch_nested.rb +0 -24
- data/test/core/hash/test_graph.rb +0 -40
- data/test/core/hash/test_insert.rb +0 -20
- data/test/core/hash/test_inverse.rb +0 -20
- data/test/core/hash/test_join.rb +0 -32
- data/test/core/hash/test_keys.rb +0 -41
- data/test/core/hash/test_new_with.rb +0 -17
- data/test/core/hash/test_op_add.rb +0 -17
- data/test/core/hash/test_op_and.rb +0 -31
- data/test/core/hash/test_op_mul.rb +0 -17
- data/test/core/hash/test_op_or.rb +0 -17
- data/test/core/hash/test_op_push.rb +0 -34
- data/test/core/hash/test_op_sub.rb +0 -28
- data/test/core/hash/test_recurse.rb +0 -39
- data/test/core/hash/test_recursively.rb +0 -71
- data/test/core/hash/test_rekey.rb +0 -119
- data/test/core/hash/test_replace_each.rb +0 -17
- data/test/core/hash/test_revalue.rb +0 -98
- data/test/core/hash/test_reverse_merge.rb +0 -39
- data/test/core/hash/test_slice.rb +0 -36
- data/test/core/hash/test_stringify_keys.rb +0 -26
- data/test/core/hash/test_swap.rb +0 -15
- data/test/core/hash/test_symbolize_keys.rb +0 -26
- data/test/core/hash/test_to_mod.rb +0 -24
- data/test/core/hash/test_to_proc.rb +0 -23
- data/test/core/hash/test_to_struct.rb +0 -22
- data/test/core/hash/test_traverse.rb +0 -29
- data/test/core/hash/test_update_each.rb +0 -16
- data/test/core/hash/test_update_keys.rb +0 -21
- data/test/core/hash/test_update_values.rb +0 -15
- data/test/core/hash/test_weave.rb +0 -18
- data/test/core/hash/test_zip.rb +0 -16
- data/test/core/indexable_tc.rb +0 -226
- data/test/core/integer/test_bitmask.rb +0 -73
- data/test/core/integer/test_factorial.rb +0 -30
- data/test/core/integer/test_multiple.rb +0 -16
- data/test/core/integer/test_of.rb +0 -36
- data/test/core/integer/test_ordinal.rb +0 -27
- data/test/core/kernel/test_as.rb +0 -74
- data/test/core/kernel/test_ask.rb +0 -9
- data/test/core/kernel/test_assign.rb +0 -61
- data/test/core/kernel/test_assign_from.rb +0 -48
- data/test/core/kernel/test_attr_singleton.rb +0 -51
- data/test/core/kernel/test_blank.rb +0 -103
- data/test/core/kernel/test_callstack.rb +0 -21
- data/test/core/kernel/test_class.rb +0 -14
- data/test/core/kernel/test_complete.rb +0 -19
- data/test/core/kernel/test_constant.rb +0 -18
- data/test/core/kernel/test_d.rb +0 -10
- data/test/core/kernel/test_deep_clone.rb +0 -31
- data/test/core/kernel/test_deep_copy.rb +0 -15
- data/test/core/kernel/test_dir.rb +0 -24
- data/test/core/kernel/test_disable_warnings.rb +0 -38
- data/test/core/kernel/test_ergo.rb +0 -34
- data/test/core/kernel/test_extension.rb +0 -18
- data/test/core/kernel/test_get.rb +0 -54
- data/test/core/kernel/test_here.rb +0 -13
- data/test/core/kernel/test_hierarchical_send.rb +0 -48
- data/test/core/kernel/test_in.rb +0 -14
- data/test/core/kernel/test_instance_assign.rb +0 -19
- data/test/core/kernel/test_instance_class.rb +0 -15
- data/test/core/kernel/test_instance_extract.rb +0 -28
- data/test/core/kernel/test_instance_replace.rb +0 -47
- data/test/core/kernel/test_instance_send.rb +0 -26
- data/test/core/kernel/test_maybe.rb +0 -13
- data/test/core/kernel/test_meta_alias.rb +0 -18
- data/test/core/kernel/test_meta_class.rb +0 -33
- data/test/core/kernel/test_meta_def.rb +0 -15
- data/test/core/kernel/test_meta_eval.rb +0 -18
- data/test/core/kernel/test_method.rb +0 -20
- data/test/core/kernel/test_not.rb +0 -51
- data/test/core/kernel/test_not_nil.rb +0 -25
- data/test/core/kernel/test_object_class.rb +0 -22
- data/test/core/kernel/test_object_hexid.rb +0 -20
- data/test/core/kernel/test_object_send.rb +0 -25
- data/test/core/kernel/test_presence.rb +0 -37
- data/test/core/kernel/test_qua_class.rb +0 -25
- data/test/core/kernel/test_require_all.rb +0 -11
- data/test/core/kernel/test_respond.rb +0 -38
- data/test/core/kernel/test_returning.rb +0 -17
- data/test/core/kernel/test_silence.rb +0 -24
- data/test/core/kernel/test_singleton_class.rb +0 -15
- data/test/core/kernel/test_super_method.rb +0 -23
- data/test/core/kernel/test_tap.rb +0 -38
- data/test/core/kernel/test_temporarily.rb +0 -25
- data/test/core/kernel/test_true.rb +0 -31
- data/test/core/kernel/test_try.rb +0 -35
- data/test/core/kernel/test_val.rb +0 -30
- data/test/core/kernel/test_with.rb +0 -18
- data/test/core/kernel/test_writers.rb +0 -53
- data/test/core/matchdata/test_match.rb +0 -14
- data/test/core/matchdata/test_matchset.rb +0 -29
- data/test/core/method/test_composition.rb +0 -42
- data/test/core/module/test_abstract.rb +0 -24
- data/test/core/module/test_alias_accessor.rb +0 -27
- data/test/core/module/test_alias_method_chain.rb +0 -34
- data/test/core/module/test_alias_module_function.rb +0 -24
- data/test/core/module/test_all_instance_methods.rb +0 -27
- data/test/core/module/test_ancestor.rb +0 -16
- data/test/core/module/test_anonymous.rb +0 -18
- data/test/core/module/test_attr_setter.rb +0 -28
- data/test/core/module/test_basename.rb +0 -14
- data/test/core/module/test_can.rb +0 -22
- data/test/core/module/test_class.rb +0 -22
- data/test/core/module/test_class_def.rb +0 -22
- data/test/core/module/test_class_extend.rb +0 -73
- data/test/core/module/test_class_inheritor.rb +0 -135
- data/test/core/module/test_copy_inheritor.rb +0 -35
- data/test/core/module/test_enclosure.rb +0 -24
- data/test/core/module/test_instance_function.rb +0 -30
- data/test/core/module/test_instance_method.rb +0 -20
- data/test/core/module/test_instance_method_defined.rb +0 -38
- data/test/core/module/test_integrate.rb +0 -28
- data/test/core/module/test_is.rb +0 -50
- data/test/core/module/test_memoize.rb +0 -33
- data/test/core/module/test_method_clash.rb +0 -59
- data/test/core/module/test_method_space.rb +0 -72
- data/test/core/module/test_methodize.rb +0 -26
- data/test/core/module/test_modname.rb +0 -13
- data/test/core/module/test_module_def.rb +0 -22
- data/test/core/module/test_module_load.rb +0 -23
- data/test/core/module/test_nodef.rb +0 -19
- data/test/core/module/test_op.rb +0 -56
- data/test/core/module/test_pathize.rb +0 -25
- data/test/core/module/test_preextend.rb +0 -26
- data/test/core/module/test_redefine_method.rb +0 -30
- data/test/core/module/test_redirect_method.rb +0 -32
- data/test/core/module/test_remove.rb +0 -18
- data/test/core/module/test_rename_method.rb +0 -34
- data/test/core/module/test_revise.rb +0 -61
- data/test/core/module/test_set.rb +0 -30
- data/test/core/module/test_spacename.rb +0 -15
- data/test/core/module/test_to_obj.rb +0 -20
- data/test/core/module/test_wrap_method.rb +0 -32
- data/test/core/numeric/test_approx.rb +0 -26
- data/test/core/numeric/test_delimit.rb +0 -68
- data/test/core/numeric/test_distance.rb +0 -16
- data/test/core/numeric/test_length.rb +0 -16
- data/test/core/numeric/test_round_to.rb +0 -76
- data/test/core/numeric/test_spacing.rb +0 -17
- data/test/core/object/test_dup.rb +0 -115
- data/test/core/object/test_object_state.rb +0 -75
- data/test/core/object/test_try_dup.rb +0 -59
- data/test/core/proc/test_bind.rb +0 -29
- data/test/core/proc/test_bind_to.rb +0 -17
- data/test/core/proc/test_compose.rb +0 -27
- data/test/core/proc/test_partial.rb +0 -27
- data/test/core/proc/test_to_method.rb +0 -43
- data/test/core/proc/test_update.rb +0 -15
- data/test/core/range/test_combine.rb +0 -32
- data/test/core/range/test_nudge.rb +0 -32
- data/test/core/range/test_op_add.rb +0 -24
- data/test/core/range/test_op_sub.rb +0 -34
- data/test/core/range/test_overlap.rb +0 -15
- data/test/core/range/test_to_rng.rb +0 -20
- data/test/core/range/test_umbrella.rb +0 -32
- data/test/core/range/test_within.rb +0 -25
- data/test/core/regexp/test_arity.rb +0 -30
- data/test/core/regexp/test_multiline.rb +0 -19
- data/test/core/regexp/test_op_add.rb +0 -15
- data/test/core/regexp/test_op_or.rb +0 -16
- data/test/core/regexp/test_to_re.rb +0 -24
- data/test/core/string/test_acronym.rb +0 -14
- data/test/core/string/test_align.rb +0 -32
- data/test/core/string/test_ascii_only.rb +0 -51
- data/test/core/string/test_bracket.rb +0 -37
- data/test/core/string/test_camelcase.rb +0 -59
- data/test/core/string/test_capitalized.rb +0 -36
- data/test/core/string/test_characters.rb +0 -13
- data/test/core/string/test_cleanlines.rb +0 -12
- data/test/core/string/test_cleave.rb +0 -27
- data/test/core/string/test_cmp.rb +0 -18
- data/test/core/string/test_compress_lines.rb +0 -27
- data/test/core/string/test_crypt.rb +0 -17
- data/test/core/string/test_divide.rb +0 -17
- data/test/core/string/test_each_word.rb +0 -17
- data/test/core/string/test_edit_distance.rb +0 -20
- data/test/core/string/test_exclude.rb +0 -23
- data/test/core/string/test_expand_tabs.rb +0 -83
- data/test/core/string/test_file.rb +0 -15
- data/test/core/string/test_fold.rb +0 -21
- data/test/core/string/test_indent.rb +0 -90
- data/test/core/string/test_index_all.rb +0 -22
- data/test/core/string/test_interpolate.rb +0 -16
- data/test/core/string/test_lchomp.rb +0 -25
- data/test/core/string/test_line_wrap.rb +0 -15
- data/test/core/string/test_lowercase.rb +0 -18
- data/test/core/string/test_margin.rb +0 -16
- data/test/core/string/test_methodize.rb +0 -28
- data/test/core/string/test_modulize.rb +0 -28
- data/test/core/string/test_mscan.rb +0 -18
- data/test/core/string/test_natcmp.rb +0 -17
- data/test/core/string/test_nchar.rb +0 -17
- data/test/core/string/test_newlines.rb +0 -14
- data/test/core/string/test_number.rb +0 -44
- data/test/core/string/test_op_div.rb +0 -15
- data/test/core/string/test_op_sub.rb +0 -15
- data/test/core/string/test_pathize.rb +0 -31
- data/test/core/string/test_quote.rb +0 -41
- data/test/core/string/test_random.rb +0 -25
- data/test/core/string/test_range.rb +0 -35
- data/test/core/string/test_remove.rb +0 -50
- data/test/core/string/test_rewrite.rb +0 -17
- data/test/core/string/test_rotate.rb +0 -31
- data/test/core/string/test_shatter.rb +0 -17
- data/test/core/string/test_similarity.rb +0 -22
- data/test/core/string/test_snakecase.rb +0 -22
- data/test/core/string/test_splice.rb +0 -37
- data/test/core/string/test_squish.rb +0 -31
- data/test/core/string/test_store.rb +0 -16
- data/test/core/string/test_subtract.rb +0 -16
- data/test/core/string/test_titlecase.rb +0 -16
- data/test/core/string/test_to_re.rb +0 -35
- data/test/core/string/test_trim.rb +0 -116
- data/test/core/string/test_unbracket.rb +0 -38
- data/test/core/string/test_underscore.rb +0 -21
- data/test/core/string/test_unfold.rb +0 -17
- data/test/core/string/test_unindent.rb +0 -105
- data/test/core/string/test_unquote.rb +0 -13
- data/test/core/string/test_uppercase.rb +0 -22
- data/test/core/string/test_variablize.rb +0 -15
- data/test/core/string/test_word_wrap.rb +0 -80
- data/test/core/string/test_words.rb +0 -24
- data/test/core/string/test_xor.rb +0 -16
- data/test/core/struct/test_replace.rb +0 -18
- data/test/core/symbol/test_as_s.rb +0 -15
- data/test/core/symbol/test_bang.rb +0 -15
- data/test/core/symbol/test_chomp.rb +0 -22
- data/test/core/symbol/test_generate.rb +0 -20
- data/test/core/symbol/test_not.rb +0 -19
- data/test/core/symbol/test_op_div.rb +0 -15
- data/test/core/symbol/test_plain.rb +0 -19
- data/test/core/symbol/test_query.rb +0 -19
- data/test/core/symbol/test_setter.rb +0 -17
- data/test/core/symbol/test_succ.rb +0 -16
- data/test/core/symbol/test_thrown.rb +0 -22
- data/test/core/symbol/test_variablize.rb +0 -14
- data/test/core/time/test_ago.rb +0 -18
- data/test/core/time/test_change.rb +0 -17
- data/test/core/time/test_dst_adjustment.rb +0 -19
- data/test/core/time/test_elapse.rb +0 -15
- data/test/core/time/test_future.rb +0 -32
- data/test/core/time/test_hence.rb +0 -18
- data/test/core/time/test_in.rb +0 -18
- data/test/core/time/test_less.rb +0 -139
- data/test/core/time/test_past.rb +0 -32
- data/test/core/time/test_round_to.rb +0 -34
- data/test/core/time/test_set.rb +0 -43
- data/test/core/time/test_shift.rb +0 -135
- data/test/core/time/test_stamp.rb +0 -42
- data/test/core/time/test_to_time.rb +0 -15
- data/test/core/time/test_trunc.rb +0 -34
- data/test/core/unboundmethod/test_arguments.rb +0 -25
- data/test/standard/binding/test_block_exec.rb +0 -21
- data/test/standard/math/test_abs.rb +0 -13
- data/test/standard/math/test_acot.rb +0 -23
- data/test/standard/math/test_acoth.rb +0 -22
- data/test/standard/math/test_beta.rb +0 -19
- data/test/standard/math/test_ceil.rb +0 -22
- data/test/standard/math/test_cosec.rb +0 -19
- data/test/standard/math/test_cosech.rb +0 -19
- data/test/standard/math/test_cot.rb +0 -13
- data/test/standard/math/test_coth.rb +0 -13
- data/test/standard/math/test_distance.rb +0 -16
- data/test/standard/math/test_exp10.rb +0 -14
- data/test/standard/math/test_exp2.rb +0 -14
- data/test/standard/math/test_factorial.rb +0 -13
- data/test/standard/math/test_floor.rb +0 -23
- data/test/standard/math/test_gcd.rb +0 -18
- data/test/standard/math/test_lcm.rb +0 -13
- data/test/standard/math/test_median.rb +0 -17
- data/test/standard/math/test_percentile.rb +0 -13
- data/test/standard/math/test_pow.rb +0 -30
- data/test/standard/math/test_root.rb +0 -15
- data/test/standard/math/test_sec.rb +0 -19
- data/test/standard/math/test_sech.rb +0 -19
- data/test/standard/math/test_sign.rb +0 -20
- data/test/standard/math/test_sinc.rb +0 -15
- data/test/standard/math/test_srq.rb +0 -20
- data/test/standard/pathname/test_chdir.rb +0 -16
- data/test/standard/pathname/test_readline.rb +0 -23
- data/test/standard/test_argvector.rb +0 -64
- data/test/standard/test_cloneable.rb +0 -60
- data/test/standard/test_date.rb +0 -82
- data/test/standard/test_enumargs.rb +0 -105
- data/test/standard/test_equitable.rb +0 -46
- data/test/standard/test_instantiable.rb +0 -40
- data/test/standard/test_math.rb +0 -3
- data/test/standard/test_memoizable.rb +0 -42
- data/test/standard/test_multipliers.rb +0 -141
- data/test/standard/test_ostruct.rb +0 -191
- data/test/standard/test_random.rb +0 -241
- data/test/standard/test_shellwords.rb +0 -74
- data/test/standard/test_thread.rb +0 -24
- data/test/standard/test_timer.rb +0 -62
- data/test/standard/test_tuple.rb +0 -68
- data/test/standard/test_uri.rb +0 -50
|
@@ -1,91 +1,3 @@
|
|
|
1
1
|
require 'ostruct'
|
|
2
2
|
require 'facets/ostruct/initialize'
|
|
3
|
-
require 'facets/ostruct/to_h'
|
|
4
|
-
require 'facets/ostruct/merge'
|
|
5
|
-
require 'facets/ostruct/each'
|
|
6
3
|
require 'facets/ostruct/to_ostruct'
|
|
7
|
-
require 'facets/ostruct/op_fetch'
|
|
8
|
-
require 'facets/ostruct/op_store'
|
|
9
|
-
|
|
10
|
-
class OpenStruct
|
|
11
|
-
|
|
12
|
-
#--
|
|
13
|
-
# TO BE DEPRECATED
|
|
14
|
-
# Must consider that accessing instance_delegate instead can be dangerous.
|
|
15
|
-
# Might we us a Functor to ensure the table keys are always symbols?
|
|
16
|
-
#++
|
|
17
|
-
|
|
18
|
-
# Provides access to an OpenStruct's inner table.
|
|
19
|
-
#
|
|
20
|
-
# o = OpenStruct.new
|
|
21
|
-
# o.a = 1
|
|
22
|
-
# o.b = 2
|
|
23
|
-
# o.instance_delegate.map { |k, v| "#{k} #{v}" }
|
|
24
|
-
# #=> ["a 1", "b 2"]
|
|
25
|
-
#
|
|
26
|
-
# @deprecated Use `#marshal_dump` instead.
|
|
27
|
-
#
|
|
28
|
-
def instance_delegate
|
|
29
|
-
warn "OpenStruct#instance_delegate is deprecated, use #marshal_dump instead."
|
|
30
|
-
@table
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
# @deprecated Use `#marshal_dump` instead.
|
|
34
|
-
alias ostruct_delegate instance_delegate
|
|
35
|
-
|
|
36
|
-
# Insert/update hash data on the fly.
|
|
37
|
-
#
|
|
38
|
-
# o = OpenStruct.new
|
|
39
|
-
# o.ostruct_update(:a => 2)
|
|
40
|
-
# o.a #=> 2
|
|
41
|
-
#
|
|
42
|
-
# @deprecated Use #merge! instead.
|
|
43
|
-
#
|
|
44
|
-
def ostruct_update(other)
|
|
45
|
-
warn "OpenSrtuct#ostruct_update has been deprecated. Use #merge! instead."
|
|
46
|
-
merge!(other)
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
# Insert/update hash data on the fly.
|
|
50
|
-
#
|
|
51
|
-
# o = OpenStruct.new
|
|
52
|
-
# o.ostruct_update(:a => 2)
|
|
53
|
-
# o.a #=> 2
|
|
54
|
-
#
|
|
55
|
-
# @deprecated Use #merge! instead.
|
|
56
|
-
#
|
|
57
|
-
def __update__(other)
|
|
58
|
-
raise NameError, "OpenSrtuct#__update__ has been deprecated. Use #merge! instead."
|
|
59
|
-
#merge!(other)
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
# TODO: How to handle regular merge, since it lacks punctuation to make it safe.
|
|
63
|
-
# Maybe `#update!`? Kind of odd but could work.
|
|
64
|
-
|
|
65
|
-
# Merge hash data creating a new OpenStruct object.
|
|
66
|
-
#
|
|
67
|
-
# o = OpenStruct.new
|
|
68
|
-
# x = o.ostruct_merge(:a => 2)
|
|
69
|
-
# x.a #=> 2
|
|
70
|
-
#
|
|
71
|
-
def ostruct_merge(other)
|
|
72
|
-
o = dup
|
|
73
|
-
o.merge!(other)
|
|
74
|
-
o
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
# Merge hash data creating a new OpenStruct object.
|
|
78
|
-
#
|
|
79
|
-
# o = OpenStruct.new
|
|
80
|
-
# x = o.__merge__(:a => 2)
|
|
81
|
-
# x.a #=> 2
|
|
82
|
-
#
|
|
83
|
-
def __merge__(other)
|
|
84
|
-
o = dup
|
|
85
|
-
o.merge!(other)
|
|
86
|
-
o
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
# Copyright (c) 2005 Thomas Sawyer (Ruby License)
|
|
@@ -1,16 +1,26 @@
|
|
|
1
1
|
class Pathname
|
|
2
2
|
|
|
3
|
-
#
|
|
3
|
+
# Extends Ruby's built-in Pathname#glob to accept symbol-based
|
|
4
|
+
# flags in addition to the standard File::FNM_* constants.
|
|
5
|
+
#
|
|
6
|
+
# Pathname.new('/tmp').glob('*', :dotmatch)
|
|
7
|
+
#
|
|
8
|
+
# Supported symbols: :noescape, :pathname, :dotmatch, :casefold
|
|
9
|
+
#
|
|
10
|
+
alias_method :_glob_original, :glob
|
|
11
|
+
private :_glob_original
|
|
12
|
+
|
|
4
13
|
def glob(match, *opts)
|
|
5
|
-
|
|
6
|
-
|
|
14
|
+
if opts.any? { |o| o.is_a?(Symbol) || o.is_a?(String) }
|
|
15
|
+
flags = glob_flags(opts)
|
|
16
|
+
Dir.glob(::File.join(self.to_s, match), flags).map { |m| self.class.new(m) }
|
|
17
|
+
else
|
|
18
|
+
_glob_original(match, *opts)
|
|
19
|
+
end
|
|
7
20
|
end
|
|
8
21
|
|
|
9
22
|
# Return the first glob match.
|
|
10
23
|
#
|
|
11
|
-
# DEPRECATE: While slightly faster then glob().first, not really worth it
|
|
12
|
-
# unless this can be rewritten to shortcut on first match (using fnmatch?).
|
|
13
|
-
# In wich case, is there a better name for this method?
|
|
14
24
|
def glob_first(match, *opts)
|
|
15
25
|
flags = glob_flags(opts)
|
|
16
26
|
file = ::Dir.glob(::File.join(self.to_s, match), flags).first
|
|
@@ -28,15 +38,12 @@ class Pathname
|
|
|
28
38
|
# Does a directory contain a matching entry?
|
|
29
39
|
# Or if the pathname is a file, same as #fnmatch.
|
|
30
40
|
#
|
|
31
|
-
# TODO: Move to own file? Better name?
|
|
32
|
-
#
|
|
33
41
|
# Returns [Pathname]
|
|
34
|
-
|
|
35
|
-
def include?(pattern,*opts)
|
|
42
|
+
def include?(pattern, *opts)
|
|
36
43
|
if directory?
|
|
37
|
-
glob_first(pattern
|
|
44
|
+
glob_first(pattern, *opts)
|
|
38
45
|
else
|
|
39
|
-
fnmatch(pattern
|
|
46
|
+
fnmatch(pattern, *opts)
|
|
40
47
|
end
|
|
41
48
|
end
|
|
42
49
|
|
|
@@ -1,20 +1,9 @@
|
|
|
1
1
|
class Pathname
|
|
2
2
|
|
|
3
|
-
#
|
|
4
|
-
#
|
|
5
|
-
# CREDIT: Daniel Burger
|
|
6
|
-
|
|
3
|
+
# @deprecated Use Pathname.new(File::NULL) instead.
|
|
7
4
|
def self.null
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
'NUL'
|
|
11
|
-
when /amiga/i
|
|
12
|
-
'NIL:'
|
|
13
|
-
when /openvms/i
|
|
14
|
-
'NL:'
|
|
15
|
-
else
|
|
16
|
-
'/dev/null'
|
|
17
|
-
end
|
|
5
|
+
warn "Pathname.null is deprecated. Use Pathname.new(File::NULL) instead.", uplevel: 1
|
|
6
|
+
new(File::NULL)
|
|
18
7
|
end
|
|
19
8
|
|
|
20
9
|
end
|
|
@@ -5,28 +5,13 @@ require 'facets/kernel/maybe'
|
|
|
5
5
|
# = Randomization Extensions
|
|
6
6
|
#
|
|
7
7
|
# This library extends Array, String, Hash and other classes with randomization
|
|
8
|
-
# methods.
|
|
9
|
-
# random element from the reciever or they randomly "shuffle" the reciever.
|
|
10
|
-
#
|
|
11
|
-
# The most common example is Array#shuffle, which simply randmomizes the
|
|
12
|
-
# order of an array's elements.
|
|
13
|
-
#
|
|
14
|
-
# [1,2,3].shuffle #~> [2,3,1]
|
|
15
|
-
#
|
|
16
|
-
# The other methods do similar things for their respective classes.
|
|
17
|
-
#
|
|
18
|
-
# The classes are all extended via mixins which have been created within
|
|
19
|
-
# Ruby's Random class.
|
|
8
|
+
# methods.
|
|
20
9
|
#
|
|
21
10
|
# Credit for this work is due to:
|
|
22
11
|
#
|
|
23
12
|
# * Ilmari Heikkinen
|
|
24
13
|
# * Christian Neukirchen
|
|
25
14
|
# * Thomas Sawyer
|
|
26
|
-
#
|
|
27
|
-
# NOTE: Inline QED tests are almost pointless here b/c... yea, it's random.
|
|
28
|
-
# So indtead of the usual `#=>` we use `#~>` which means approx. equal and
|
|
29
|
-
# prevens QED from making a hard assertion.
|
|
30
15
|
|
|
31
16
|
class Random
|
|
32
17
|
|
|
@@ -37,10 +22,6 @@ class Random
|
|
|
37
22
|
public :number
|
|
38
23
|
end
|
|
39
24
|
|
|
40
|
-
##def self.number(*args)
|
|
41
|
-
## ::Kernel.rand(*args)
|
|
42
|
-
##end
|
|
43
|
-
|
|
44
25
|
# Module method to generate a random letter.
|
|
45
26
|
#
|
|
46
27
|
# Random.letter #~> "q"
|
|
@@ -68,36 +49,19 @@ class Random
|
|
|
68
49
|
# CREDIT: Lavir the Whiolet, Thomas Sawyer
|
|
69
50
|
def at_rand
|
|
70
51
|
first, last = first(), last()
|
|
71
|
-
if first.respond_to?(:random_delta)
|
|
52
|
+
if first.respond_to?(:random_delta)
|
|
72
53
|
begin
|
|
73
54
|
first.random_delta(last, exclude_end?)
|
|
74
55
|
rescue
|
|
75
|
-
to_a.
|
|
56
|
+
to_a.sample
|
|
76
57
|
end
|
|
77
58
|
else
|
|
78
|
-
to_a.
|
|
59
|
+
to_a.sample
|
|
79
60
|
end
|
|
80
|
-
##elsif first.respond_to?(:succ)
|
|
81
|
-
## # optimized algorithm
|
|
82
|
-
## if (Fixnum === first || Bignum === first) &&
|
|
83
|
-
## (Fixnum === last || Bignum === last)
|
|
84
|
-
## last -= 1 if exclude_end?
|
|
85
|
-
## return nil if last < first
|
|
86
|
-
## return Random.number(last - first + 1) + first
|
|
87
|
-
## end
|
|
88
|
-
## # standard algorithm
|
|
89
|
-
## return to_a.at_rand
|
|
90
|
-
##elsif Numeric === first && Numeric === last
|
|
91
|
-
## return nil if last < first
|
|
92
|
-
## return nil if exclude_end? && last == first
|
|
93
|
-
## return (last - first) * Random.number + first
|
|
94
|
-
##else
|
|
95
|
-
## return nil
|
|
96
|
-
##end
|
|
97
61
|
end
|
|
98
62
|
end
|
|
99
63
|
|
|
100
|
-
# Random extensions
|
|
64
|
+
# Random extensions for Integer class.
|
|
101
65
|
#
|
|
102
66
|
module IntegerExtensions
|
|
103
67
|
#
|
|
@@ -124,40 +88,19 @@ class Random
|
|
|
124
88
|
# Random extensions for Array class.
|
|
125
89
|
#
|
|
126
90
|
module ArrayExtensions
|
|
127
|
-
# Return a random element from the array.
|
|
128
|
-
#
|
|
129
|
-
# [1, 2, 3, 4].at_rand #~> 2
|
|
130
|
-
# [1, 2, 3, 4].at_rand #~> 4
|
|
131
|
-
#
|
|
132
|
-
def at_rand
|
|
133
|
-
at(Random.number(size))
|
|
134
|
-
end
|
|
135
91
|
|
|
136
|
-
#
|
|
137
|
-
# random element
|
|
92
|
+
# Destructive version of Array#sample. Removes and returns
|
|
93
|
+
# a random element, or n random exclusive elements.
|
|
138
94
|
#
|
|
139
95
|
# a = [1,2,3,4]
|
|
140
|
-
# a.
|
|
96
|
+
# a.sample! #~> 2
|
|
141
97
|
# a #~> [1,3,4]
|
|
142
98
|
#
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
# picked exclusive elements if given a number.
|
|
149
|
-
def pick(n=nil)
|
|
150
|
-
if n
|
|
151
|
-
a = self.dup
|
|
152
|
-
a.pick!(n)
|
|
153
|
-
else
|
|
154
|
-
at(Random.number(size))
|
|
155
|
-
end
|
|
156
|
-
end
|
|
157
|
-
|
|
158
|
-
# Similar to #at_rand!, but given a number will return
|
|
159
|
-
# an array of exclusive elements.
|
|
160
|
-
def pick!(n=nil)
|
|
99
|
+
# a = [1,2,3,4,5]
|
|
100
|
+
# a.sample!(3) #~> [2,4,1]
|
|
101
|
+
# a #~> [3,5]
|
|
102
|
+
#
|
|
103
|
+
def sample!(n=nil)
|
|
161
104
|
if n
|
|
162
105
|
if n > self.size
|
|
163
106
|
r = self.dup
|
|
@@ -173,6 +116,30 @@ class Random
|
|
|
173
116
|
end
|
|
174
117
|
end
|
|
175
118
|
|
|
119
|
+
# @deprecated Use Array#sample instead.
|
|
120
|
+
def at_rand
|
|
121
|
+
warn "Array#at_rand is deprecated. Use Array#sample instead.", uplevel: 1
|
|
122
|
+
sample
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
# @deprecated Use Array#sample! instead.
|
|
126
|
+
def at_rand!
|
|
127
|
+
warn "Array#at_rand! is deprecated. Use Array#sample! instead.", uplevel: 1
|
|
128
|
+
sample!
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
# @deprecated Use Array#sample instead.
|
|
132
|
+
def pick(n=nil)
|
|
133
|
+
warn "Array#pick is deprecated. Use Array#sample instead.", uplevel: 1
|
|
134
|
+
n ? sample(n) : sample
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
# @deprecated Use Array#sample! instead.
|
|
138
|
+
def pick!(n=nil)
|
|
139
|
+
warn "Array#pick! is deprecated. Use Array#sample! instead.", uplevel: 1
|
|
140
|
+
sample!(n)
|
|
141
|
+
end
|
|
142
|
+
|
|
176
143
|
# Random index.
|
|
177
144
|
#
|
|
178
145
|
def rand_index
|
|
@@ -184,14 +151,6 @@ class Random
|
|
|
184
151
|
# elements, otherwise returns a random number of elements
|
|
185
152
|
# upto the size of the Array.
|
|
186
153
|
#
|
|
187
|
-
# By defualt the returned values are exclusive of
|
|
188
|
-
# each other, but if _exclusive_ is set to <tt>false</tt>,
|
|
189
|
-
# the same values can be choosen more than once.
|
|
190
|
-
#
|
|
191
|
-
# When _exclusive_ is <tt>true</tt> (the default) and the
|
|
192
|
-
# _number_ given is greater than the size of the array,
|
|
193
|
-
# then all values are returned.
|
|
194
|
-
#
|
|
195
154
|
# [1, 2, 3, 4].rand_subset(1) #~> [2]
|
|
196
155
|
# [1, 2, 3, 4].rand_subset(4) #~> [2, 1, 3, 4]
|
|
197
156
|
# [1, 2, 3, 4].rand_subset #~> [1, 3, 4]
|
|
@@ -200,7 +159,6 @@ class Random
|
|
|
200
159
|
def rand_subset(number=nil, exclusive=true)
|
|
201
160
|
number = Random.number(size) unless number
|
|
202
161
|
number = number.to_int
|
|
203
|
-
#return self.dup if (number >= size and exlusive)
|
|
204
162
|
return sort_by{rand}.slice(0,number) if exclusive
|
|
205
163
|
ri =[]; number.times { |n| ri << Random.number(size) }
|
|
206
164
|
return values_at(*ri)
|
|
@@ -223,36 +181,6 @@ class Random
|
|
|
223
181
|
end
|
|
224
182
|
end
|
|
225
183
|
|
|
226
|
-
# Randomize the order of an array.
|
|
227
|
-
#
|
|
228
|
-
# [1,2,3,4].shuffle #~> [2,4,1,3]
|
|
229
|
-
#
|
|
230
|
-
def shuffle
|
|
231
|
-
dup.shuffle!
|
|
232
|
-
#sort_by{Random.number}
|
|
233
|
-
end
|
|
234
|
-
|
|
235
|
-
# As with #shuffle but modifies the array in place.
|
|
236
|
-
# The algorithm used here is known as a Fisher-Yates shuffle.
|
|
237
|
-
#
|
|
238
|
-
# a = [1,2,3,4]
|
|
239
|
-
# a.shuffle!
|
|
240
|
-
#
|
|
241
|
-
# a #~> [2,4,1,3]
|
|
242
|
-
#
|
|
243
|
-
# CREDIT Niel Spring
|
|
244
|
-
def shuffle!
|
|
245
|
-
s = size
|
|
246
|
-
each_index do |j|
|
|
247
|
-
i = Random.number(s-j)
|
|
248
|
-
#self[j], self[j+i] = self[j+i], self[j]
|
|
249
|
-
tmp = self[j]
|
|
250
|
-
self[j] = self[j+i]
|
|
251
|
-
self[j+i] = tmp
|
|
252
|
-
end
|
|
253
|
-
self
|
|
254
|
-
end
|
|
255
|
-
|
|
256
184
|
end
|
|
257
185
|
|
|
258
186
|
# Random extensions for Hash class.
|
|
@@ -260,7 +188,7 @@ class Random
|
|
|
260
188
|
module HashExtensions
|
|
261
189
|
# Returns a random key.
|
|
262
190
|
#
|
|
263
|
-
# {:one => 1, :two => 2, :three => 3}.
|
|
191
|
+
# {:one => 1, :two => 2, :three => 3}.rand_key #~> :three
|
|
264
192
|
#
|
|
265
193
|
def rand_key
|
|
266
194
|
keys.at(Random.number(keys.size))
|
|
@@ -278,11 +206,9 @@ class Random
|
|
|
278
206
|
return k
|
|
279
207
|
end
|
|
280
208
|
|
|
281
|
-
alias_method( :pick_key, :rand_key! )
|
|
282
|
-
|
|
283
209
|
# Returns a random key-value pair.
|
|
284
210
|
#
|
|
285
|
-
# {:one => 1, :two => 2, :three => 3}.
|
|
211
|
+
# {:one => 1, :two => 2, :three => 3}.rand_pair #~> [:one, 1]
|
|
286
212
|
#
|
|
287
213
|
def rand_pair
|
|
288
214
|
k = rand_key
|
|
@@ -301,8 +227,6 @@ class Random
|
|
|
301
227
|
return k,v
|
|
302
228
|
end
|
|
303
229
|
|
|
304
|
-
alias_method( :pick_pair, :rand_pair! )
|
|
305
|
-
|
|
306
230
|
# Returns a random hash value.
|
|
307
231
|
#
|
|
308
232
|
# {:one => 1, :two => 2, :three => 3}.rand_value #~> 2
|
|
@@ -315,8 +239,8 @@ class Random
|
|
|
315
239
|
# Deletes a random key-value pair and returns the value.
|
|
316
240
|
#
|
|
317
241
|
# a = {:one => 1, :two => 2, :three => 3}
|
|
318
|
-
# a.
|
|
319
|
-
# a
|
|
242
|
+
# a.rand_value! #~> 2
|
|
243
|
+
# a #~> {:one => 1, :three => 3}
|
|
320
244
|
#
|
|
321
245
|
def rand_value!
|
|
322
246
|
k,v = rand_pair
|
|
@@ -324,11 +248,6 @@ class Random
|
|
|
324
248
|
return v
|
|
325
249
|
end
|
|
326
250
|
|
|
327
|
-
alias_method( :pick, :rand_value! )
|
|
328
|
-
|
|
329
|
-
alias_method( :at_rand, :rand_value )
|
|
330
|
-
alias_method( :at_rand!, :rand_value! )
|
|
331
|
-
|
|
332
251
|
# Returns a copy of the hash with _values_ arranged
|
|
333
252
|
# in new random order.
|
|
334
253
|
#
|
|
@@ -364,15 +283,12 @@ class Random
|
|
|
364
283
|
# Class-level methods.
|
|
365
284
|
module Self
|
|
366
285
|
# Returns a randomly generated string. One possible use is
|
|
367
|
-
# password initialization. Takes a max
|
|
286
|
+
# password initialization. Takes a max length of characters
|
|
368
287
|
# (default 8) and an optional valid char Regexp (default /\w\d/).
|
|
369
288
|
#
|
|
370
289
|
# String.random #~> 'dd4qed4r'
|
|
371
290
|
#
|
|
372
291
|
# CREDIT George Moschovitis
|
|
373
|
-
#--
|
|
374
|
-
# TODO: This is not very efficient. Better way?
|
|
375
|
-
#++
|
|
376
292
|
def random(max_length = 8, char_re = /[\w\d]/)
|
|
377
293
|
raise ArgumentError.new('second argument must be a regular expression') unless char_re.is_a?(Regexp)
|
|
378
294
|
string = ""
|
|
@@ -387,18 +303,17 @@ class Random
|
|
|
387
303
|
#
|
|
388
304
|
# CREDIT: Guido De Rosa
|
|
389
305
|
def random_binary(n_bytes)
|
|
390
|
-
( Array.new(n_bytes){ rand(0x100) } ).pack('c*')
|
|
306
|
+
( Array.new(n_bytes){ rand(0x100) } ).pack('c*')
|
|
391
307
|
end
|
|
392
308
|
end
|
|
393
309
|
|
|
394
310
|
# Return a random separation of the string.
|
|
395
|
-
# Default separation is by
|
|
311
|
+
# Default separation is by character.
|
|
396
312
|
#
|
|
397
313
|
# "Ruby rules".at_rand(' ') #~> ["Ruby"]
|
|
398
314
|
#
|
|
399
315
|
def at_rand( separator=// )
|
|
400
|
-
|
|
401
|
-
self.split(separator,-1).at_rand
|
|
316
|
+
self.split(separator,-1).sample
|
|
402
317
|
end
|
|
403
318
|
|
|
404
319
|
# Return a random separation while removing it
|
|
@@ -409,7 +324,6 @@ class Random
|
|
|
409
324
|
# s #~> "rules"
|
|
410
325
|
#
|
|
411
326
|
def at_rand!( separator=// )
|
|
412
|
-
#separator = self.class.patterns( separator )
|
|
413
327
|
a = self.shatter( separator )
|
|
414
328
|
w = []; a.each_with_index { |s,i| i % 2 == 0 ? w << s : w.last << s }
|
|
415
329
|
i = Random.number(w.size)
|
|
@@ -447,8 +361,8 @@ class Random
|
|
|
447
361
|
Random.number(size)
|
|
448
362
|
end
|
|
449
363
|
|
|
450
|
-
# Return the string with
|
|
451
|
-
# in a random order. The default
|
|
364
|
+
# Return the string with separated sections arranged
|
|
365
|
+
# in a random order. The default separation is by character.
|
|
452
366
|
#
|
|
453
367
|
# "Ruby rules".shuffle #~> "e lybRsuur"
|
|
454
368
|
#
|
|
@@ -42,7 +42,7 @@ class Tuple
|
|
|
42
42
|
if block_given?
|
|
43
43
|
values = []
|
|
44
44
|
arg.times { |i| values << block[i] }
|
|
45
|
-
|
|
45
|
+
elsif Integer === arg
|
|
46
46
|
values = [ default ] * arg
|
|
47
47
|
else
|
|
48
48
|
values = arg.to_ary
|
|
@@ -54,7 +54,7 @@ class Tuple
|
|
|
54
54
|
if block_given?
|
|
55
55
|
@values = []
|
|
56
56
|
arg.times { |i| @values << blk[i] }
|
|
57
|
-
|
|
57
|
+
elsif Integer === arg
|
|
58
58
|
@values = [ default ] * arg
|
|
59
59
|
else
|
|
60
60
|
@values = arg.to_ary
|
|
@@ -278,5 +278,3 @@ class ::Array
|
|
|
278
278
|
end
|
|
279
279
|
|
|
280
280
|
end
|
|
281
|
-
|
|
282
|
-
# Copyright (c) 2005 Thomas Sawyer (Ruby License)
|
data/lib/standard/facets/uri.rb
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
require 'uri'
|
|
2
|
+
require 'cgi'
|
|
2
3
|
|
|
3
4
|
require 'facets/uri/cgi_escape.rb'
|
|
4
5
|
require 'facets/uri/cgi_unescape.rb'
|
|
@@ -12,12 +13,12 @@ module URI
|
|
|
12
13
|
module Kernel
|
|
13
14
|
#
|
|
14
15
|
def uri(s, w=%r{[^a-zA-Z_0-9./-]})
|
|
15
|
-
|
|
16
|
+
CGI.escape(s)
|
|
16
17
|
end
|
|
17
18
|
|
|
18
19
|
#
|
|
19
20
|
def unuri(s)
|
|
20
|
-
|
|
21
|
+
CGI.unescape(s)
|
|
21
22
|
end
|
|
22
23
|
end
|
|
23
24
|
|