facets 3.0.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/CONTRIBUTING.md +112 -0
- data/HISTORY.md +179 -0
- data/LICENSE.txt +21 -343
- data/{README.rdoc → README.md} +74 -67
- data/lib/core/facets/array/arrange.rb +1 -42
- data/lib/core/facets/array/average.rb +15 -0
- data/lib/core/facets/array/before.rb +1 -1
- data/lib/core/facets/array/collapse.rb +4 -0
- data/lib/core/facets/array/delete_first.rb +21 -0
- data/lib/core/facets/array/delete_values_at.rb +1 -0
- data/lib/core/facets/array/divide.rb +7 -0
- data/lib/core/facets/array/duplicates.rb +15 -0
- data/lib/core/facets/array/each_pair.rb +1 -4
- data/lib/core/facets/array/first.rb +1 -0
- data/lib/core/facets/array/from.rb +11 -16
- data/lib/core/facets/array/indexes.rb +113 -0
- data/lib/core/facets/array/last.rb +1 -0
- data/lib/core/facets/array/mode.rb +2 -2
- data/lib/core/facets/array/nonuniq.rb +6 -8
- data/lib/core/facets/array/occurrence.rb +8 -4
- data/lib/core/facets/array/probability.rb +1 -1
- data/lib/core/facets/array/recursively.rb +2 -2
- data/lib/core/facets/array/remove.rb +39 -0
- data/lib/core/facets/array/span.rb +29 -0
- data/lib/core/facets/array/splice.rb +1 -1
- data/lib/core/facets/array/split_at.rb +25 -0
- data/lib/core/facets/array/standard_deviation.rb +28 -0
- 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 +7 -3
- data/lib/core/facets/array/variance.rb +20 -0
- data/lib/core/facets/array.rb +1 -0
- 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/binding.rb +0 -1
- 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/cluster.rb +6 -4
- 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/hashify.rb +27 -31
- 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/atomic_open.rb +1 -1
- 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 +11 -6
- 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 +7 -5
- data/lib/core/facets/kernel/callstack.rb +5 -24
- data/lib/core/facets/kernel/eigenclass.rb +6 -6
- data/lib/core/facets/kernel/ergo.rb +3 -3
- 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/like.rb +1 -1
- 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/matchdata/matchtree.rb +2 -0
- 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/numeric/delimit.rb +20 -0
- 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 +27 -0
- 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/indent.rb +0 -8
- data/lib/core/facets/string/lchomp.rb +7 -14
- data/lib/core/facets/string/margin.rb +0 -4
- data/lib/core/facets/string/newlines.rb +0 -2
- data/lib/core/facets/string/random.rb +13 -3
- data/lib/core/facets/string/similarity.rb +7 -6
- 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 -3
- 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/enumargs.rb +5 -0
- 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 +2 -2
- data/lib/standard/facets/multiton.rb +1 -1
- data/lib/standard/facets/net/http.rb +33 -14
- 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/timer.rb +3 -3
- data/lib/standard/facets/tuple.rb +2 -4
- data/lib/standard/facets/uri.rb +3 -2
- metadata +84 -1181
- data/.index +0 -76
- data/.yardopts +0 -10
- data/CONTRIBUTE.md +0 -78
- 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/combination.rdoc +0 -19
- data/demo/core/array/delete.rdoc +0 -23
- data/demo/core/array/index.rdoc +0 -14
- data/demo/core/array/merge.rdoc +0 -15
- data/demo/core/array/only.rdoc +0 -9
- data/demo/core/array/pad.rdoc +0 -28
- data/demo/core/array/permutation.rdoc +0 -10
- data/demo/core/array/product.rdoc +0 -26
- data/demo/core/array/recursively.rdoc +0 -16
- data/demo/core/array/rotate.rdoc +0 -30
- data/demo/core/array/select.rdoc +0 -8
- data/demo/core/array/uniq_by.rdoc +0 -9
- data/demo/core/binding/caller.rdoc +0 -57
- data/demo/core/binding/defined.rdoc +0 -10
- data/demo/core/binding/eval.rdoc +0 -8
- data/demo/core/binding/local_variables.rdoc +0 -26
- data/demo/core/binding/opvars.rdoc +0 -16
- data/demo/core/binding/self.rdoc +0 -6
- data/demo/core/class/descendants.rdoc +0 -10
- data/demo/core/class/to_proc.rdoc +0 -8
- data/demo/core/comparable/cap.rdoc +0 -20
- data/demo/core/comparable/clip.rdoc +0 -37
- data/demo/core/comparable/cmp.rdoc +0 -18
- data/demo/core/comparable/op_get.rdoc +0 -29
- data/demo/core/dir/ascend.rdoc +0 -24
- data/demo/core/dir/descend.rdoc +0 -14
- data/demo/core/dir/multiglob.rdoc +0 -41
- data/demo/core/dir/parent.rdoc +0 -6
- data/demo/core/dir/recurse.rdoc +0 -41
- data/demo/core/exception/detail.rdoc +0 -12
- data/demo/core/facets.rdoc +0 -6
- data/demo/core/filetest/root.rdoc +0 -6
- data/demo/core/hash/recursively.rdoc +0 -21
- data/demo/core/indexable.rdoc +0 -95
- data/demo/core/integer/bitmask.rdoc +0 -46
- data/demo/core/integer/even.rdoc +0 -12
- data/demo/core/integer/factorial.rdoc +0 -10
- data/demo/core/integer/length.rdoc +0 -7
- data/demo/core/integer/multiple.rdoc +0 -10
- data/demo/core/integer/odd.rdoc +0 -12
- data/demo/core/integer/of.rdoc +0 -14
- data/demo/core/integer/ordinal.rdoc +0 -9
- data/demo/core/matchdata/match.rdoc +0 -7
- data/demo/core/matchdata/matchset.rdoc +0 -15
- data/demo/core/module/cattr.rdoc +0 -43
- data/demo/core/module/class_extend.rdoc +0 -64
- data/demo/core/module/class_inheritor.rdoc +0 -126
- data/demo/core/module/copy_inheritor.rdoc +0 -30
- data/demo/core/module/method_space.rdoc +0 -55
- data/demo/core/string/align.rdoc +0 -34
- data/demo/core/string/bracket.rdoc +0 -35
- data/demo/core/string/bytes.rdoc +0 -8
- data/demo/core/string/camelcase.rdoc +0 -47
- data/demo/core/string/capitalized.rdoc +0 -27
- data/demo/core/string/characters.rdoc +0 -11
- data/demo/core/string/cleanlines.rdoc +0 -10
- data/demo/core/string/cleave.rdoc +0 -49
- data/demo/core/string/divide.rdoc +0 -9
- data/demo/core/string/each_char.rdoc +0 -9
- data/demo/core/string/each_word.rdoc +0 -9
- data/demo/core/string/end_with.rdoc +0 -6
- data/demo/core/string/expand_tabs.rdoc +0 -69
- data/demo/core/string/fold.rdoc +0 -14
- data/demo/core/string/indent.rdoc +0 -65
- data/demo/core/string/interpolate.rdoc +0 -7
- data/demo/core/string/lchomp.rdoc +0 -14
- data/demo/core/string/line_wrap.rdoc +0 -7
- data/demo/core/string/lines.rdoc +0 -8
- data/demo/core/string/margin.rdoc +0 -92
- data/demo/core/string/methodize.rdoc +0 -22
- data/demo/core/string/modulize.rdoc +0 -22
- data/demo/core/string/mscan.rdoc +0 -10
- data/demo/core/string/natcmp.rdoc +0 -10
- data/demo/core/string/nchar.rdoc +0 -9
- data/demo/core/string/newlines.rdoc +0 -9
- data/demo/core/string/op_sub.rdoc +0 -7
- data/demo/core/string/pathize.rdoc +0 -22
- data/demo/core/string/quote.rdoc +0 -20
- data/demo/core/string/range.rdoc +0 -19
- data/demo/core/string/rewrite.rdoc +0 -9
- data/demo/core/string/shatter.rdoc +0 -9
- data/demo/core/string/snakecase.rdoc +0 -10
- data/demo/core/string/splice.rdoc +0 -28
- data/demo/core/string/start_with.rdoc +0 -7
- data/demo/core/string/subtract.rdoc +0 -8
- data/demo/core/string/tab.rdoc +0 -16
- data/demo/core/string/tabto.rdoc +0 -29
- data/demo/core/string/titlecase.rdoc +0 -8
- data/demo/core/string/to_re.rdoc +0 -22
- data/demo/core/string/unfold.rdoc +0 -9
- data/demo/core/string/unindent.rdoc +0 -65
- data/demo/core/string/unquote.rdoc +0 -6
- data/demo/core/string/variablize.rdoc +0 -7
- data/demo/core/string/word_wrap.rdoc +0 -54
- data/demo/core/string/words.rdoc +0 -13
- data/demo/core/string/xor.rdoc +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 -14
- data/lib/core/facets/array/to_h.rb +0 -22
- data/lib/core/facets/binding/local_variables.rb +0 -16
- 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 -30
- 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/string/tab.rb +0 -2
- data/lib/core/facets/string/tabto.rb +0 -2
- data/lib/core/facets/symbol/succ.rb +0 -23
- data/lib/core/facets.yml +0 -76
- 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_after.rb +0 -27
- data/test/core/array/test_arrange.rb +0 -37
- data/test/core/array/test_before.rb +0 -27
- data/test/core/array/test_collapse.rb +0 -14
- data/test/core/array/test_combination.rb +0 -25
- 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_divide.rb +0 -14
- data/test/core/array/test_duplicates.rb +0 -29
- data/test/core/array/test_each_overlap.rb +0 -31
- 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_index.rb +0 -20
- 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_pad.rb +0 -40
- data/test/core/array/test_peek.rb +0 -28
- data/test/core/array/test_permutation.rb +0 -20
- data/test/core/array/test_poke.rb +0 -21
- data/test/core/array/test_probability.rb +0 -18
- data/test/core/array/test_product.rb +0 -64
- 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_rotate.rb +0 -38
- data/test/core/array/test_select.rb +0 -16
- 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_step.rb +0 -28
- data/test/core/array/test_store.rb +0 -22
- data/test/core/array/test_traverse.rb +0 -26
- data/test/core/array/test_uniq_by.rb +0 -17
- data/test/core/array/test_unique_permutation.rb +0 -23
- data/test/core/binding/test_caller.rb +0 -69
- data/test/core/binding/test_defined.rb +0 -18
- data/test/core/binding/test_eval.rb +0 -15
- data/test/core/binding/test_local_variables.rb +0 -36
- 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_by.rb +0 -30
- data/test/core/enumerable/test_compact_map.rb +0 -32
- data/test/core/enumerable/test_count.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_each_with_object.rb +0 -18
- 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_group_by.rb +0 -36
- 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_none.rb +0 -29
- data/test/core/enumerable/test_occur.rb +0 -40
- data/test/core/enumerable/test_one.rb +0 -34
- 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_take.rb +0 -15
- 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 -24
- 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_select.rb +0 -44
- 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_url_params.rb +0 -26
- 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_even.rb +0 -24
- data/test/core/integer/test_factorial.rb +0 -30
- data/test/core/integer/test_multiple.rb +0 -16
- data/test/core/integer/test_odd.rb +0 -24
- 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 -32
- 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_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_require_relative.rb +0 -12
- 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/nilclass/test_to_f.rb +0 -13
- data/test/core/numeric/test_approx.rb +0 -26
- data/test/core/numeric/test_distance.rb +0 -16
- data/test/core/numeric/test_length.rb +0 -16
- data/test/core/numeric/test_round.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_replace.rb +0 -69
- 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_curry.rb +0 -38
- 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_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_r.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_align.rb +0 -32
- data/test/core/string/test_ascii_only.rb +0 -30
- data/test/core/string/test_bracket.rb +0 -37
- data/test/core/string/test_bytes.rb +0 -13
- 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 -18
- data/test/core/string/test_divide.rb +0 -17
- data/test/core/string/test_each_char.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_end_with.rb +0 -24
- 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 -18
- 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_lines.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_range.rb +0 -35
- data/test/core/string/test_remove.rb +0 -36
- 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 -14
- 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_start_with.rb +0 -24
- data/test/core/string/test_store.rb +0 -16
- data/test/core/string/test_subtract.rb +0 -16
- data/test/core/string/test_tab.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/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_to_proc.rb +0 -35
- 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/to_hash_tc.rb +0 -210
- data/test/core/unboundmethod/test_arguments.rb +0 -25
- data/test/core/unboundmethod/test_name.rb +0 -19
- 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 -89
- 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
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
require 'facets/array/average'
|
|
2
|
+
|
|
3
|
+
class Array
|
|
4
|
+
|
|
5
|
+
# Calculate the variance of an array of numbers
|
|
6
|
+
#
|
|
7
|
+
# Examples
|
|
8
|
+
#
|
|
9
|
+
# [].variance #=> nil
|
|
10
|
+
# [1, 2, 3].variance #=> 0.6666666666666666
|
|
11
|
+
# [96, 35, 72, 30, 75, 33, 68, 13, 49, 71].variance #=> 609.76
|
|
12
|
+
# [36, -67, -17, 85, -46, -64, -23, -13, 89, -47].variance #=> 2989.0099999999993
|
|
13
|
+
# [60.7829, 31.2622, 20.626, 78.8907, 61.5328].variance #=> 459.1941339495999
|
|
14
|
+
#
|
|
15
|
+
def variance
|
|
16
|
+
avg = average
|
|
17
|
+
map {|n| (n - avg) ** 2 }.average
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
data/lib/core/facets/array.rb
CHANGED
|
@@ -8,16 +8,22 @@ class Binding
|
|
|
8
8
|
eval("caller(#{skip})")
|
|
9
9
|
end
|
|
10
10
|
|
|
11
|
+
# Returns the call stack, same format as Kernel#caller_locations()
|
|
12
|
+
#
|
|
13
|
+
def caller_locations( skip=0 )
|
|
14
|
+
eval("caller_locations(#{skip})")
|
|
15
|
+
end
|
|
16
|
+
|
|
11
17
|
# Return the line number on which the binding was created.
|
|
12
18
|
#
|
|
13
19
|
def __LINE__
|
|
14
|
-
|
|
20
|
+
self.source_location[1]
|
|
15
21
|
end
|
|
16
22
|
|
|
17
23
|
# Returns file name in which the binding was created.
|
|
18
24
|
#
|
|
19
25
|
def __FILE__
|
|
20
|
-
|
|
26
|
+
self.source_location[0]
|
|
21
27
|
end
|
|
22
28
|
|
|
23
29
|
# Return the directory of the file in which the binding was created.
|
|
@@ -1,25 +1,21 @@
|
|
|
1
1
|
class Binding
|
|
2
2
|
|
|
3
|
-
# Returns the value of
|
|
3
|
+
# Returns the value of a local variable.
|
|
4
4
|
#
|
|
5
5
|
# a = 2
|
|
6
|
-
# binding[
|
|
6
|
+
# binding[:a] #=> 2
|
|
7
7
|
#
|
|
8
|
-
def [](
|
|
9
|
-
|
|
8
|
+
def [](name)
|
|
9
|
+
local_variable_get(name.to_sym)
|
|
10
10
|
end
|
|
11
11
|
|
|
12
12
|
# Set the value of a local variable.
|
|
13
13
|
#
|
|
14
|
-
# binding[
|
|
14
|
+
# binding[:a] = 4
|
|
15
15
|
# a #=> 4
|
|
16
16
|
#
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
# @see Binding#with for an alternative.
|
|
20
|
-
def []=( l, v )
|
|
21
|
-
eval( "lambda {|v| #{l} = v}").call( v )
|
|
17
|
+
def []=(name, value)
|
|
18
|
+
local_variable_set(name.to_sym, value)
|
|
22
19
|
end
|
|
23
20
|
|
|
24
21
|
end
|
|
25
|
-
|
|
@@ -1,15 +1,9 @@
|
|
|
1
1
|
class Binding
|
|
2
2
|
|
|
3
|
-
#
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
# Returns self of the binding's context.
|
|
8
|
-
def self
|
|
9
|
-
eval('self')
|
|
10
|
-
end
|
|
11
|
-
|
|
3
|
+
# @deprecated Use Binding#receiver instead (built-in since Ruby 2.6).
|
|
4
|
+
def self
|
|
5
|
+
warn "Binding#self is deprecated. Use Binding#receiver instead.", uplevel: 1
|
|
6
|
+
receiver
|
|
12
7
|
end
|
|
13
8
|
|
|
14
9
|
end
|
|
15
|
-
|
data/lib/core/facets/binding.rb
CHANGED
|
@@ -2,7 +2,6 @@ require_relative 'binding/caller.rb'
|
|
|
2
2
|
require_relative 'binding/callstack.rb'
|
|
3
3
|
require_relative 'binding/call_stack.rb'
|
|
4
4
|
require_relative 'binding/defined.rb'
|
|
5
|
-
#require_relative 'binding/local_variables.rb' # uncommon
|
|
6
5
|
require_relative 'binding/op.rb'
|
|
7
6
|
require_relative 'binding/op_get.rb'
|
|
8
7
|
require_relative 'binding/op_set.rb'
|
data/lib/core/facets/boolean.rb
CHANGED
data/lib/core/facets/class.rb
CHANGED
|
@@ -3,7 +3,7 @@ require_relative 'class/descendants.rb'
|
|
|
3
3
|
require_relative 'class/methodize.rb'
|
|
4
4
|
require_relative 'class/pathize.rb'
|
|
5
5
|
#require_relative 'class/preallocate.rb' # uncommon
|
|
6
|
-
#require_relative 'class/singleton.rb' #
|
|
7
|
-
require_relative 'class/subclasses.rb'
|
|
6
|
+
#require_relative 'class/singleton.rb' # removed, use Ruby's singleton_class
|
|
7
|
+
#require_relative 'class/subclasses.rb' # removed, use Ruby's subclasses
|
|
8
8
|
require_relative 'class/to_proc.rb'
|
|
9
9
|
|
|
@@ -1 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
module Comparable
|
|
2
|
+
|
|
3
|
+
# Alias for Comparable#clamp. Reads more naturally in some contexts.
|
|
4
|
+
#
|
|
5
|
+
# 4.bound(2, 7) #=> 4
|
|
6
|
+
# 9.bound(2, 7) #=> 7
|
|
7
|
+
# 1.bound(2, 7) #=> 2
|
|
8
|
+
#
|
|
9
|
+
def bound(lower, upper=nil)
|
|
10
|
+
upper ? clamp(lower, upper) : clamp(lower..)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
end
|
|
@@ -1,38 +1,9 @@
|
|
|
1
1
|
module Comparable
|
|
2
2
|
|
|
3
|
-
#
|
|
4
|
-
# within the given lower and upper bounds,
|
|
5
|
-
# otherwise returns the the bound of which the
|
|
6
|
-
# value falls outside.
|
|
7
|
-
#
|
|
8
|
-
# 4.clip(3) #=> 4
|
|
9
|
-
# 4.clip(5) #=> 5
|
|
10
|
-
# 4.clip(2,7) #=> 4
|
|
11
|
-
# 9.clip(2,7) #=> 7
|
|
12
|
-
# 1.clip(2,7) #=> 2
|
|
13
|
-
#
|
|
14
|
-
# CREDIT Florian Gross, Trans
|
|
15
|
-
|
|
3
|
+
# @deprecated Use Comparable#clamp instead (built-in since Ruby 2.4).
|
|
16
4
|
def clip(lower, upper=nil)
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
return upper if self > upper
|
|
20
|
-
return self
|
|
5
|
+
warn "Comparable#clip is deprecated. Use Comparable#clamp instead.", uplevel: 1
|
|
6
|
+
upper ? clamp(lower, upper) : clamp(lower..)
|
|
21
7
|
end
|
|
22
8
|
|
|
23
|
-
# Returns self if above the given lower bound, or
|
|
24
|
-
# within the given lower and upper bounds,
|
|
25
|
-
# otherwise returns the the bound of which the
|
|
26
|
-
# value falls outside.
|
|
27
|
-
#
|
|
28
|
-
# 4.bound(3) #=> 4
|
|
29
|
-
# 4.bound(5) #=> 5
|
|
30
|
-
# 4.bound(2,7) #=> 4
|
|
31
|
-
# 9.bound(2,7) #=> 7
|
|
32
|
-
# 1.bound(2,7) #=> 2
|
|
33
|
-
#
|
|
34
|
-
# CREDIT: Florian Gross
|
|
35
|
-
|
|
36
|
-
alias_method :bound, :clip
|
|
37
|
-
|
|
38
9
|
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
require 'find'
|
|
2
|
+
|
|
3
|
+
class Dir
|
|
4
|
+
|
|
5
|
+
# Recursively traverse a directory, yielding each file and directory path.
|
|
6
|
+
# Supports Find.prune to skip subtrees.
|
|
7
|
+
#
|
|
8
|
+
# Dir.find('.') do |path|
|
|
9
|
+
# puts path
|
|
10
|
+
# end
|
|
11
|
+
#
|
|
12
|
+
# Returns an enumerator if no block is given.
|
|
13
|
+
#
|
|
14
|
+
# This is a convenience wrapper around Ruby's Find.find.
|
|
15
|
+
|
|
16
|
+
def self.find(*paths, ignore_error: true, &block)
|
|
17
|
+
Find.find(*paths, ignore_error: ignore_error, &block)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
end
|
|
@@ -1,35 +1,17 @@
|
|
|
1
|
+
require 'facets/dir/find'
|
|
2
|
+
|
|
1
3
|
class Dir
|
|
2
4
|
|
|
3
|
-
#
|
|
4
|
-
#
|
|
5
|
-
# Dir.recurse('.') do |path|
|
|
6
|
-
# # ...
|
|
7
|
-
# end
|
|
8
|
-
#
|
|
9
|
-
# CREDIT: George Moschovitis
|
|
10
|
-
#
|
|
11
|
-
# TODO: If fully compatible, reimplement as alias of Find.find,
|
|
12
|
-
# or just copy and paste Find.find code here if it looks more robust.
|
|
13
|
-
#
|
|
5
|
+
# @deprecated Use Dir.find or Find.find instead.
|
|
14
6
|
def self.recurse(path='.', &block)
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
Dir.foreach(path) do |f|
|
|
18
|
-
next if stoplist.include?(f)
|
|
19
|
-
filename = (path == '.' ? f : path + '/' + f)
|
|
20
|
-
list << filename
|
|
21
|
-
block.call(filename) if block
|
|
22
|
-
if FileTest.directory?(filename) and not FileTest.symlink?(filename)
|
|
23
|
-
list.concat(Dir.recurse(filename, &block))
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
list
|
|
7
|
+
warn "Dir.recurse is deprecated. Use Dir.find or Find.find instead.", uplevel: 1
|
|
8
|
+
Dir.find(path, &block)
|
|
27
9
|
end
|
|
28
10
|
|
|
29
|
-
#
|
|
11
|
+
# @deprecated Use Dir.find or Find.find instead.
|
|
30
12
|
def self.ls_r(path='.', &block)
|
|
31
|
-
|
|
13
|
+
warn "Dir.ls_r is deprecated. Use Dir.find or Find.find instead.", uplevel: 1
|
|
14
|
+
Dir.find(path, &block)
|
|
32
15
|
end
|
|
33
16
|
|
|
34
17
|
end
|
|
35
|
-
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
module Enumerable
|
|
2
2
|
|
|
3
|
-
# Clusters together adjacent elements into a list of
|
|
4
|
-
# sub-arrays.
|
|
3
|
+
# Clusters together adjacent elements into a list of sub-arrays.
|
|
5
4
|
#
|
|
6
|
-
#
|
|
7
|
-
#
|
|
5
|
+
# [2,2,2,3,3,4,2,2,1].cluster{ |x| x }
|
|
6
|
+
# => [[2, 2, 2], [3, 3], [4], [2, 2], [1]]
|
|
7
|
+
#
|
|
8
|
+
# ["dog", "duck", "cat", "dude"].cluster{ |x| x[0] }
|
|
9
|
+
# => [["dog", "duck"], ["cat"], ["dude"]]
|
|
8
10
|
#
|
|
9
11
|
# @author Oleg K
|
|
10
12
|
|
|
@@ -15,18 +15,8 @@ module Enumerable
|
|
|
15
15
|
# does almost the same thing and enum.map{}.compact works too.
|
|
16
16
|
|
|
17
17
|
def compact_map(&block)
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
each do |*a|
|
|
21
|
-
r = yield(*a)
|
|
22
|
-
y << r unless r.nil?
|
|
23
|
-
end
|
|
24
|
-
else
|
|
25
|
-
each do |r|
|
|
26
|
-
y << r unless r.nil?
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
y
|
|
18
|
+
warn "Enumerable#compact_map is deprecated. Use Enumerable#filter_map instead.", uplevel: 1
|
|
19
|
+
filter_map(&block)
|
|
30
20
|
end
|
|
31
21
|
|
|
32
22
|
#
|
|
@@ -27,19 +27,8 @@ module Enumerable
|
|
|
27
27
|
# to output each result and discard it.
|
|
28
28
|
#
|
|
29
29
|
def defer(&blk)
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
each do |*input|
|
|
33
|
-
yield(output, *input)
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
else
|
|
37
|
-
Denumerator.new do |output|
|
|
38
|
-
each do |*input|
|
|
39
|
-
output.yield(*input)
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
end
|
|
30
|
+
warn "Enumerable#defer is deprecated. Use Enumerable#lazy instead.", uplevel: 1
|
|
31
|
+
lazy
|
|
43
32
|
end
|
|
44
33
|
|
|
45
34
|
end
|
|
@@ -4,13 +4,13 @@ require 'facets/enumerable/value_by'
|
|
|
4
4
|
|
|
5
5
|
module Enumerable
|
|
6
6
|
|
|
7
|
-
# The hashify methods is a higher-order message used to
|
|
7
|
+
# The hashify methods is a higher-order message used to
|
|
8
8
|
# convert an enumerable object into a hash. Converting an
|
|
9
9
|
# enumerable object into a hash is not a one-to-one conversion,
|
|
10
10
|
# for this reason #hashify is used to provide variant approches
|
|
11
11
|
# for the conversion most suited to the use case at hand.
|
|
12
12
|
# Here are some (but not a complete set of) examples.
|
|
13
|
-
#
|
|
13
|
+
#
|
|
14
14
|
# If the enumerable is a collection of perfect pairs, like that
|
|
15
15
|
# which Hash#to_a generates, then #assoc can be used.
|
|
16
16
|
#
|
|
@@ -23,13 +23,13 @@ module Enumerable
|
|
|
23
23
|
# a = [ [:a,1,2], [:b,2], [:c], [:d] ]
|
|
24
24
|
# a.hashify.concat #=> { :a=>[1,2], :b=>[2], :c=>[], :d=>[] }
|
|
25
25
|
#
|
|
26
|
-
# If the array
|
|
26
|
+
# If the array contains objects other then arrays then
|
|
27
27
|
# the #splat method might do the trick.
|
|
28
28
|
#
|
|
29
29
|
# a = [ [:a,1,2], 2, :b, [:c,3], 9 ]
|
|
30
|
-
# a.hashify.splat #=> { [:a,1,2]=>2, :b=>[:c,3], 9=>nil }
|
|
30
|
+
# a.hashify.splat #=> { [:a,1,2]=>2, :b=>[:c,3], 9=>nil }
|
|
31
31
|
#
|
|
32
|
-
# Also, the particular dispatch can be left up the Hashify
|
|
32
|
+
# Also, the particular dispatch can be left up the Hashify
|
|
33
33
|
# using the #auto method. See Hashify#auto for details on this.
|
|
34
34
|
#
|
|
35
35
|
# TODO: This method takes arguments only for the sake of the old
|
|
@@ -64,11 +64,9 @@ module Enumerable
|
|
|
64
64
|
#
|
|
65
65
|
# a = [:a,1,:b,2,:c]
|
|
66
66
|
# a.to_h_splat #=> { :a=>1, :b=>2, :c=>nil }
|
|
67
|
-
#
|
|
68
|
-
# TODO: Can this be done without #size?
|
|
69
67
|
def splat
|
|
70
|
-
a = @enum.
|
|
71
|
-
a << nil if a.size
|
|
68
|
+
a = @enum.to_a
|
|
69
|
+
a << nil if a.size.odd?
|
|
72
70
|
Hash[*a]
|
|
73
71
|
end
|
|
74
72
|
|
|
@@ -78,48 +76,46 @@ module Enumerable
|
|
|
78
76
|
#
|
|
79
77
|
# a = [:a,1,[:b,2,:c]]
|
|
80
78
|
# a.to_h_flat #=> { :a=>1, :b=>2, :c=>nil }
|
|
81
|
-
#
|
|
82
|
-
# TODO: Need to do this without #size.
|
|
83
79
|
def flat
|
|
84
|
-
a = @enum.flatten
|
|
85
|
-
a << nil if a.size
|
|
80
|
+
a = @enum.to_a.flatten
|
|
81
|
+
a << nil if a.size.odd?
|
|
86
82
|
Hash[*a]
|
|
87
83
|
end
|
|
88
84
|
|
|
89
|
-
# When a mixed or multi-element
|
|
85
|
+
# When a mixed or multi-element associative array
|
|
90
86
|
# is used, the result is as follows:
|
|
91
87
|
#
|
|
92
88
|
# a = [ [:a,1,2], [:b,2], [:c], :d ]
|
|
93
89
|
# a.hashify.assoc #=> { :a=>[1,2], :b=>[2], :c=>[], :d=>[] }
|
|
94
90
|
#
|
|
95
91
|
# If the first entry of any subelements are the same, then
|
|
96
|
-
# the value will be set to the last
|
|
92
|
+
# the value will be set to the last occurring value.
|
|
97
93
|
#
|
|
98
94
|
# a = [ :x, [:x], [:x,1,2], [:x,3], [:x,4] ]
|
|
99
95
|
# a.hashify.assoc #=> { :x=>[4] }
|
|
100
96
|
#
|
|
101
97
|
def associate
|
|
102
98
|
h = {}
|
|
103
|
-
each do |k,*v|
|
|
99
|
+
each do |k,*v|
|
|
104
100
|
h[k] = v
|
|
105
101
|
end
|
|
106
102
|
h
|
|
107
103
|
end
|
|
108
104
|
|
|
109
105
|
# Alias for #associate.
|
|
110
|
-
alias :assoc
|
|
106
|
+
alias :assoc :associate
|
|
111
107
|
|
|
112
108
|
# Like associate but does force values into an array.
|
|
113
109
|
#
|
|
114
110
|
def merge
|
|
115
111
|
h = {}
|
|
116
|
-
each do |k,v|
|
|
112
|
+
each do |k,v|
|
|
117
113
|
h[k] = v
|
|
118
114
|
end
|
|
119
115
|
h
|
|
120
116
|
end
|
|
121
117
|
|
|
122
|
-
# When a mixed or multi-element
|
|
118
|
+
# When a mixed or multi-element associative array
|
|
123
119
|
# is used, the result is as follows:
|
|
124
120
|
#
|
|
125
121
|
# a = [ [:a,1,2], [:b,2], [:c], :d ]
|
|
@@ -129,11 +125,11 @@ module Enumerable
|
|
|
129
125
|
# the values will be merged using #concat.
|
|
130
126
|
#
|
|
131
127
|
# a = [ [:a,1,2], [:a,3], [:a,4], [:a], :a ]
|
|
132
|
-
# a.
|
|
128
|
+
# a.hashify.concat #=> { :a=>[1,2,3,4] }
|
|
133
129
|
#
|
|
134
130
|
def concat
|
|
135
131
|
h = {}
|
|
136
|
-
each do |k,*v|
|
|
132
|
+
each do |k,*v|
|
|
137
133
|
h[k] ||= []
|
|
138
134
|
h[k].concat(v)
|
|
139
135
|
end
|
|
@@ -141,7 +137,7 @@ module Enumerable
|
|
|
141
137
|
end
|
|
142
138
|
|
|
143
139
|
# Older name for #concat.
|
|
144
|
-
alias :multi
|
|
140
|
+
alias :multi :concat
|
|
145
141
|
|
|
146
142
|
# Convert enumerable object to Hash using index as keys.
|
|
147
143
|
#
|
|
@@ -158,11 +154,11 @@ module Enumerable
|
|
|
158
154
|
# Converts enumerable object into a hash. Converting an array
|
|
159
155
|
# into a hash is not a one-to-one conversion, for this
|
|
160
156
|
# reason #auto examines the enumerable being converted
|
|
161
|
-
# and then dispatches the conversion to the most
|
|
162
|
-
# specialized function. There are three
|
|
157
|
+
# and then dispatches the conversion to the most suitable
|
|
158
|
+
# specialized function. There are three possibilities for this.
|
|
163
159
|
#
|
|
164
160
|
# If the enumerable is a collection of perfect pairs, like that
|
|
165
|
-
# which Hash#to_a generates, then conversion is handled by
|
|
161
|
+
# which Hash#to_a generates, then conversion is handled by
|
|
166
162
|
# #flat.
|
|
167
163
|
#
|
|
168
164
|
# a = [ [:a,1], [:b,2] ]
|
|
@@ -174,14 +170,14 @@ module Enumerable
|
|
|
174
170
|
# a = [ [:a,1,2], [:b,2], [:c], [:d] ]
|
|
175
171
|
# a.hashify.auto #=> { :a=>[1,2], :b=>[2], :c=>[], :d=>[] }
|
|
176
172
|
#
|
|
177
|
-
# If it
|
|
173
|
+
# If it contains objects other then arrays then the #splat method
|
|
178
174
|
# is called.
|
|
179
175
|
#
|
|
180
176
|
# a = [ [:a,1,2], 2, :b, [:c,3], 9 ]
|
|
181
|
-
# a.hashify.auto #=> { [:a,1,2]=>2, :b=>[:c,3], 9=>nil }
|
|
177
|
+
# a.hashify.auto #=> { [:a,1,2]=>2, :b=>[:c,3], 9=>nil }
|
|
182
178
|
#
|
|
183
179
|
# Be aware this is not as efficient as using the underlying methods
|
|
184
|
-
# directly
|
|
180
|
+
# directly because it must perform an initial iteration over the
|
|
185
181
|
# enumerable to determine its contents.
|
|
186
182
|
|
|
187
183
|
def auto(&block)
|
|
@@ -206,18 +202,18 @@ module Enumerable
|
|
|
206
202
|
end
|
|
207
203
|
|
|
208
204
|
# Alias for `#auto`.
|
|
209
|
-
alias :automatic
|
|
205
|
+
alias :automatic :auto
|
|
210
206
|
|
|
211
207
|
private
|
|
212
208
|
|
|
213
209
|
#
|
|
214
210
|
def each(&b)
|
|
215
|
-
@enum.each(&b)
|
|
211
|
+
@enum.each(&b)
|
|
216
212
|
end
|
|
217
213
|
|
|
218
214
|
#
|
|
219
215
|
def each_with_index(&b)
|
|
220
|
-
@enum.each_with_index(&b)
|
|
216
|
+
@enum.each_with_index(&b)
|
|
221
217
|
end
|
|
222
218
|
|
|
223
219
|
end
|
|
@@ -9,10 +9,9 @@ module Enumerable
|
|
|
9
9
|
#
|
|
10
10
|
# TODO: Enumerable#hinge will get a new name.
|
|
11
11
|
#
|
|
12
|
-
def hinge(init={})
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
h
|
|
12
|
+
def hinge(init={}, &block)
|
|
13
|
+
warn "Enumerable#hinge is deprecated. Use Enumerable#each_with_object instead (note: block args are reversed).", uplevel: 1
|
|
14
|
+
each_with_object(init) { |e, obj| block.call(obj, e) }
|
|
16
15
|
end
|
|
17
16
|
|
|
18
17
|
end
|
|
@@ -7,12 +7,9 @@ module Enumerable
|
|
|
7
7
|
#
|
|
8
8
|
# CREDIT: Gavin Sinclair
|
|
9
9
|
|
|
10
|
-
def map_with_index
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
r << yield(e, i)
|
|
14
|
-
end
|
|
15
|
-
r
|
|
10
|
+
def map_with_index(&block)
|
|
11
|
+
warn "Enumerable#map_with_index is deprecated. Use Enumerable#map.with_index instead.", uplevel: 1
|
|
12
|
+
map.with_index(&block)
|
|
16
13
|
end
|
|
17
14
|
|
|
18
15
|
# Alias for map_with_index.
|
|
@@ -1,34 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
require 'facets/enumerable/graph'
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
# to return two values: the key and the value for the new hash.
|
|
5
|
-
#
|
|
6
|
-
# numbers = (1..3)
|
|
7
|
-
# squares = numbers.mash{ |n| [n, n*n] } # { 1=>1, 2=>4, 3=>9 }
|
|
8
|
-
# sq_roots = numbers.mash{ |n| [n*n, n] } # { 1=>1, 4=>2, 9=>3 }
|
|
9
|
-
#
|
|
10
|
-
# CREDIT: Andrew Dudzik (adudzik), Trans
|
|
3
|
+
module Enumerable
|
|
11
4
|
|
|
5
|
+
# @deprecated Use Enumerable#graph instead.
|
|
12
6
|
def mash(&yld)
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
each do |*kv|
|
|
16
|
-
r = yld[*kv]
|
|
17
|
-
case r
|
|
18
|
-
when Hash
|
|
19
|
-
nk, nv = *r.to_a[0]
|
|
20
|
-
when Range
|
|
21
|
-
nk, nv = r.first, r.last
|
|
22
|
-
else
|
|
23
|
-
nk, nv = *r
|
|
24
|
-
end
|
|
25
|
-
h[nk] = nv
|
|
26
|
-
end
|
|
27
|
-
h
|
|
28
|
-
else
|
|
29
|
-
Enumerator.new(self,:graph)
|
|
30
|
-
end
|
|
7
|
+
warn "Enumerable#mash is deprecated. Use Enumerable#graph instead.", uplevel: 1
|
|
8
|
+
graph(&yld)
|
|
31
9
|
end
|
|
32
10
|
|
|
33
11
|
end
|
|
34
|
-
|
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
module Enumerable
|
|
2
2
|
|
|
3
|
-
#
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
#
|
|
8
|
-
def uniq_by #:yield:
|
|
9
|
-
h = {}; inject([]) {|a,x| h[yield(x)] ||= a << x}
|
|
3
|
+
# @deprecated Use Enumerable#uniq with a block instead (Ruby 1.9.2+).
|
|
4
|
+
def uniq_by(&block)
|
|
5
|
+
warn "Enumerable#uniq_by is deprecated. Use Enumerable#uniq(&block) instead.", uplevel: 1
|
|
6
|
+
uniq(&block)
|
|
10
7
|
end
|
|
11
8
|
|
|
12
9
|
end
|
|
13
|
-
|