facets 2.8.4 → 2.9.0.pre.1
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.
- data/AUTHORS +2 -0
- data/HISTORY.rdoc +233 -94
- data/NOTICE +27 -0
- data/README.rdoc +131 -49
- data/Rakefile +190 -97
- data/lib/core/facets/applique/file_helpers.rb +33 -0
- data/lib/core/facets/array/after.rb +1 -0
- data/lib/core/facets/array/before.rb +39 -0
- data/lib/core/facets/{enumerable → array}/collapse.rb +0 -0
- data/lib/core/facets/array/collisions.rb +1 -0
- data/lib/core/facets/array/combination.rb +0 -16
- data/lib/core/facets/{enumerable → array}/commonality.rb +8 -6
- data/lib/core/facets/array/conjoin.rb +48 -17
- data/lib/core/facets/{string → array}/contains.rb +0 -0
- data/lib/core/facets/array/delete_unless.rb +1 -1
- data/lib/core/facets/array/divide.rb +20 -0
- data/lib/core/facets/array/duplicates.rb +1 -0
- data/lib/core/facets/{enumerable → array}/entropy.rb +8 -6
- data/lib/core/facets/array/extract_options.rb +31 -0
- data/lib/core/facets/array/from.rb +33 -0
- data/lib/core/facets/array/index.rb +2 -4
- data/lib/core/facets/array/indexable.rb +4 -46
- data/lib/core/facets/array/merge.rb +3 -2
- data/lib/core/facets/array/mode.rb +22 -0
- data/lib/core/facets/array/nonuniq.rb +37 -0
- data/lib/core/facets/array/only.rb +9 -3
- data/lib/core/facets/array/peek.rb +1 -0
- data/lib/core/facets/array/permutation.rb +2 -0
- data/lib/core/facets/array/poke.rb +1 -0
- data/lib/core/facets/{enumerable → array}/probability.rb +9 -6
- data/lib/core/facets/array/product.rb +1 -2
- data/lib/core/facets/array/pull.rb +30 -0
- data/lib/core/facets/array/recurse.rb +29 -0
- data/lib/core/facets/array/recursively.rb +39 -22
- data/lib/core/facets/array/rotate.rb +40 -32
- data/lib/core/facets/array/select.rb +14 -10
- data/lib/core/facets/array/splice.rb +2 -5
- data/lib/core/facets/{enumerable → array}/split.rb +2 -2
- data/lib/core/facets/array/store.rb +12 -0
- data/lib/core/facets/array/thru.rb +1 -0
- data/lib/core/facets/array/traverse.rb +10 -5
- data/lib/core/facets/array/uniq_by.rb +6 -8
- data/lib/core/facets/binding/__callee__.rb +1 -0
- data/lib/core/facets/binding/__method__.rb +1 -0
- data/lib/core/facets/binding/call_stack.rb +1 -0
- data/lib/core/facets/binding/caller.rb +6 -5
- data/lib/core/facets/binding/callstack.rb +1 -1
- data/lib/core/facets/binding/eval.rb +2 -6
- data/lib/core/facets/binding/local_variables.rb +5 -3
- data/lib/core/facets/binding/{opvars.rb → op.rb} +0 -0
- data/lib/core/facets/boolean.rb +27 -59
- data/lib/core/facets/class/descendants.rb +21 -34
- data/lib/core/facets/class/methodize.rb +6 -1
- data/lib/core/facets/class/pathize.rb +6 -1
- data/lib/core/facets/class/subclasses.rb +27 -1
- data/lib/core/facets/class/to_proc.rb +4 -1
- data/lib/core/facets/comparable/bound.rb +1 -1
- data/lib/core/facets/comparable/cmp.rb +3 -0
- data/lib/core/facets/comparable/op_get.rb +45 -0
- data/lib/core/facets/dir/ascend.rb +8 -12
- data/lib/core/facets/dir/each_child.rb +16 -0
- data/lib/core/facets/dir/multiglob.rb +15 -27
- data/lib/core/facets/dir/parent.rb +4 -1
- data/lib/core/facets/dir/recurse.rb +6 -3
- data/lib/core/facets/enumerable/accumulate.rb +47 -9
- data/lib/core/facets/enumerable/cluster_by.rb +1 -4
- data/lib/core/facets/enumerable/compact_map.rb +3 -5
- data/lib/core/facets/enumerable/count.rb +42 -30
- data/lib/core/facets/enumerable/defer.rb +1 -2
- data/lib/core/facets/enumerable/each_with_object.rb +2 -2
- data/lib/core/facets/enumerable/every.rb +16 -11
- data/lib/core/facets/enumerable/ewise.rb +11 -19
- data/lib/core/facets/enumerable/exclude.rb +4 -1
- data/lib/core/facets/enumerable/expand.rb +15 -0
- data/lib/core/facets/enumerable/filter.rb +9 -11
- data/lib/core/facets/enumerable/find_yield.rb +14 -9
- data/lib/core/facets/enumerable/frequency.rb +12 -6
- data/lib/core/facets/enumerable/graph.rb +2 -2
- data/lib/core/facets/enumerable/group_by.rb +13 -7
- data/lib/core/facets/enumerable/map_by.rb +35 -0
- data/lib/core/facets/enumerable/map_send.rb +12 -10
- data/lib/core/facets/enumerable/modulate.rb +1 -1
- data/lib/core/facets/enumerable/none.rb +5 -5
- data/lib/core/facets/enumerable/occur.rb +9 -7
- data/lib/core/facets/enumerable/one.rb +6 -6
- data/lib/core/facets/enumerable/per.rb +35 -13
- data/lib/core/facets/enumerable/recursively.rb +66 -0
- data/lib/core/facets/enumerable/take.rb +11 -15
- data/lib/core/facets/enumerable/uniq_by.rb +1 -4
- data/lib/core/facets/enumerable/visit.rb +4 -4
- data/lib/core/facets/enumerator.rb +17 -12
- data/lib/core/facets/enumerator/fx.rb +24 -8
- data/lib/core/facets/exception/detail.rb +1 -1
- data/lib/core/facets/exception/raised.rb +1 -1
- data/lib/core/facets/exception/suppress.rb +3 -1
- data/lib/core/facets/file/append.rb +2 -2
- data/lib/core/facets/file/create.rb +1 -1
- data/lib/core/facets/file/ext.rb +7 -7
- data/lib/core/facets/file/read_binary.rb +18 -0
- data/lib/core/facets/file/read_list.rb +34 -0
- data/lib/core/facets/file/rewrite.rb +9 -7
- data/lib/core/facets/file/rootname.rb +2 -12
- data/lib/core/facets/file/sanitize.rb +18 -0
- data/lib/core/facets/file/split_all.rb +1 -1
- data/lib/core/facets/file/write.rb +16 -14
- data/lib/core/facets/file/writelines.rb +5 -1
- data/lib/core/facets/functor.rb +53 -52
- data/lib/core/facets/hash/alias.rb +3 -3
- data/lib/core/facets/hash/argumentize.rb +10 -4
- data/lib/core/facets/hash/autonew.rb +10 -12
- data/lib/core/facets/hash/collate.rb +35 -49
- data/lib/core/facets/hash/count.rb +0 -2
- data/lib/core/facets/hash/data.rb +31 -4
- data/lib/core/facets/hash/{recursive_merge.rb → deep_merge.rb} +4 -10
- data/lib/core/facets/hash/delete.rb +4 -47
- data/lib/core/facets/hash/delete_at.rb +7 -0
- data/lib/core/facets/hash/delete_unless.rb +17 -0
- data/lib/core/facets/hash/delete_values.rb +32 -0
- data/lib/core/facets/hash/diff.rb +7 -1
- data/lib/core/facets/hash/except.rb +15 -17
- data/lib/core/facets/hash/inverse.rb +7 -4
- data/lib/core/facets/hash/join.rb +6 -3
- data/lib/core/facets/hash/new_with.rb +1 -1
- data/lib/core/facets/hash/op_and.rb +2 -2
- data/lib/core/facets/hash/op_mul.rb +4 -4
- data/lib/core/facets/hash/recurse.rb +29 -0
- data/lib/core/facets/hash/recursively.rb +50 -18
- data/lib/core/facets/hash/rekey.rb +50 -34
- data/lib/core/facets/hash/{merge.rb → reverse_merge.rb} +0 -0
- data/lib/core/facets/hash/select.rb +10 -6
- data/lib/core/facets/hash/slice.rb +24 -25
- data/lib/core/facets/hash/symbolize_keys.rb +74 -76
- data/lib/core/facets/hash/to_mod.rb +33 -0
- data/lib/core/facets/hash/to_proc.rb +11 -10
- data/lib/core/facets/hash/traverse.rb +4 -4
- data/lib/core/facets/hash/update.rb +1 -1
- data/lib/core/facets/hash/update_values.rb +2 -2
- data/lib/core/facets/hash/weave.rb +2 -7
- data/lib/core/facets/indexable.rb +59 -40
- data/lib/core/facets/{kernel/instance.rb → instance.rb} +3 -2
- data/lib/core/facets/integer/bit.rb +1 -0
- data/lib/core/facets/{bitmask.rb → integer/bitmask.rb} +9 -11
- data/lib/core/facets/integer/factorial.rb +1 -10
- data/lib/core/facets/integer/odd.rb +2 -4
- data/lib/core/facets/integer/of.rb +1 -1
- data/lib/core/facets/kernel/__dir__.rb +10 -6
- data/lib/core/facets/kernel/__get__.rb +8 -3
- data/lib/core/facets/kernel/__method__.rb +12 -6
- data/lib/core/facets/kernel/as.rb +61 -46
- data/lib/core/facets/kernel/ask.rb +11 -11
- data/lib/core/facets/kernel/assign.rb +40 -27
- data/lib/core/facets/kernel/assign_from.rb +1 -45
- data/lib/core/facets/kernel/attr_singleton.rb +22 -25
- data/lib/core/facets/kernel/blank.rb +84 -0
- data/lib/core/facets/kernel/call_stack.rb +56 -0
- data/lib/core/facets/kernel/callstack.rb +1 -52
- data/lib/core/facets/kernel/case.rb +8 -0
- data/lib/core/facets/kernel/clone.rb +1 -0
- data/lib/core/facets/kernel/complete.rb +10 -2
- data/lib/core/facets/kernel/constant.rb +4 -8
- data/lib/core/facets/kernel/d.rb +12 -8
- data/lib/core/facets/kernel/deep_clone.rb +1 -0
- data/lib/core/facets/kernel/deep_copy.rb +27 -2
- data/lib/core/facets/kernel/disable_warnings.rb +26 -0
- data/lib/core/facets/kernel/dup.rb +33 -0
- data/lib/core/facets/kernel/enable_warnings.rb +1 -0
- data/lib/core/facets/kernel/equate.rb +8 -5
- data/lib/core/facets/kernel/ergo.rb +4 -3
- data/lib/core/facets/kernel/extend.rb +17 -1
- data/lib/core/facets/kernel/extension.rb +3 -0
- data/lib/core/facets/kernel/here.rb +1 -2
- data/lib/core/facets/kernel/instance_class.rb +2 -1
- data/lib/core/facets/kernel/load_all.rb +1 -0
- data/lib/core/facets/kernel/load_relative.rb +1 -0
- data/lib/core/facets/kernel/maybe.rb +3 -2
- data/lib/core/facets/kernel/meta_alias.rb +9 -4
- data/lib/core/facets/kernel/meta_class.rb +4 -4
- data/lib/core/facets/kernel/meta_def.rb +0 -2
- data/lib/core/facets/kernel/meta_eval.rb +7 -5
- data/lib/core/facets/kernel/method.rb +5 -4
- data/lib/core/facets/kernel/not.rb +37 -0
- data/lib/core/facets/kernel/not_nil.rb +3 -2
- data/lib/core/facets/kernel/object_hexid.rb +9 -7
- data/lib/core/facets/kernel/object_send.rb +11 -10
- data/lib/core/facets/kernel/object_state.rb +21 -4
- data/lib/core/facets/kernel/p.rb +3 -3
- data/lib/core/facets/kernel/presence.rb +1 -0
- data/lib/core/facets/kernel/present.rb +1 -0
- data/lib/core/facets/kernel/qua_class.rb +15 -3
- data/lib/core/facets/kernel/replace.rb +1 -0
- data/lib/core/facets/kernel/require_all.rb +33 -17
- data/lib/core/facets/kernel/require_relative.rb +10 -10
- data/lib/core/facets/kernel/respond.rb +26 -7
- data/lib/core/facets/kernel/returning.rb +5 -1
- data/lib/core/facets/kernel/silence.rb +39 -41
- data/lib/core/facets/kernel/silence_warnings.rb +1 -0
- data/lib/core/facets/kernel/singleton_class.rb +2 -13
- data/lib/core/facets/kernel/super_method.rb +11 -0
- data/lib/core/facets/kernel/tap.rb +16 -7
- data/lib/core/facets/kernel/temporarily.rb +23 -0
- data/lib/core/facets/kernel/try.rb +43 -10
- data/lib/core/facets/kernel/try_dup.rb +19 -9
- data/lib/core/facets/kernel/writers.rb +91 -0
- data/lib/core/facets/matchdata/matchset.rb +4 -4
- data/lib/core/facets/method.rb +6 -0
- data/lib/core/facets/module/abstract.rb +10 -7
- data/lib/core/facets/module/alias_method_chain.rb +22 -4
- data/lib/core/facets/module/alias_module_function.rb +4 -4
- data/lib/core/facets/module/all_instance_methods.rb +19 -0
- data/lib/core/facets/module/ancestor.rb +1 -1
- data/lib/core/facets/module/anonymous.rb +25 -0
- data/lib/core/facets/module/attr_setter.rb +8 -13
- data/lib/core/facets/module/basename.rb +6 -6
- data/lib/core/facets/module/can.rb +8 -2
- data/lib/core/facets/module/class_method_defined.rb +1 -0
- data/lib/core/facets/module/extend.rb +1 -10
- data/lib/core/facets/module/instance_method.rb +3 -2
- data/lib/core/facets/module/instance_method_defined.rb +23 -0
- data/lib/core/facets/module/integrate.rb +48 -1
- data/lib/core/facets/module/is.rb +5 -5
- data/lib/core/facets/module/method_clash.rb +58 -0
- data/lib/core/facets/module/methodize.rb +7 -1
- data/lib/core/facets/module/modname.rb +22 -0
- data/lib/core/facets/module/nodef.rb +13 -0
- data/lib/core/facets/module/op.rb +37 -22
- data/lib/core/facets/module/op_add.rb +1 -0
- data/lib/core/facets/module/op_mul.rb +1 -0
- data/lib/core/facets/module/op_sub.rb +1 -0
- data/lib/core/facets/module/pathize.rb +8 -10
- data/lib/core/facets/module/redirect_method.rb +5 -5
- data/lib/core/facets/module/remove.rb +1 -0
- data/lib/core/facets/module/rename_method.rb +12 -2
- data/lib/core/facets/module/revise.rb +20 -41
- data/lib/core/facets/module/set.rb +1 -1
- data/lib/core/facets/module/singleton_method_defined.rb +1 -0
- data/lib/core/facets/module/spacename.rb +4 -4
- data/lib/core/facets/module/to_obj.rb +20 -0
- data/lib/core/facets/module/wrap_method.rb +16 -9
- data/lib/core/facets/na.rb +15 -0
- data/lib/core/facets/numeric/round.rb +4 -4
- data/lib/core/facets/numeric/round_at.rb +1 -0
- data/lib/core/facets/numeric/round_to.rb +1 -0
- data/lib/core/facets/object.rb +6 -0
- data/lib/core/facets/objectspace/reflect.rb +26 -11
- data/lib/core/facets/proc/bind.rb +7 -5
- data/lib/core/facets/proc/bind_to.rb +8 -0
- data/lib/{more/facets → core/facets/proc}/partial.rb +9 -15
- data/lib/core/facets/proc/to_method.rb +10 -5
- data/lib/core/facets/process.rb +6 -0
- data/lib/core/facets/process/daemon.rb +32 -0
- data/lib/core/facets/range/combine.rb +1 -1
- data/lib/core/facets/range/within.rb +1 -1
- data/lib/core/facets/regexp/multiline.rb +13 -0
- data/lib/core/facets/regexp/op_add.rb +18 -0
- data/lib/core/facets/regexp/op_or.rb +18 -0
- data/lib/core/facets/string/align.rb +24 -6
- data/lib/core/facets/string/bracket.rb +9 -50
- data/lib/core/facets/string/camelcase.rb +32 -23
- data/lib/core/facets/string/capitalized.rb +7 -4
- data/lib/core/facets/string/characters.rb +13 -0
- data/lib/core/facets/string/cleanlines.rb +3 -13
- data/lib/core/facets/string/cmp.rb +1 -0
- data/lib/core/facets/string/compress_lines.rb +4 -4
- data/lib/core/facets/string/divide.rb +1 -4
- data/lib/core/facets/string/each_char.rb +17 -15
- data/lib/core/facets/string/each_word.rb +5 -1
- data/lib/core/facets/string/edit_distance.rb +64 -2
- data/lib/core/facets/string/file.rb +21 -5
- data/lib/core/facets/string/indent.rb +46 -4
- data/lib/core/facets/string/interpolate.rb +3 -4
- data/lib/core/facets/string/{chomp.rb → lchomp.rb} +0 -0
- data/lib/core/facets/string/line_wrap.rb +2 -5
- data/lib/core/facets/string/lines.rb +1 -1
- data/lib/core/facets/string/methodize.rb +3 -2
- data/lib/core/facets/string/modulize.rb +3 -1
- data/lib/core/facets/string/natcmp.rb +35 -36
- data/lib/core/facets/string/nchar.rb +11 -5
- data/lib/core/facets/string/newlines.rb +10 -13
- data/lib/core/facets/string/op_div.rb +2 -2
- data/lib/core/facets/string/op_sub.rb +1 -1
- data/lib/core/facets/string/pathize.rb +12 -10
- data/lib/core/facets/string/quote.rb +93 -0
- data/lib/core/facets/string/range.rb +11 -7
- data/lib/core/facets/string/rewrite.rb +6 -10
- data/lib/core/facets/string/similarity.rb +24 -27
- data/lib/core/facets/string/splice.rb +6 -10
- data/lib/core/facets/string/squish.rb +22 -0
- data/lib/core/facets/string/start_with.rb +31 -8
- data/lib/core/facets/string/store.rb +7 -0
- data/lib/core/facets/string/titlecase.rb +1 -1
- data/lib/core/facets/string/unbracket.rb +1 -0
- data/lib/core/facets/string/underscore.rb +1 -0
- data/lib/core/facets/string/unindent.rb +1 -0
- data/lib/core/facets/string/unquote.rb +1 -0
- data/lib/core/facets/string/word_wrap.rb +2 -2
- data/lib/core/facets/string/xor.rb +4 -6
- data/lib/core/facets/symbol/as_s.rb +17 -0
- data/lib/core/facets/symbol/bang.rb +1 -0
- data/lib/core/facets/symbol/generate.rb +3 -3
- data/lib/core/facets/symbol/not.rb +1 -1
- data/lib/core/facets/symbol/op_div.rb +8 -6
- data/lib/core/facets/symbol/plain.rb +27 -1
- data/lib/core/facets/symbol/succ.rb +7 -3
- data/lib/core/facets/symbol/thrown.rb +2 -4
- data/lib/core/facets/symbol/to_proc.rb +8 -13
- data/lib/core/facets/symbol/variablize.rb +7 -5
- data/lib/core/facets/time/ago.rb +1 -1
- data/lib/core/facets/time/change.rb +19 -14
- data/lib/core/facets/time/dst_adjustment.rb +24 -0
- data/lib/core/facets/time/elapse.rb +3 -1
- data/lib/core/facets/time/future.rb +4 -4
- data/lib/core/facets/time/hence.rb +1 -97
- data/lib/core/facets/time/in.rb +93 -0
- data/lib/core/facets/time/round_to.rb +21 -0
- data/lib/core/facets/time/set.rb +9 -3
- data/lib/core/facets/time/stamp.rb +2 -1
- data/lib/core/facets/time/to_time.rb +2 -2
- data/lib/core/facets/time/trunc.rb +3 -3
- data/lib/core/facets/to_hash.rb +16 -12
- data/lib/core/facets/unboundmethod/name.rb +3 -3
- data/lib/more/facets/argvector.rb +23 -33
- data/lib/more/facets/atomicfile.rb +51 -0
- data/lib/more/facets/basicobject.rb +6 -6
- data/lib/more/facets/cgi.rb +3 -9
- data/lib/more/facets/continuation.rb +2 -2
- data/lib/more/facets/date.rb +56 -54
- data/lib/more/facets/erb.rb +15 -12
- data/lib/more/facets/fileutils.rb +1 -20
- data/lib/more/facets/fileutils/cp_rx.rb +1 -1
- data/lib/more/facets/fileutils/safe_ln.rb +1 -2
- data/lib/more/facets/fileutils/slice.rb +11 -99
- data/lib/more/facets/fileutils/wc.rb +5 -56
- data/lib/more/facets/fileutils/whereis.rb +8 -6
- data/lib/more/facets/fileutils/which.rb +5 -48
- data/lib/more/facets/find.rb +16 -0
- data/lib/more/facets/getoptlong.rb +11 -23
- data/lib/more/facets/main.rb +27 -40
- data/lib/more/facets/memoizable.rb +141 -0
- data/lib/{core → more}/facets/metaid.rb +2 -2
- data/lib/more/facets/multipliers.rb +6 -38
- data/lib/more/facets/multiton.rb +14 -13
- data/lib/more/facets/nullclass.rb +3 -39
- data/lib/more/facets/opesc.rb +42 -23
- data/lib/more/facets/ostruct.rb +32 -59
- data/lib/more/facets/pathname.rb +53 -43
- data/lib/more/facets/platform.rb +87 -100
- data/lib/more/facets/random.rb +129 -172
- data/lib/more/facets/rbconfig.rb +130 -25
- data/lib/more/facets/reference.rb +7 -23
- data/lib/more/facets/set.rb +5 -0
- data/lib/more/facets/shellwords.rb +22 -4
- data/lib/more/facets/thread.rb +48 -25
- data/lib/more/facets/timer.rb +50 -117
- data/lib/more/facets/tuple.rb +31 -74
- data/lib/more/facets/uri.rb +29 -67
- data/lib/more/facets/yaml.rb +28 -44
- data/lib/more/facets/zlib.rb +3 -3
- data/lib/tour/facets/array/median.rb +14 -0
- data/lib/tour/facets/array/percentile.rb +29 -0
- data/lib/{core/facets/class/prepend.rb → tour/facets/class/preallocate.rb} +10 -10
- data/lib/{more/facets → tour/facets/integer}/roman.rb +8 -7
- data/lib/{core → tour}/facets/kernel/demo.rb +3 -2
- data/lib/{core → tour}/facets/kernel/eigenclass.rb +1 -3
- data/lib/{core → tour}/facets/kernel/instance_exec.rb +3 -6
- data/lib/tour/facets/kernel/memo.rb +38 -0
- data/lib/tour/facets/kernel/trap_chain.rb +20 -0
- data/lib/tour/facets/method/memoize.rb +10 -0
- data/lib/tour/facets/module/attr_class_accessor.rb +33 -0
- data/lib/tour/facets/module/attr_inheritor.rb +13 -0
- data/lib/{more → tour}/facets/module/attr_tester.rb +0 -3
- data/lib/{more → tour}/facets/module/attr_validator.rb +0 -0
- data/lib/tour/facets/module/cattr.rb +240 -0
- data/lib/tour/facets/module/class_accessor.rb +27 -0
- data/lib/tour/facets/module/class_extend.rb +82 -0
- data/lib/{more/facets/inheritor.rb → tour/facets/module/class_inheritor.rb} +12 -38
- data/lib/tour/facets/module/copy_inheritor.rb +39 -0
- data/lib/tour/facets/module/enclosure.rb +62 -0
- data/lib/tour/facets/module/enclosures.rb +1 -0
- data/lib/tour/facets/module/include_as.rb +1 -0
- data/lib/{more/facets → tour/facets/module}/instance_function.rb +26 -16
- data/lib/tour/facets/module/memoize.rb +12 -0
- data/lib/tour/facets/module/method_space.rb +94 -0
- data/lib/{core → tour}/facets/module/module_load.rb +0 -0
- data/lib/{core → tour}/facets/module/prepend.rb +4 -4
- data/lib/tour/facets/regexp/op_or.rb +11 -0
- data/lib/tour/facets/string/crypt.rb +16 -0
- data/lib/tour/facets/string/roman.rb +1 -0
- data/meta/data.rb +29 -0
- data/meta/gemfile +10 -0
- data/meta/profile +24 -0
- data/qed/applique/file_helpers.rb +24 -0
- data/qed/core/array/combination.rdoc +19 -0
- data/qed/core/array/delete.rdoc +23 -0
- data/qed/core/array/index.rdoc +14 -0
- data/qed/core/array/merge.rdoc +15 -0
- data/qed/core/array/only.rdoc +9 -0
- data/qed/core/array/pad.rdoc +28 -0
- data/qed/core/array/permutation.rdoc +10 -0
- data/qed/core/array/product.rdoc +26 -0
- data/qed/core/array/recursively.rdoc +16 -0
- data/qed/core/array/rotate.rdoc +30 -0
- data/qed/core/array/select.rdoc +8 -0
- data/qed/core/array/uniq_by.rdoc +9 -0
- data/qed/core/binding/caller.rdoc +59 -0
- data/qed/core/binding/defined.rdoc +10 -0
- data/qed/core/binding/eval.rdoc +8 -0
- data/qed/core/binding/local_variables.rdoc +26 -0
- data/qed/core/binding/opvars.rdoc +16 -0
- data/qed/core/binding/self.rdoc +6 -0
- data/qed/core/class/descendants.rdoc +10 -0
- data/qed/core/class/to_proc.rdoc +8 -0
- data/qed/core/comparable/cap.rdoc +20 -0
- data/qed/core/comparable/clip.rdoc +37 -0
- data/qed/core/comparable/cmp.rdoc +18 -0
- data/qed/core/comparable/op_get.rdoc +29 -0
- data/qed/core/dir/ascend.rdoc +24 -0
- data/qed/core/dir/descend.rdoc +14 -0
- data/qed/core/dir/multiglob.rdoc +41 -0
- data/qed/core/dir/parent.rdoc +6 -0
- data/qed/core/dir/recurse.rdoc +41 -0
- data/qed/core/exception/detail.rdoc +12 -0
- data/qed/core/facets.rdoc +6 -0
- data/qed/core/filetest/root.rdoc +6 -0
- data/qed/core/hash/recursively.rdoc +21 -0
- data/qed/core/indexable.rdoc +95 -0
- data/qed/core/integer/bitmask.rdoc +46 -0
- data/qed/core/integer/even.rdoc +12 -0
- data/qed/core/integer/factorial.rdoc +10 -0
- data/qed/core/integer/length.rdoc +7 -0
- data/qed/core/integer/multiple.rdoc +10 -0
- data/qed/core/integer/odd.rdoc +12 -0
- data/qed/core/integer/of.rdoc +14 -0
- data/qed/core/integer/ordinal.rdoc +9 -0
- data/qed/core/matchdata/match.rdoc +7 -0
- data/qed/core/matchdata/matchset.rdoc +15 -0
- data/qed/core/string/align.rdoc +34 -0
- data/qed/core/string/bracket.rdoc +35 -0
- data/qed/core/string/bytes.rdoc +8 -0
- data/qed/core/string/camelcase.rdoc +67 -0
- data/qed/core/string/capitalized.rdoc +27 -0
- data/qed/core/string/characters.rdoc +11 -0
- data/qed/core/string/cleanlines.rdoc +10 -0
- data/qed/core/string/cleave.rdoc +49 -0
- data/qed/core/string/divide.rdoc +9 -0
- data/qed/core/string/each_char.rdoc +9 -0
- data/qed/core/string/each_word.rdoc +9 -0
- data/qed/core/string/end_with.rdoc +6 -0
- data/qed/core/string/expand_tabs.rdoc +69 -0
- data/qed/core/string/fold.rdoc +14 -0
- data/qed/core/string/indent.rdoc +65 -0
- data/qed/core/string/interpolate.rdoc +7 -0
- data/qed/core/string/lchomp.rdoc +14 -0
- data/qed/core/string/line_wrap.rdoc +7 -0
- data/qed/core/string/lines.rdoc +8 -0
- data/qed/core/string/margin.rdoc +92 -0
- data/qed/core/string/methodize.rdoc +22 -0
- data/qed/core/string/modulize.rdoc +22 -0
- data/qed/core/string/mscan.rdoc +10 -0
- data/qed/core/string/natcmp.rdoc +10 -0
- data/qed/core/string/nchar.rdoc +9 -0
- data/qed/core/string/newlines.rdoc +9 -0
- data/qed/core/string/op_sub.rdoc +7 -0
- data/qed/core/string/pathize.rdoc +22 -0
- data/qed/core/string/quote.rdoc +20 -0
- data/qed/core/string/range.rdoc +19 -0
- data/qed/core/string/rewrite.rdoc +9 -0
- data/qed/core/string/shatter.rdoc +9 -0
- data/qed/core/string/snakecase.rdoc +9 -0
- data/qed/core/string/splice.rdoc +28 -0
- data/qed/core/string/start_with.rdoc +7 -0
- data/qed/core/string/subtract.rdoc +8 -0
- data/qed/core/string/tab.rdoc +16 -0
- data/qed/core/string/tabto.rdoc +29 -0
- data/qed/core/string/titlecase.rdoc +8 -0
- data/qed/core/string/to_re.rdoc +22 -0
- data/qed/core/string/unfold.rdoc +9 -0
- data/qed/core/string/unindent.rdoc +65 -0
- data/qed/core/string/unquote.rdoc +6 -0
- data/qed/core/string/variablize.rdoc +7 -0
- data/qed/core/string/word_wrap.rdoc +54 -0
- data/qed/core/string/words.rdoc +13 -0
- data/qed/core/string/xor.rdoc +8 -0
- data/qed/more/basic_object.rdoc +22 -0
- data/qed/more/memoizable.rdoc +134 -0
- data/qed/more/mulititon.rdoc +156 -0
- data/qed/tour/module/cattr.rdoc +43 -0
- data/qed/tour/module/class_extend.rdoc +64 -0
- data/qed/tour/module/class_inheritor.rdoc +126 -0
- data/qed/tour/module/copy_inheritor.rdoc +30 -0
- data/qed/tour/module/method_space.rdoc +55 -0
- data/test/core/array/test_after.rb +17 -0
- data/test/core/array/test_before.rb +17 -0
- data/test/core/array/test_collapse.rb +10 -0
- data/test/core/array/test_combination.rb +9 -17
- data/test/core/array/test_commonality.rb +27 -0
- data/test/core/array/test_conjoin.rb +46 -0
- data/test/core/array/test_contains.rb +10 -0
- data/test/core/array/test_delete.rb +12 -15
- data/test/core/array/test_divide.rb +10 -0
- data/test/core/array/test_duplicates.rb +11 -0
- data/test/core/array/test_entropy.rb +15 -0
- data/test/core/array/test_extract_options.rb +20 -0
- data/test/core/array/test_first.rb +13 -0
- data/test/core/array/test_index.rb +6 -7
- data/test/core/array/test_last.rb +13 -0
- data/test/core/array/test_merge.rb +6 -9
- data/test/core/array/test_mode.rb +13 -0
- data/test/core/array/test_nonuniq.rb +17 -0
- data/test/core/array/test_not_empty.rb +13 -0
- data/test/core/array/test_only.rb +7 -15
- data/test/core/array/test_pad.rb +10 -11
- data/test/core/array/test_peek.rb +24 -0
- data/test/core/array/test_permutation.rb +11 -9
- data/test/core/array/test_poke.rb +17 -0
- data/test/core/array/test_probability.rb +11 -0
- data/test/core/array/test_product.rb +25 -12
- data/test/core/array/test_pull.rb +11 -0
- data/test/core/array/test_recurse.rb +17 -0
- data/test/core/array/test_recursively.rb +29 -0
- data/test/core/array/test_rotate.rb +17 -10
- data/test/core/array/test_select.rb +4 -9
- data/test/core/array/test_splice.rb +17 -0
- data/test/core/array/test_split.rb +18 -0
- data/test/core/array/test_store.rb +20 -0
- data/test/core/array/test_traverse.rb +18 -0
- data/test/core/array/test_uniq_by.rb +13 -0
- data/test/core/binding/test_caller.rb +31 -30
- data/test/core/binding/test_defined.rb +9 -11
- data/test/core/binding/test_eval.rb +6 -9
- data/test/core/binding/test_local_variables.rb +24 -16
- data/test/core/binding/test_op.rb +20 -0
- data/test/core/binding/test_self.rb +6 -11
- data/test/core/class/test_descendents.rb +9 -8
- data/test/core/class/test_subclasses.rb +17 -0
- data/test/core/class/test_to_proc.rb +7 -8
- data/test/core/comparable/test_bound.rb +28 -0
- data/test/core/comparable/test_cap.rb +14 -15
- data/test/core/comparable/test_clip.rb +22 -17
- data/test/core/comparable/test_cmp.rb +6 -29
- data/test/core/comparable/{test_comparable.rb → test_op_get.rb} +19 -15
- data/test/core/denumerable_tc.rb +154 -0
- data/test/core/dir/test_ascend.rb +11 -19
- data/test/core/dir/test_descend.rb +7 -12
- data/test/core/dir/test_each_child.rb +18 -0
- data/test/core/dir/test_multiglob.rb +11 -36
- data/test/core/dir/test_parent.rb +4 -5
- data/test/core/dir/test_recurse.rb +10 -34
- data/test/core/enumerable/test_accumulate.rb +36 -0
- data/test/core/enumerable/test_cluster_by.rb +14 -10
- data/test/core/enumerable/test_compact_map.rb +19 -15
- data/test/core/enumerable/test_count.rb +9 -12
- data/test/core/enumerable/test_defer.rb +13 -78
- data/test/core/enumerable/test_each_by.rb +29 -39
- data/test/core/enumerable/test_each_with_object.rb +14 -0
- data/test/core/enumerable/test_every.rb +11 -12
- data/test/core/enumerable/test_ewise.rb +15 -16
- data/test/core/enumerable/test_exclude.rb +11 -0
- data/test/core/enumerable/test_expand.rb +11 -0
- data/test/core/enumerable/test_filter.rb +15 -0
- data/test/core/enumerable/test_find_yield.rb +43 -29
- data/test/core/enumerable/test_frequency.rb +6 -6
- data/test/core/enumerable/test_graph.rb +38 -0
- data/test/core/enumerable/test_group_by.rb +18 -17
- data/test/core/enumerable/test_map_by.rb +23 -0
- data/test/core/enumerable/test_map_send.rb +10 -0
- data/test/core/enumerable/test_map_with_index.rb +9 -5
- data/test/core/enumerable/test_mash.rb +5 -30
- data/test/core/enumerable/test_modulate.rb +4 -5
- data/test/core/enumerable/test_none.rb +6 -4
- data/test/core/enumerable/test_occur.rb +7 -8
- data/test/core/enumerable/test_one.rb +7 -4
- data/test/core/enumerable/test_per.rb +7 -10
- data/test/core/enumerable/test_purge.rb +18 -0
- data/test/core/enumerable/test_recursively.rb +29 -0
- data/test/core/enumerable/test_sum.rb +9 -0
- data/test/core/enumerable/test_take.rb +5 -7
- data/test/core/enumerable/test_uniq_by.rb +13 -7
- data/test/core/enumerable/test_visit.rb +10 -0
- data/test/core/enumerator/test_fx.rb +12 -0
- data/test/core/enumerator/test_new.rb +17 -0
- data/test/core/enumerator_tc.rb +28 -0
- data/test/core/exception/test_detail.rb +16 -0
- data/test/core/exception/test_raised.rb +13 -0
- data/test/core/exception/test_suppress.rb +14 -0
- data/test/core/file/test_append.rb +19 -0
- data/test/core/file/test_create.rb +8 -26
- data/test/core/file/test_ext.rb +15 -19
- data/test/core/file/test_null.rb +4 -6
- data/test/core/file/test_read_binary.rb +15 -0
- data/test/core/file/test_read_list.rb +12 -0
- data/test/core/file/test_rewrite.rb +18 -27
- data/test/core/file/test_rootname.rb +9 -0
- data/test/core/file/test_sanitize.rb +28 -0
- data/test/core/file/test_split_all.rb +5 -27
- data/test/core/file/test_write.rb +10 -23
- data/test/core/file/test_writelines.rb +10 -15
- data/test/core/filetest/test_root.rb +10 -0
- data/test/core/functor_tc.rb +29 -0
- data/test/core/hash/test_alias.rb +8 -7
- data/test/core/hash/test_argumentize.rb +19 -0
- data/test/core/hash/test_at.rb +5 -6
- data/test/core/hash/test_autonew.rb +12 -5
- data/test/core/hash/test_collate.rb +41 -23
- data/test/core/hash/test_count.rb +10 -0
- data/test/core/hash/test_data.rb +31 -0
- data/test/core/hash/test_dearray_values.rb +7 -8
- data/test/core/hash/test_deep_merge.rb +23 -0
- data/test/core/hash/test_delete_at.rb +14 -0
- data/test/core/hash/test_delete_unless.rb +14 -0
- data/test/core/hash/test_delete_values.rb +22 -0
- data/test/core/hash/test_diff.rb +12 -0
- data/test/core/hash/test_expect.rb +16 -0
- data/test/core/hash/test_graph.rb +32 -0
- data/test/core/hash/test_insert.rb +10 -7
- data/test/core/hash/test_inverse.rb +8 -7
- data/test/core/hash/test_join.rb +28 -0
- data/test/core/hash/test_keys.rb +21 -12
- data/test/core/hash/test_new_with.rb +13 -0
- data/test/core/hash/test_op_add.rb +5 -6
- data/test/core/hash/test_op_and.rb +11 -12
- data/test/core/hash/test_op_mul.rb +5 -6
- data/test/core/hash/test_op_or.rb +5 -6
- data/test/core/hash/test_op_push.rb +18 -18
- data/test/core/hash/test_op_sub.rb +8 -9
- data/test/core/hash/test_recurse.rb +18 -0
- data/test/core/hash/test_recursively.rb +67 -0
- data/test/core/hash/test_rekey.rb +46 -48
- data/test/core/hash/test_replace_each.rb +5 -6
- data/test/core/hash/test_reverse_merge.rb +27 -0
- data/test/core/hash/test_select.rb +23 -18
- data/test/core/hash/test_slice.rb +7 -10
- data/test/core/hash/test_stringify_keys.rb +8 -11
- data/test/core/hash/test_swap.rb +5 -5
- data/test/core/hash/test_symbolize_keys.rb +9 -11
- data/test/core/hash/test_to_mod.rb +20 -0
- data/test/core/hash/test_to_proc.rb +19 -0
- data/test/core/hash/test_to_struct.rb +18 -0
- data/test/core/hash/test_traverse.rb +11 -12
- data/test/core/hash/test_update_each.rb +5 -6
- data/test/core/hash/test_update_keys.rb +6 -7
- data/test/core/hash/test_update_values.rb +6 -6
- data/test/core/hash/test_weave.rb +5 -9
- data/test/core/hash/test_zipnew.rb +4 -5
- data/test/core/indexable_tc.rb +177 -0
- data/test/core/integer/test_bitmask.rb +34 -27
- data/test/core/integer/test_even.rb +7 -6
- data/test/core/integer/test_factorial.rb +16 -9
- data/test/core/integer/test_multiple.rb +3 -4
- data/test/core/integer/test_odd.rb +7 -6
- data/test/core/integer/test_of.rb +12 -7
- data/test/core/integer/test_ordinal.rb +14 -8
- data/test/core/kernel/test_as.rb +48 -39
- data/test/core/kernel/test_ask.rb +8 -0
- data/test/core/kernel/test_assign.rb +29 -30
- data/test/core/kernel/test_assign_from.rb +31 -11
- data/test/core/kernel/test_attr_singleton.rb +16 -18
- data/test/core/kernel/test_blank.rb +83 -0
- data/test/core/kernel/test_callstack.rb +8 -5
- data/test/core/kernel/test_class.rb +10 -0
- data/test/core/kernel/test_complete.rb +15 -0
- data/test/core/kernel/test_constant.rb +7 -11
- data/test/core/kernel/test_d.rb +10 -0
- data/test/core/kernel/test_deep_copy.rb +33 -0
- data/test/core/kernel/test_dir.rb +16 -0
- data/test/core/kernel/test_disable_warnings.rb +26 -0
- data/test/core/kernel/test_dup.rb +66 -0
- data/test/core/kernel/test_ergo.rb +23 -0
- data/test/core/kernel/test_extension.rb +14 -0
- data/test/core/kernel/test_get.rb +34 -0
- data/test/core/kernel/test_here.rb +4 -10
- data/test/core/kernel/test_in.rb +5 -6
- data/test/core/kernel/test_instance_assign.rb +7 -8
- data/test/core/kernel/test_instance_class.rb +4 -5
- data/test/core/kernel/test_instance_send.rb +22 -0
- data/test/core/kernel/test_maybe.rb +9 -0
- data/test/core/kernel/test_meta_alias.rb +14 -0
- data/test/core/kernel/test_meta_class.rb +25 -0
- data/test/core/kernel/test_meta_def.rb +11 -0
- data/test/core/kernel/test_meta_eval.rb +14 -0
- data/test/core/kernel/test_method.rb +10 -10
- data/test/core/kernel/test_not.rb +44 -0
- data/test/core/kernel/test_not_nil.rb +16 -8
- data/test/core/kernel/test_object_class.rb +7 -8
- data/test/core/kernel/test_object_hexid.rb +4 -5
- data/test/core/kernel/test_object_send.rb +21 -0
- data/test/core/kernel/test_object_state.rb +72 -0
- data/test/core/kernel/test_presence.rb +29 -0
- data/test/core/kernel/test_qua_class.rb +19 -0
- data/test/core/kernel/test_replace.rb +64 -0
- data/test/core/kernel/test_require_all.rb +11 -0
- data/test/core/kernel/test_require_relative.rb +12 -0
- data/test/core/kernel/test_respond.rb +32 -0
- data/test/core/kernel/test_returning.rb +4 -7
- data/test/core/kernel/test_silence.rb +17 -8
- data/test/core/kernel/test_singleton_class.rb +11 -0
- data/test/core/kernel/test_source_location.rb +18 -0
- data/test/core/kernel/test_super_method.rb +20 -0
- data/test/core/kernel/test_tap.rb +24 -9
- data/test/core/kernel/test_temporarily.rb +21 -0
- data/test/core/kernel/test_true.rb +23 -0
- data/test/core/kernel/test_try.rb +27 -0
- data/test/core/kernel/test_try_dup.rb +46 -0
- data/test/core/kernel/test_val.rb +11 -12
- data/test/core/kernel/test_with.rb +14 -0
- data/test/core/kernel/test_writers.rb +49 -0
- data/test/core/matchdata/test_match.rb +4 -8
- data/test/core/matchdata/test_matchset.rb +8 -10
- data/test/core/module/test_abstract.rb +13 -16
- data/test/core/module/test_alias_accessor.rb +14 -13
- data/test/core/module/test_alias_method_chain.rb +21 -20
- data/test/core/module/test_alias_module_function.rb +14 -12
- data/test/core/module/test_all_instance_methods.rb +23 -0
- data/test/core/module/test_ancestor.rb +6 -5
- data/test/core/module/test_anonymous.rb +14 -0
- data/test/core/module/test_attr_setter.rb +24 -0
- data/test/core/module/test_basename.rb +4 -5
- data/test/core/module/test_can.rb +10 -11
- data/test/core/module/test_class.rb +10 -13
- data/test/core/module/test_class_def.rb +18 -0
- data/test/core/module/test_instance_method.rb +16 -0
- data/test/core/module/test_instance_method_defined.rb +26 -0
- data/test/core/module/test_integrate.rb +15 -14
- data/test/core/module/test_is.rb +34 -10
- data/test/core/module/test_method_clash.rb +50 -0
- data/test/core/module/test_methodize.rb +12 -5
- data/test/core/module/test_modname.rb +9 -0
- data/test/core/module/test_module_def.rb +18 -0
- data/test/core/module/test_nodef.rb +15 -0
- data/test/core/module/test_op.rb +23 -25
- data/test/core/module/test_pathize.rb +11 -9
- data/test/core/module/test_redefine_method.rb +14 -19
- data/test/core/module/test_redirect_method.rb +14 -15
- data/test/core/module/test_remove.rb +15 -0
- data/test/core/module/test_rename_method.rb +16 -17
- data/test/core/module/test_revise.rb +33 -34
- data/test/core/module/test_set.rb +26 -0
- data/test/core/module/test_spacename.rb +5 -8
- data/test/core/module/test_to_obj.rb +16 -0
- data/test/core/module/test_wrap_method.rb +15 -15
- data/test/core/nilclass/test_to_f.rb +4 -5
- data/test/core/numeric/test_approx.rb +4 -4
- data/test/core/numeric/test_distance.rb +6 -7
- data/test/core/numeric/test_length.rb +12 -0
- data/test/core/numeric/test_round.rb +42 -33
- data/test/core/numeric/test_spacing.rb +8 -7
- data/test/core/proc/test_bind.rb +7 -7
- data/test/core/proc/test_bind_to.rb +13 -0
- data/test/core/proc/test_compose.rb +8 -9
- data/test/core/proc/test_curry.rb +11 -13
- data/test/core/proc/test_partial.rb +23 -0
- data/test/core/proc/test_to_method.rb +28 -15
- data/test/core/proc/test_update.rb +11 -0
- data/test/core/range/test_combine.rb +13 -7
- data/test/core/range/test_overlap.rb +3 -7
- data/test/core/range/test_to_r.rb +6 -7
- data/test/core/range/test_umbrella.rb +28 -0
- data/test/core/range/test_within.rb +3 -27
- data/test/core/regexp/test_arity.rb +11 -8
- data/test/core/regexp/test_multiline.rb +15 -0
- data/test/core/regexp/test_op_add.rb +11 -0
- data/test/core/regexp/test_op_or.rb +12 -0
- data/test/core/regexp/test_to_re.rb +6 -7
- data/test/core/string/test_align.rb +13 -11
- data/test/core/string/test_bracket.rb +21 -52
- data/test/core/string/test_bytes.rb +4 -5
- data/test/core/string/test_camelcase.rb +43 -35
- data/test/core/string/test_capitalized.rb +14 -15
- data/test/core/string/test_characters.rb +11 -0
- data/test/core/string/test_cleanlines.rb +4 -5
- data/test/core/string/test_cleave.rb +17 -26
- data/test/core/string/test_cmp.rb +14 -0
- data/test/core/string/test_compress_lines.rb +14 -0
- data/test/core/string/test_divide.rb +4 -5
- data/test/core/string/test_each_char.rb +4 -5
- data/test/core/string/test_each_word.rb +4 -5
- data/test/core/string/test_edit_distance.rb +16 -0
- data/test/core/string/test_end_with.rb +9 -5
- data/test/core/string/test_exclude.rb +19 -0
- data/test/core/string/test_expand_tabs.rb +39 -26
- data/test/core/string/test_file.rb +11 -0
- data/test/core/string/test_fold.rb +6 -7
- data/test/core/string/test_indent.rb +51 -45
- data/test/core/string/test_index_all.rb +10 -0
- data/test/core/string/test_interpolate.rb +4 -8
- data/test/core/string/test_lchomp.rb +6 -7
- data/test/core/string/test_line_wrap.rb +5 -6
- data/test/core/string/test_lines.rb +4 -5
- data/test/core/string/test_lowercase.rb +14 -0
- data/test/core/string/test_margin.rb +17 -18
- data/test/core/string/test_methodize.rb +8 -9
- data/test/core/string/test_modulize.rb +8 -9
- data/test/core/string/test_mscan.rb +6 -7
- data/test/core/string/test_natcmp.rb +8 -12
- data/test/core/string/test_nchar.rb +7 -8
- data/test/core/string/test_newlines.rb +4 -5
- data/test/core/string/test_op_div.rb +11 -0
- data/test/core/string/test_op_sub.rb +4 -5
- data/test/core/string/test_pathize.rb +11 -12
- data/test/core/string/test_quote.rb +38 -0
- data/test/core/string/test_range.rb +12 -12
- data/test/core/string/test_rewrite.rb +5 -6
- data/test/core/string/test_shatter.rb +6 -7
- data/test/core/string/test_similarity.rb +10 -0
- data/test/core/string/test_snakecase.rb +7 -8
- data/test/core/string/test_splice.rb +13 -14
- data/test/core/string/test_squish.rb +23 -0
- data/test/core/string/test_start_with.rb +9 -5
- data/test/core/string/test_store.rb +12 -0
- data/test/core/string/test_subtract.rb +6 -7
- data/test/core/string/test_tab.rb +5 -6
- data/test/core/string/test_tabto.rb +5 -6
- data/test/core/string/test_titlecase.rb +4 -5
- data/test/core/string/test_to_re.rb +15 -15
- data/test/core/string/test_unbracket.rb +26 -0
- data/test/core/string/test_underscore.rb +17 -0
- data/test/core/string/test_unfold.rb +4 -5
- data/test/core/string/test_unindent.rb +100 -0
- data/test/core/string/test_unquote.rb +9 -0
- data/test/core/string/test_uppercase.rb +18 -0
- data/test/core/string/test_variablize.rb +4 -5
- data/test/core/string/test_word_wrap.rb +50 -27
- data/test/core/string/test_words.rb +7 -22
- data/test/core/string/test_xor.rb +4 -5
- data/test/core/symbol/test_as_s.rb +11 -0
- data/test/core/symbol/test_bang.rb +11 -0
- data/test/core/symbol/test_chomp.rb +6 -7
- data/test/core/symbol/test_generate.rb +8 -12
- data/test/core/symbol/test_not.rb +7 -5
- data/test/core/symbol/test_op_div.rb +11 -0
- data/test/core/symbol/test_plain.rb +4 -5
- data/test/core/symbol/test_query.rb +3 -4
- data/test/core/symbol/test_setter.rb +3 -4
- data/test/core/symbol/test_succ.rb +6 -7
- data/test/core/symbol/test_to_proc.rb +13 -13
- data/test/core/symbol/test_variablize.rb +10 -0
- data/test/core/time/test_ago.rb +127 -0
- data/test/core/time/test_change.rb +6 -8
- data/test/core/time/test_dst_adjustment.rb +10 -0
- data/test/core/time/test_elapse.rb +3 -5
- data/test/core/time/test_future.rb +21 -0
- data/test/core/time/test_hence.rb +9 -121
- data/test/core/time/test_in.rb +126 -0
- data/test/core/time/test_past.rb +21 -0
- data/test/core/time/test_round_to.rb +28 -0
- data/test/core/time/test_set.rb +39 -0
- data/test/core/time/test_stamp.rb +19 -14
- data/test/core/time/test_to_time.rb +5 -6
- data/test/core/time/test_trunc.rb +13 -16
- data/test/core/to_hash_tc.rb +163 -0
- data/test/core/unboundmethod/test_arguments.rb +8 -8
- data/test/core/unboundmethod/test_name.rb +6 -6
- data/test/more/test_argvector.rb +27 -27
- data/test/more/test_date.rb +28 -32
- data/test/more/test_memoizable.rb +38 -0
- data/test/more/test_multipliers.rb +45 -48
- data/test/more/test_ostruct.rb +91 -93
- data/test/more/test_random.rb +97 -90
- data/test/more/test_shellwords.rb +46 -11
- data/test/more/test_thread.rb +8 -9
- data/test/more/test_timer.rb +17 -32
- data/test/more/test_tuple.rb +29 -23
- data/test/more/test_uri.rb +10 -13
- data/test/tour/array/test_median.rb +10 -0
- data/test/tour/array/test_percentile.rb +10 -0
- data/test/tour/class/test_preallocate.rb +27 -0
- data/test/tour/module/test_cattr.rb +45 -0
- data/test/tour/module/test_class_extend.rb +66 -0
- data/test/tour/module/test_class_inheritor.rb +148 -0
- data/test/tour/module/test_copy_inheritor.rb +32 -0
- data/test/tour/module/test_enclosure.rb +20 -0
- data/test/tour/module/test_instance_function.rb +26 -0
- data/test/tour/module/test_memoize.rb +30 -0
- data/test/tour/module/test_method_space.rb +64 -0
- data/test/tour/module/test_module_load.rb +19 -0
- data/test/tour/module/test_prepend.rb +24 -0
- metadata +658 -278
- data/NOTES +0 -143
- data/demo/hook.rdoc +0 -49
- data/demo/scenario_require.rdoc +0 -7
- data/lib/core/facets-live.rb +0 -19
- data/lib/core/facets-load.rb +0 -12
- data/lib/core/facets/array/recursive.rb +0 -91
- data/lib/core/facets/array/stackable.rb +0 -33
- data/lib/core/facets/blank.rb +0 -60
- data/lib/core/facets/cattr.rb +0 -2
- data/lib/core/facets/class/cattr.rb +0 -112
- data/lib/core/facets/class/cattr_accessor.rb +0 -1
- data/lib/core/facets/class/cattr_reader.rb +0 -1
- data/lib/core/facets/class/cattr_writer.rb +0 -1
- data/lib/core/facets/class/descendents.rb +0 -1
- data/lib/core/facets/comparable/comparable.rb +0 -42
- data/lib/core/facets/duplicable.rb +0 -32
- data/lib/core/facets/enumerable/collisions.rb +0 -1
- data/lib/core/facets/enumerable/divide.rb +0 -33
- data/lib/core/facets/enumerable/duplicates.rb +0 -38
- data/lib/core/facets/enumerable/mode.rb +0 -16
- data/lib/core/facets/enumerable/recursive.rb +0 -75
- data/lib/core/facets/file/read.rb +0 -41
- data/lib/core/facets/hash/group_by_value.rb +0 -65
- data/lib/core/facets/hash/recursive.rb +0 -180
- data/lib/core/facets/hash/to_module.rb +0 -26
- data/lib/core/facets/kernel/__here__.rb +0 -14
- data/lib/core/facets/kernel/populate.rb +0 -2
- data/lib/core/facets/kernel/require_local.rb +0 -31
- data/lib/core/facets/kernel/resc.rb +0 -16
- data/lib/core/facets/kernel/set_from.rb +0 -2
- data/lib/core/facets/module/conflict.rb +0 -62
- data/lib/core/facets/module/instance_methods.rb +0 -38
- data/lib/core/facets/module/modspace.rb +0 -22
- data/lib/core/facets/module/module_require.rb +0 -1
- data/lib/core/facets/module/nesting.rb +0 -18
- data/lib/core/facets/stackable.rb +0 -86
- data/lib/core/facets/string/chars.rb +0 -20
- data/lib/core/facets/symbol/re_s.rb +0 -18
- data/lib/core/facets/time/advance.rb +0 -18
- data/lib/core/facets/time/round.rb +0 -17
- data/lib/more/facets/ansicode.rb +0 -306
- data/lib/more/facets/autoarray.rb +0 -34
- data/lib/more/facets/autoreload.rb +0 -150
- data/lib/more/facets/blankslate.rb +0 -10
- data/lib/more/facets/casting_hash.rb +0 -172
- data/lib/more/facets/class_extend.rb +0 -126
- data/lib/more/facets/cloneable.rb +0 -76
- data/lib/more/facets/daemonize.rb +0 -44
- data/lib/more/facets/dictionary.rb +0 -430
- data/lib/more/facets/duration.rb +0 -286
- data/lib/more/facets/enumargs.rb +0 -192
- data/lib/more/facets/equitable.rb +0 -120
- data/lib/more/facets/expirable.rb +0 -54
- data/lib/more/facets/filelist.rb +0 -497
- data/lib/more/facets/hashbuilder.rb +0 -101
- data/lib/more/facets/hook.rb +0 -38
- data/lib/more/facets/ini.rb +0 -267
- data/lib/more/facets/instantiable.rb +0 -47
- data/lib/more/facets/linkedlist.rb +0 -195
- data/lib/more/facets/matcher.rb +0 -140
- data/lib/more/facets/memoize.rb +0 -1
- data/lib/more/facets/memoizer.rb +0 -64
- data/lib/more/facets/methodspace.rb +0 -146
- data/lib/more/facets/module/attr.rb +0 -83
- data/lib/more/facets/module/attr_toggler.rb +0 -59
- data/lib/more/facets/module/class_extend.rb +0 -3
- data/lib/more/facets/once.rb +0 -59
- data/lib/more/facets/opencascade.rb +0 -94
- data/lib/more/facets/opencollection.rb +0 -43
- data/lib/more/facets/openhash.rb +0 -39
- data/lib/more/facets/openmodule.rb +0 -16
- data/lib/more/facets/openobject.rb +0 -267
- data/lib/more/facets/orderedhash.rb +0 -5
- data/lib/more/facets/ostructable.rb +0 -209
- data/lib/more/facets/pathlist.rb +0 -105
- data/lib/more/facets/preinitialize.rb +0 -157
- data/lib/more/facets/prepend.rb +0 -57
- data/lib/more/facets/rbsystem.rb +0 -222
- data/lib/more/facets/registerable.rb +0 -35
- data/lib/more/facets/semaphore.rb +0 -92
- data/lib/more/facets/stash.rb +0 -181
- data/lib/more/facets/succ.rb +0 -44
- data/lib/more/facets/version.rb +0 -136
- data/meta/authors +0 -1
- data/meta/collection +0 -1
- data/meta/contact +0 -1
- data/meta/contributors +0 -48
- data/meta/created +0 -1
- data/meta/description +0 -13
- data/meta/homepage +0 -1
- data/meta/license +0 -1
- data/meta/loadpath +0 -2
- data/meta/name +0 -1
- data/meta/released +0 -1
- data/meta/repository +0 -1
- data/meta/sitemap +0 -4
- data/meta/slogan +0 -1
- data/meta/summary +0 -1
- data/meta/version +0 -1
- data/script/conflicts +0 -63
- data/script/methods +0 -49
- data/test/core/array/test_indexable.rb +0 -118
- data/test/core/array/test_recursive.rb +0 -18
- data/test/core/array/test_stackable.rb +0 -22
- data/test/core/binding/test_opvars.rb +0 -24
- data/test/core/class/test_cattr.rb +0 -47
- data/test/core/class/test_cattr_accessor.rb +0 -2
- data/test/core/class/test_cattr_reader.rb +0 -1
- data/test/core/class/test_cattr_writer.rb +0 -1
- data/test/core/enumerable/test_commonality.rb +0 -15
- data/test/core/enumerable/test_entropy.rb +0 -15
- data/test/core/enumerable/test_inject.rb +0 -18
- data/test/core/enumerable/test_probability.rb +0 -11
- data/test/core/enumerable/test_recursive.rb +0 -18
- data/test/core/enumerable/test_split.rb +0 -19
- data/test/core/exception/test_exception.rb +0 -17
- data/test/core/file/test_file.rb +0 -85
- data/test/core/filetest/test_filetest.rb +0 -10
- data/test/core/hash/test_delete.rb +0 -28
- data/test/core/hash/test_mash.rb +0 -20
- data/test/core/hash/test_merge.rb +0 -14
- data/test/core/hash/test_op.rb +0 -1
- data/test/core/hash/test_recursive.rb +0 -23
- data/test/core/hash/test_to_module.rb +0 -21
- data/test/core/integer/test_length.rb +0 -12
- data/test/core/kernel/test_deepcopy.rb +0 -27
- data/test/core/kernel/test_resc.rb +0 -12
- data/test/core/module/test_conflict.rb +0 -24
- data/test/core/module/test_modspace.rb +0 -13
- data/test/core/module/test_nesting.rb +0 -21
- data/test/core/module/test_prepend.rb +0 -29
- data/test/core/string/test_chars.rb +0 -12
- data/test/core/string/test_outdent.rb +0 -65
- data/test/core/test_blank.rb +0 -12
- data/test/core/test_boolean.rb +0 -89
- data/test/core/test_functor.rb +0 -26
- data/test/core/test_metaid.rb +0 -39
- data/test/core/test_to_hash.rb +0 -244
- data/test/core/time/test_round.rb +0 -31
- data/test/more/test_ansicode.rb +0 -20
- data/test/more/test_autoarray.rb +0 -18
- data/test/more/test_basicobject.rb +0 -34
- data/test/more/test_class_extend.rb +0 -64
- data/test/more/test_cloneable.rb +0 -41
- data/test/more/test_continuation.rb +0 -15
- data/test/more/test_dictionary.rb +0 -145
- data/test/more/test_enumargs.rb +0 -70
- data/test/more/test_equitable.rb +0 -42
- data/test/more/test_getoptlong.rb +0 -26
- data/test/more/test_inheritor.rb +0 -148
- data/test/more/test_instance_function.rb +0 -31
- data/test/more/test_instantiable.rb +0 -37
- data/test/more/test_memoize.rb +0 -38
- data/test/more/test_methodspace.rb +0 -78
- data/test/more/test_multiton.rb +0 -184
- data/test/more/test_opencascade.rb +0 -61
- data/test/more/test_openobject.rb +0 -112
- data/test/more/test_partial.rb +0 -27
- data/test/more/test_prepend.rb +0 -28
- data/test/more/test_succ.rb +0 -35
@@ -1,120 +0,0 @@
|
|
1
|
-
# = Equitable
|
2
|
-
#
|
3
|
-
# This mixin provides methods of equality based
|
4
|
-
# on a single #identity method which must return
|
5
|
-
# a list of accessors used as the identity keys.
|
6
|
-
#
|
7
|
-
# It also provides a "shortcut" for creating the
|
8
|
-
# #identity method based on given accessors and returns
|
9
|
-
# the Equitable module for inclusion.
|
10
|
-
#
|
11
|
-
# include Equitable(:a, :b)
|
12
|
-
#
|
13
|
-
# is equivalent to including a module containing:
|
14
|
-
#
|
15
|
-
# def ==(other)
|
16
|
-
# self.a == other.a && self.b == other.b
|
17
|
-
# end
|
18
|
-
#
|
19
|
-
# def eql?(other)
|
20
|
-
# self.a.eql?(other.a) && self.b.eql?(other.b)
|
21
|
-
# end
|
22
|
-
#
|
23
|
-
# def hash()
|
24
|
-
# self.a.hash ^ self.b.hash
|
25
|
-
# end
|
26
|
-
#
|
27
|
-
# == Authors
|
28
|
-
#
|
29
|
-
# * Thomas Sawyer
|
30
|
-
#
|
31
|
-
# == Copying
|
32
|
-
#
|
33
|
-
# Copyright (c) 2004 Thomas Sawyer
|
34
|
-
#
|
35
|
-
# Ruby License
|
36
|
-
#
|
37
|
-
# This module is free software. You may use, modify, and/or redistribute this
|
38
|
-
# software under the same terms as Ruby.
|
39
|
-
#
|
40
|
-
# This program is distributed in the hope that it will be useful, but WITHOUT
|
41
|
-
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
42
|
-
# FOR A PARTICULAR PURPOSE.
|
43
|
-
|
44
|
-
|
45
|
-
# = Equitable
|
46
|
-
#
|
47
|
-
# This mixin provides methods of equality based
|
48
|
-
# on a single #identity method which must return
|
49
|
-
# a list of accessors used as the identity keys.
|
50
|
-
#
|
51
|
-
# It also provides a "shortcut" for creating the
|
52
|
-
# #identity method based on given accessors and returns
|
53
|
-
# the Equitable module for inclusion.
|
54
|
-
#
|
55
|
-
# include Equitable(:a, :b)
|
56
|
-
#
|
57
|
-
# is equivalent to including a module containing:
|
58
|
-
#
|
59
|
-
# def ==(other)
|
60
|
-
# self.a == other.a && self.b == other.b
|
61
|
-
# end
|
62
|
-
#
|
63
|
-
# def eql?(other)
|
64
|
-
# self.a.eql?(other.a) && self.b.eql?(other.b)
|
65
|
-
# end
|
66
|
-
#
|
67
|
-
# def hash()
|
68
|
-
# self.a.hash ^ self.b.hash
|
69
|
-
# end
|
70
|
-
#
|
71
|
-
module Equitable
|
72
|
-
|
73
|
-
def self.identify(base, *accessors)
|
74
|
-
base.send(:define_method, :identity){ accessors }
|
75
|
-
self
|
76
|
-
end
|
77
|
-
|
78
|
-
def ==(o)
|
79
|
-
identity.all?{ |a| send(a) == o.send(a) }
|
80
|
-
end
|
81
|
-
|
82
|
-
def eql?(o)
|
83
|
-
identity.all?{ |a| send(a).eql?(o.send(a)) }
|
84
|
-
end
|
85
|
-
|
86
|
-
def hash
|
87
|
-
identity.inject(0){ |memo, a| memo ^ send(a).hash }
|
88
|
-
end
|
89
|
-
|
90
|
-
end
|
91
|
-
|
92
|
-
class Module
|
93
|
-
|
94
|
-
# This function provided a "shortcut" for creating the
|
95
|
-
# #identity method based on given accessors and returns
|
96
|
-
# the Equitable module for inclusion.
|
97
|
-
#
|
98
|
-
# include Equitable(:a, :b)
|
99
|
-
#
|
100
|
-
# is equivalent to including a module containing:
|
101
|
-
#
|
102
|
-
# def ==(other)
|
103
|
-
# self.a == other.a && self.b == other.b
|
104
|
-
# end
|
105
|
-
#
|
106
|
-
# def eql?(other)
|
107
|
-
# self.a.eql?(other.a) && self.b.eql?(other.b)
|
108
|
-
# end
|
109
|
-
#
|
110
|
-
# def hash()
|
111
|
-
# self.a.hash ^ self.b.hash
|
112
|
-
# end
|
113
|
-
#
|
114
|
-
|
115
|
-
def Equitable(*accessors)
|
116
|
-
Equitable.identify(self, *accessors)
|
117
|
-
end
|
118
|
-
|
119
|
-
end
|
120
|
-
|
@@ -1,54 +0,0 @@
|
|
1
|
-
# Expirable
|
2
|
-
#
|
3
|
-
# Copyright (c) 2004 George Moschovitis
|
4
|
-
#
|
5
|
-
# This program is free software: you can redistribute it and/or modify
|
6
|
-
# it under the terms of the GNU Lesser General Public License as published
|
7
|
-
# by the Free Software Foundation, either version 3 of the License, or
|
8
|
-
# (at your option) any later version.
|
9
|
-
#
|
10
|
-
# This program is distributed in the hope that it will be useful,
|
11
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
-
# GNU Lesser General Public License for more details.
|
14
|
-
#
|
15
|
-
# You should have received a copy of the GNU Lesser General Public License
|
16
|
-
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
17
|
-
|
18
|
-
|
19
|
-
# Generic expirability mixin.
|
20
|
-
#
|
21
|
-
module Expirable
|
22
|
-
|
23
|
-
attr_accessor :expires
|
24
|
-
|
25
|
-
# Set the expires timeout for this entry.
|
26
|
-
|
27
|
-
def expires_after(timeout = (60*60*24))
|
28
|
-
@expires = Time.now + timeout
|
29
|
-
end
|
30
|
-
|
31
|
-
# Set the expire timeout for this entry. The timeout happens
|
32
|
-
# after (base + rand(spread)) seconds.
|
33
|
-
|
34
|
-
def expires_spread(base, spread)
|
35
|
-
@expires = Time.now + base + rand(spread)
|
36
|
-
end
|
37
|
-
|
38
|
-
# Is this entry expired?
|
39
|
-
|
40
|
-
def expired?
|
41
|
-
if @expires.nil? or (Time.now > @expires)
|
42
|
-
return true
|
43
|
-
else
|
44
|
-
return false
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
# Update the expiration period. Override in your application.
|
49
|
-
|
50
|
-
def touch!
|
51
|
-
end
|
52
|
-
|
53
|
-
end
|
54
|
-
|
data/lib/more/facets/filelist.rb
DELETED
@@ -1,497 +0,0 @@
|
|
1
|
-
# = FileList
|
2
|
-
#
|
3
|
-
# A FileList is essentially an array with helper methods
|
4
|
-
# to make file manipulation easier.
|
5
|
-
#
|
6
|
-
# FileLists are lazy. When given a list of glob patterns for
|
7
|
-
# possible files to be included in the file list, instead of
|
8
|
-
# searching the file structures to find the files, a FileList holds
|
9
|
-
# the pattern for latter use.
|
10
|
-
#
|
11
|
-
# This allows us to define a number of FileList to match any number of
|
12
|
-
# files, but only search out the actual files when then FileList
|
13
|
-
# itself is actually used. The key is that the first time an
|
14
|
-
# element of the FileList/Array is requested, the pending patterns
|
15
|
-
# are resolved into a real list of file names.
|
16
|
-
#
|
17
|
-
# fl = FileList.new
|
18
|
-
# fl.include('./**/*')
|
19
|
-
# fl.exclude('./*~')
|
20
|
-
#
|
21
|
-
# == History
|
22
|
-
#
|
23
|
-
# FileList was ported from Jim Weirich's Rake.
|
24
|
-
#
|
25
|
-
# == Authors
|
26
|
-
#
|
27
|
-
# * Jim Weirich
|
28
|
-
#
|
29
|
-
# == Todo
|
30
|
-
#
|
31
|
-
# * Should the exclusions really be the default?
|
32
|
-
# Maybe have #exclude_typical instead.
|
33
|
-
#
|
34
|
-
# == Copying
|
35
|
-
#
|
36
|
-
# Copyright (C) 2002 Jim Weirich
|
37
|
-
#
|
38
|
-
# General Public License (GPL)
|
39
|
-
#
|
40
|
-
# Permission is hereby granted, free of charge, to any person obtaining
|
41
|
-
# a copy of this software and associated documentation files (the
|
42
|
-
# "Software"), to deal in the Software without restriction, including
|
43
|
-
# without limitation the rights to use, copy, modify, merge, publish,
|
44
|
-
# distribute, sublicense, and/or sell copies of the Software, and to
|
45
|
-
# permit persons to whom the Software is furnished to do so, subject to
|
46
|
-
# the following conditions:
|
47
|
-
#
|
48
|
-
# The above copyright notice and this permission notice shall be
|
49
|
-
# included in all copies or substantial portions of the Software.
|
50
|
-
#
|
51
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
52
|
-
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
53
|
-
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
54
|
-
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
55
|
-
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
56
|
-
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
57
|
-
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
58
|
-
|
59
|
-
# = FileList
|
60
|
-
#
|
61
|
-
# A FileList is essentially an array with helper methods
|
62
|
-
# to make file manipulation easier.
|
63
|
-
#
|
64
|
-
# FileLists are lazy. When given a list of glob patterns for
|
65
|
-
# possible files to be included in the file list, instead of
|
66
|
-
# searching the file structures to find the files, a FileList holds
|
67
|
-
# the pattern for latter use.
|
68
|
-
#
|
69
|
-
# This allows us to define a number of FileList to match any number of
|
70
|
-
# files, but only search out the actual files when then FileList
|
71
|
-
# itself is actually used. The key is that the first time an
|
72
|
-
# element of the FileList/Array is requested, the pending patterns
|
73
|
-
# are resolved into a real list of file names.
|
74
|
-
#
|
75
|
-
# fl = FileList.new
|
76
|
-
# fl.include('./**/*')
|
77
|
-
# fl.exclude('./*~')
|
78
|
-
#
|
79
|
-
class FileList
|
80
|
-
|
81
|
-
# TODO: Add glob options.
|
82
|
-
#attr :glob_options
|
83
|
-
|
84
|
-
#include Cloneable
|
85
|
-
def clone
|
86
|
-
sibling = self.class.new
|
87
|
-
instance_variables.each do |ivar|
|
88
|
-
value = self.instance_variable_get(ivar)
|
89
|
-
sibling.instance_variable_set(ivar, value.rake_dup)
|
90
|
-
end
|
91
|
-
sibling
|
92
|
-
end
|
93
|
-
alias_method :dup, :clone
|
94
|
-
|
95
|
-
# == Method Delegation
|
96
|
-
#
|
97
|
-
# The lazy evaluation magic of FileLists happens by implementing
|
98
|
-
# all the array specific methods to call +resolve+ before
|
99
|
-
# delegating the heavy lifting to an embedded array object
|
100
|
-
# (@items).
|
101
|
-
#
|
102
|
-
# In addition, there are two kinds of delegation calls. The
|
103
|
-
# regular kind delegates to the @items array and returns the
|
104
|
-
# result directly. Well, almost directly. It checks if the
|
105
|
-
# returned value is the @items object itself, and if so will
|
106
|
-
# return the FileList object instead.
|
107
|
-
#
|
108
|
-
# The second kind of delegation call is used in methods that
|
109
|
-
# normally return a new Array object. We want to capture the
|
110
|
-
# return value of these methods and wrap them in a new FileList
|
111
|
-
# object. We enumerate these methods in the +SPECIAL_RETURN+ list
|
112
|
-
# below.
|
113
|
-
|
114
|
-
# List of array methods (that are not in +Object+) that need to be
|
115
|
-
# delegated.
|
116
|
-
ARRAY_METHODS = (Array.instance_methods - Object.instance_methods).map(&:to_s)
|
117
|
-
|
118
|
-
# List of additional methods that must be delegated.
|
119
|
-
MUST_DEFINE = %w[to_a inspect].map(&:to_s)
|
120
|
-
|
121
|
-
# List of methods that should not be delegated here (we define
|
122
|
-
# special versions of them explicitly below).
|
123
|
-
MUST_NOT_DEFINE = %w[to_a to_ary partition *].map(&:to_s)
|
124
|
-
|
125
|
-
# List of delegated methods that return new array values which
|
126
|
-
# need wrapping.
|
127
|
-
SPECIAL_RETURN = %w[
|
128
|
-
map collect sort sort_by select find_all reject grep
|
129
|
-
compact flatten uniq values_at
|
130
|
-
+ - & |
|
131
|
-
].map(&:to_s)
|
132
|
-
|
133
|
-
DELEGATING_METHODS = (ARRAY_METHODS + MUST_DEFINE - MUST_NOT_DEFINE).sort.uniq
|
134
|
-
|
135
|
-
# Now do the delegation.
|
136
|
-
DELEGATING_METHODS.each_with_index do |sym, i|
|
137
|
-
if SPECIAL_RETURN.include?(sym)
|
138
|
-
ln = __LINE__+1
|
139
|
-
class_eval %{
|
140
|
-
def #{sym}(*args, &block)
|
141
|
-
resolve if @pending
|
142
|
-
result = @items.send(:#{sym}, *args, &block)
|
143
|
-
FileList.new.import(result)
|
144
|
-
end
|
145
|
-
}, __FILE__, ln
|
146
|
-
else
|
147
|
-
ln = __LINE__+1
|
148
|
-
class_eval %{
|
149
|
-
def #{sym}(*args, &block)
|
150
|
-
resolve if @pending
|
151
|
-
result = @items.send(:#{sym}, *args, &block)
|
152
|
-
result.object_id == @items.object_id ? self : result
|
153
|
-
end
|
154
|
-
}, __FILE__, ln
|
155
|
-
end
|
156
|
-
end
|
157
|
-
|
158
|
-
# Create a file list from the globbable patterns given. If you
|
159
|
-
# wish to perform multiple includes or excludes at object build
|
160
|
-
# time, use the "yield self" pattern.
|
161
|
-
#
|
162
|
-
# Example:
|
163
|
-
# file_list = FileList.new['lib/**/*.rb', 'test/test*.rb']
|
164
|
-
#
|
165
|
-
# pkg_files = FileList.new['lib/**/*'] do |fl|
|
166
|
-
# fl.exclude(/\bCVS\b/)
|
167
|
-
# end
|
168
|
-
#
|
169
|
-
def initialize(*patterns)
|
170
|
-
@pending_add = []
|
171
|
-
@pending = false
|
172
|
-
@exclude_patterns = DEFAULT_IGNORE_PATTERNS.dup
|
173
|
-
@exclude_re = nil
|
174
|
-
@items = []
|
175
|
-
patterns.each { |pattern| include(pattern) }
|
176
|
-
yield self if block_given?
|
177
|
-
end
|
178
|
-
|
179
|
-
# Add file names defined by glob patterns to the file list. If an
|
180
|
-
# array is given, add each element of the array.
|
181
|
-
#
|
182
|
-
# Example:
|
183
|
-
# file_list.include("*.java", "*.cfg")
|
184
|
-
# file_list.include %w( math.c lib.h *.o )
|
185
|
-
#
|
186
|
-
def include(*filenames)
|
187
|
-
# TODO: check for pending
|
188
|
-
filenames.each do |fn|
|
189
|
-
if fn.respond_to? :to_ary
|
190
|
-
include(*fn.to_ary)
|
191
|
-
else
|
192
|
-
@pending_add << fn
|
193
|
-
end
|
194
|
-
end
|
195
|
-
@pending = true
|
196
|
-
self
|
197
|
-
end
|
198
|
-
alias :add :include
|
199
|
-
|
200
|
-
# Register a list of file name patterns that should be excluded
|
201
|
-
# from the list. Patterns may be regular expressions, glob
|
202
|
-
# patterns or regular strings.
|
203
|
-
#
|
204
|
-
# Note that glob patterns are expanded against the file system.
|
205
|
-
# If a file is explicitly added to a file list, but does not exist
|
206
|
-
# in the file system, then an glob pattern in the exclude list
|
207
|
-
# will not exclude the file.
|
208
|
-
#
|
209
|
-
# Examples:
|
210
|
-
# FileList['a.c', 'b.c'].exclude("a.c") => ['b.c']
|
211
|
-
# FileList['a.c', 'b.c'].exclude(/^a/) => ['b.c']
|
212
|
-
#
|
213
|
-
# If "a.c" is a file, then ...
|
214
|
-
# FileList['a.c', 'b.c'].exclude("a.*") => ['b.c']
|
215
|
-
#
|
216
|
-
# If "a.c" is not a file, then ...
|
217
|
-
# FileList['a.c', 'b.c'].exclude("a.*") => ['a.c', 'b.c']
|
218
|
-
#
|
219
|
-
def exclude(*patterns)
|
220
|
-
patterns.each do |pat| @exclude_patterns << pat end
|
221
|
-
if ! @pending
|
222
|
-
calculate_exclude_regexp
|
223
|
-
reject! { |fn| fn =~ @exclude_re }
|
224
|
-
end
|
225
|
-
self
|
226
|
-
end
|
227
|
-
|
228
|
-
# Clear all the exclude patterns so that we exclude nothing.
|
229
|
-
def clear_exclude
|
230
|
-
@exclude_patterns = []
|
231
|
-
calculate_exclude_regexp if ! @pending
|
232
|
-
end
|
233
|
-
|
234
|
-
# Define equality.
|
235
|
-
def ==(array)
|
236
|
-
to_ary == array
|
237
|
-
end
|
238
|
-
|
239
|
-
# Return the internal array object.
|
240
|
-
def to_a
|
241
|
-
resolve
|
242
|
-
@items
|
243
|
-
end
|
244
|
-
|
245
|
-
# Return the internal array object.
|
246
|
-
def to_ary
|
247
|
-
resolve
|
248
|
-
@items
|
249
|
-
end
|
250
|
-
|
251
|
-
# Redefine * to return either a string or a new file list.
|
252
|
-
def *(other)
|
253
|
-
result = @items * other
|
254
|
-
case result
|
255
|
-
when Array
|
256
|
-
FileList.new.import(result)
|
257
|
-
else
|
258
|
-
result
|
259
|
-
end
|
260
|
-
end
|
261
|
-
|
262
|
-
# Resolve all the pending adds now.
|
263
|
-
def resolve
|
264
|
-
if @pending
|
265
|
-
@pending = false
|
266
|
-
@pending_add.each do |fn| resolve_add(fn) end
|
267
|
-
@pending_add = []
|
268
|
-
resolve_exclude
|
269
|
-
end
|
270
|
-
self
|
271
|
-
end
|
272
|
-
|
273
|
-
def calculate_exclude_regexp
|
274
|
-
ignores = []
|
275
|
-
@exclude_patterns.each do |pat|
|
276
|
-
case pat
|
277
|
-
when Regexp
|
278
|
-
ignores << pat
|
279
|
-
when /[*.]/
|
280
|
-
Dir[pat].each do |p| ignores << p end
|
281
|
-
else
|
282
|
-
ignores << Regexp.quote(pat)
|
283
|
-
end
|
284
|
-
end
|
285
|
-
if ignores.empty?
|
286
|
-
@exclude_re = /^$/
|
287
|
-
else
|
288
|
-
re_str = ignores.collect { |p| "(" + p.to_s + ")" }.join("|")
|
289
|
-
@exclude_re = Regexp.new(re_str)
|
290
|
-
end
|
291
|
-
end
|
292
|
-
|
293
|
-
def resolve_add(fn)
|
294
|
-
case fn
|
295
|
-
when Array
|
296
|
-
fn.each { |f| self.resolve_add(f) }
|
297
|
-
when %r{[*?]}
|
298
|
-
add_matching(fn)
|
299
|
-
else
|
300
|
-
self << fn
|
301
|
-
end
|
302
|
-
end
|
303
|
-
|
304
|
-
def resolve_exclude
|
305
|
-
@exclude_patterns.each do |pat|
|
306
|
-
case pat
|
307
|
-
when Regexp
|
308
|
-
reject! { |fn| fn =~ pat }
|
309
|
-
when /[*.]/
|
310
|
-
reject_list = Dir[pat]
|
311
|
-
reject! { |fn| reject_list.include?(fn) }
|
312
|
-
else
|
313
|
-
reject! { |fn| fn == pat }
|
314
|
-
end
|
315
|
-
end
|
316
|
-
self
|
317
|
-
end
|
318
|
-
|
319
|
-
# Return a new FileList with the results of running +sub+ against
|
320
|
-
# each element of the oringal list.
|
321
|
-
#
|
322
|
-
# Example:
|
323
|
-
# FileList['a.c', 'b.c'].sub(/\.c$/, '.o') => ['a.o', 'b.o']
|
324
|
-
#
|
325
|
-
def sub(pat, rep)
|
326
|
-
inject(FileList.new) { |res, fn| res << fn.sub(pat,rep) }
|
327
|
-
end
|
328
|
-
|
329
|
-
# Return a new FileList with the results of running +gsub+ against
|
330
|
-
# each element of the original list.
|
331
|
-
#
|
332
|
-
# Example:
|
333
|
-
# FileList['lib/test/file', 'x/y'].gsub(/\//, "\\")
|
334
|
-
# => ['lib\\test\\file', 'x\\y']
|
335
|
-
#
|
336
|
-
def gsub(pat, rep)
|
337
|
-
inject(FileList.new) { |res, fn| res << fn.gsub(pat,rep) }
|
338
|
-
end
|
339
|
-
|
340
|
-
# Same as +sub+ except that the oringal file list is modified.
|
341
|
-
def sub!(pat, rep)
|
342
|
-
each_with_index { |fn, i| self[i] = fn.sub(pat,rep) }
|
343
|
-
self
|
344
|
-
end
|
345
|
-
|
346
|
-
# Same as +gsub+ except that the original file list is modified.
|
347
|
-
def gsub!(pat, rep)
|
348
|
-
each_with_index { |fn, i| self[i] = fn.gsub(pat,rep) }
|
349
|
-
self
|
350
|
-
end
|
351
|
-
|
352
|
-
# Return a new array with <tt>String#ext</tt> method applied to
|
353
|
-
# each member of the array.
|
354
|
-
#
|
355
|
-
# This method is a shortcut for:
|
356
|
-
#
|
357
|
-
# array.collect { |item| item.ext(newext) }
|
358
|
-
#
|
359
|
-
# +ext+ is a user added method for the Array class.
|
360
|
-
def ext(newext='')
|
361
|
-
collect { |fn| fn.ext(newext) }
|
362
|
-
end
|
363
|
-
|
364
|
-
# Grep each of the files in the filelist using the given pattern.
|
365
|
-
# If a block is given, call the block on each matching line,
|
366
|
-
# passing the file name, line number, and the matching line of
|
367
|
-
# text. If no block is given, a standard emac style
|
368
|
-
# file:linenumber:line message will be printed to standard out.
|
369
|
-
def egrep(pattern)
|
370
|
-
each do |fn|
|
371
|
-
open(fn) do |inf|
|
372
|
-
count = 0
|
373
|
-
|
374
|
-
inf.each do |line|
|
375
|
-
count += 1
|
376
|
-
if pattern.match(line)
|
377
|
-
if block_given?
|
378
|
-
yield fn, count, line
|
379
|
-
else
|
380
|
-
puts "#{fn}:#{count}:#{line}"
|
381
|
-
end
|
382
|
-
end
|
383
|
-
end
|
384
|
-
|
385
|
-
end
|
386
|
-
end
|
387
|
-
end
|
388
|
-
|
389
|
-
# FileList version of partition. Needed because the nested arrays
|
390
|
-
# should be FileLists in this version.
|
391
|
-
def partition(&block) # :nodoc:
|
392
|
-
resolve
|
393
|
-
result = @items.partition(&block)
|
394
|
-
[
|
395
|
-
FileList.new.import(result[0]),
|
396
|
-
FileList.new.import(result[1]),
|
397
|
-
]
|
398
|
-
end
|
399
|
-
|
400
|
-
# Convert a FileList to a string by joining all elements with a space.
|
401
|
-
def to_s
|
402
|
-
resolve if @pending
|
403
|
-
self.join(' ')
|
404
|
-
end
|
405
|
-
|
406
|
-
# Add matching glob patterns.
|
407
|
-
def add_matching(pattern)
|
408
|
-
Dir[pattern].each do |fn|
|
409
|
-
self << fn unless exclude?(fn)
|
410
|
-
end
|
411
|
-
end
|
412
|
-
private :add_matching
|
413
|
-
|
414
|
-
# Should the given file name be excluded?
|
415
|
-
def exclude?(fn)
|
416
|
-
calculate_exclude_regexp unless @exclude_re
|
417
|
-
fn =~ @exclude_re
|
418
|
-
end
|
419
|
-
|
420
|
-
DEFAULT_IGNORE_PATTERNS = [
|
421
|
-
/(^|[\/\\])CVS([\/\\]|$)/,
|
422
|
-
/(^|[\/\\])\.svn([\/\\]|$)/,
|
423
|
-
/(^|[\/\\])_darcs([\/\\]|$)/,
|
424
|
-
/\.bak$/,
|
425
|
-
/~$/,
|
426
|
-
/(^|[\/\\])core$/
|
427
|
-
]
|
428
|
-
@exclude_patterns = DEFAULT_IGNORE_PATTERNS.dup
|
429
|
-
|
430
|
-
def import(array)
|
431
|
-
@items = array
|
432
|
-
self
|
433
|
-
end
|
434
|
-
|
435
|
-
class << self
|
436
|
-
# Create a new file list including the files listed. Similar to:
|
437
|
-
#
|
438
|
-
# FileList.new(*args)
|
439
|
-
def [](*args)
|
440
|
-
new(*args)
|
441
|
-
end
|
442
|
-
|
443
|
-
# Set the ignore patterns back to the default value. The
|
444
|
-
# default patterns will ignore files
|
445
|
-
# * containing "CVS" in the file path
|
446
|
-
# * containing ".svn" in the file path
|
447
|
-
# * containing "_darcs" in the file path
|
448
|
-
# * ending with ".bak"
|
449
|
-
# * ending with "~"
|
450
|
-
# * named "core"
|
451
|
-
#
|
452
|
-
# Note that file names beginning with "." are automatically
|
453
|
-
# ignored by Ruby's glob patterns and are not specifically
|
454
|
-
# listed in the ignore patterns.
|
455
|
-
def select_default_ignore_patterns
|
456
|
-
@exclude_patterns = DEFAULT_IGNORE_PATTERNS.dup
|
457
|
-
end
|
458
|
-
|
459
|
-
# Clear the ignore patterns.
|
460
|
-
def clear_ignore_patterns
|
461
|
-
@exclude_patterns = [ /^$/ ]
|
462
|
-
end
|
463
|
-
end
|
464
|
-
|
465
|
-
end # FileList
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
# = TEST
|
470
|
-
#
|
471
|
-
# TODO This test needs a mock File class.
|
472
|
-
|
473
|
-
# FileList can't be tested without a FIXTURE setup.
|
474
|
-
# So don't bother running it directly from here, but
|
475
|
-
# transfer it over to the test directory.
|
476
|
-
# Need a better solution, is there a way to fake the
|
477
|
-
# filesystem?
|
478
|
-
|
479
|
-
=begin #no test
|
480
|
-
|
481
|
-
require 'test/unit'
|
482
|
-
|
483
|
-
class TC_FileList < Test::Unit::TestCase
|
484
|
-
|
485
|
-
def test_filelist
|
486
|
-
Dir.chdir File.join( $TESTDIR, 'filelist' ) do
|
487
|
-
fl = FileList.new
|
488
|
-
fl.include('*')
|
489
|
-
assert_equal( ['testfile2.txt', 'testfile.txt'], fl.to_a )
|
490
|
-
fl.exclude('*2.txt')
|
491
|
-
assert_equal( ['testfile.txt'], fl.to_a )
|
492
|
-
end
|
493
|
-
end
|
494
|
-
|
495
|
-
end
|
496
|
-
|
497
|
-
=end
|