facets 1.1.0 → 1.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.
- data/AUTHORS +5 -2
- data/ProjectInfo +21 -12
- data/README +73 -44
- data/Rakefile +11 -11
- data/data/facets/index.yml +1 -0
- data/lib/facet/annotation.rb +1 -0
- data/lib/facet/ansicode.rb +1 -0
- data/lib/facet/array.rb +1 -34
- data/lib/facet/array/at_rand.rb +1 -52
- data/lib/facet/array/body.rb +1 -2
- data/lib/facet/array/delete_unless.rb +1 -35
- data/lib/facet/array/delete_values.rb +1 -38
- data/lib/facet/array/delete_values_at.rb +1 -57
- data/lib/facet/array/each_with_key.rb +1 -9
- data/lib/facet/array/first.rb +1 -84
- data/lib/facet/array/foot.rb +1 -2
- data/lib/facet/array/head.rb +1 -80
- data/lib/facet/array/last.rb +1 -2
- data/lib/facet/array/last_index.rb +1 -35
- data/lib/facet/array/merge.rb +1 -40
- data/lib/facet/array/mid.rb +1 -50
- data/lib/facet/array/middle.rb +1 -45
- data/lib/facet/array/op_fetch.rb +1 -40
- data/lib/facet/array/op_mod.rb +1 -16
- data/lib/facet/array/op_store.rb +1 -47
- data/lib/facet/array/pick.rb +1 -68
- data/lib/facet/array/pos.rb +1 -39
- data/lib/facet/array/pull.rb +1 -37
- data/lib/facet/array/rand_index.rb +1 -30
- data/lib/facet/array/rand_subset.rb +1 -56
- data/lib/facet/array/range.rb +1 -47
- data/lib/facet/array/rotate.rb +1 -67
- data/lib/facet/array/select.rb +1 -37
- data/lib/facet/array/shuffle.rb +1 -66
- data/lib/facet/array/slap.rb +1 -37
- data/lib/facet/array/store.rb +1 -7
- data/lib/facet/array/tail.rb +1 -2
- data/lib/facet/array/thru.rb +1 -38
- data/lib/facet/array/to_b.rb +1 -31
- data/lib/facet/array/to_h.rb +1 -57
- data/lib/facet/array/to_hash.rb +1 -46
- data/lib/facet/array/unzip.rb +1 -20
- data/lib/facet/association.rb +1 -0
- data/lib/facet/basicobject.rb +1 -0
- data/lib/facet/bbcode.rb +1 -0
- data/lib/facet/binaryreader.rb +1 -0
- data/lib/facet/binding.rb +1 -14
- data/lib/facet/binding/__DIR__.rb +1 -2
- data/lib/facet/binding/__FILE__.rb +1 -2
- data/lib/facet/binding/__LINE__.rb +1 -58
- data/lib/facet/binding/call_stack.rb +1 -42
- data/lib/facet/binding/called.rb +1 -41
- data/lib/facet/binding/caller.rb +1 -42
- data/lib/facet/binding/defined.rb +1 -41
- data/lib/facet/binding/eval.rb +1 -42
- data/lib/facet/binding/local_variables.rb +1 -45
- data/lib/facet/binding/method_name.rb +1 -48
- data/lib/facet/binding/op_fetch.rb +1 -45
- data/lib/facet/binding/op_store.rb +1 -46
- data/lib/facet/binding/self.rb +1 -41
- data/lib/facet/binding/self/of_caller.rb +1 -122
- data/lib/facet/bitmask.rb +1 -0
- data/lib/facet/blankslate.rb +1 -0
- data/lib/facet/bytes.rb +1 -0
- data/lib/facet/class.rb +1 -7
- data/lib/facet/class/by_name.rb +1 -1
- data/lib/facet/class/descendents.rb +1 -44
- data/lib/facet/class/method_name.rb +1 -33
- data/lib/facet/class/remove_descendents.rb +1 -46
- data/lib/facet/class/remove_subclasses.rb +1 -2
- data/lib/facet/class/subclasses.rb +1 -2
- data/lib/facet/class/unix_path.rb +1 -34
- data/lib/facet/classinherit.rb +1 -0
- data/lib/facet/classmethods.rb +1 -0
- data/lib/facet/cloneable.rb +1 -0
- data/lib/facet/comparable.rb +1 -5
- data/lib/facet/comparable/at_least.rb +1 -53
- data/lib/facet/comparable/at_most.rb +1 -2
- data/lib/facet/comparable/cap.rb +1 -2
- data/lib/facet/comparable/clip.rb +1 -72
- data/lib/facet/comparable/cmp.rb +1 -38
- data/lib/facet/consoleapp.rb +1 -0
- data/lib/facet/continuation.rb +1 -1
- data/lib/facet/continuation/self/create.rb +1 -71
- data/lib/facet/coroutine.rb +1 -0
- data/lib/facet/crypt.rb +1 -0
- data/lib/facet/date.rb +1 -0
- data/lib/facet/date/days_in_month.rb +1 -42
- data/lib/facet/date/days_of_month.rb +1 -34
- data/lib/facet/date/stamp.rb +1 -52
- data/lib/facet/date/to_date.rb +1 -36
- data/lib/facet/date/to_s.rb +1 -33
- data/lib/facet/date/to_time.rb +1 -36
- data/lib/facet/dictionary.rb +1 -0
- data/lib/facet/dir.rb +1 -4
- data/lib/facet/dir/self/ancestor.rb +1 -33
- data/lib/facet/dir/self/ascend.rb +1 -56
- data/lib/facet/dir/self/ls_r.rb +1 -76
- data/lib/facet/dir/self/recurse.rb +1 -2
- data/lib/facet/downloader.rb +1 -0
- data/lib/facet/enumerable.rb +1 -39
- data/lib/facet/enumerable/collect_with_counter.rb +1 -2
- data/lib/facet/enumerable/collect_with_index.rb +1 -51
- data/lib/facet/enumerable/commonality.rb +1 -63
- data/lib/facet/enumerable/compact_collect.rb +1 -50
- data/lib/facet/enumerable/compact_map.rb +1 -2
- data/lib/facet/enumerable/cross.rb +1 -44
- data/lib/facet/enumerable/each_by.rb +1 -2
- data/lib/facet/enumerable/each_combination.rb +1 -59
- data/lib/facet/enumerable/each_pair.rb +1 -50
- data/lib/facet/enumerable/each_permutation.rb +1 -2
- data/lib/facet/enumerable/each_slice.rb +1 -131
- data/lib/facet/enumerable/each_unique_pair.rb +1 -66
- data/lib/facet/enumerable/each_with_counter.rb +1 -8
- data/lib/facet/enumerable/elementwise.rb +1 -2
- data/lib/facet/enumerable/entropy.rb +1 -52
- data/lib/facet/enumerable/every.rb +1 -65
- data/lib/facet/enumerable/ew.rb +1 -64
- data/lib/facet/enumerable/filter_collect.rb +1 -58
- data/lib/facet/enumerable/filter_map.rb +1 -2
- data/lib/facet/enumerable/find_collisions.rb +1 -41
- data/lib/facet/enumerable/frequency.rb +1 -39
- data/lib/facet/enumerable/graph.rb +1 -59
- data/lib/facet/enumerable/ideal_entropy.rb +1 -49
- data/lib/facet/enumerable/map_with_counter.rb +1 -2
- data/lib/facet/enumerable/map_with_index.rb +1 -2
- data/lib/facet/enumerable/none.rb +1 -56
- data/lib/facet/enumerable/nonuniq.rb +1 -39
- data/lib/facet/enumerable/occur.rb +1 -62
- data/lib/facet/enumerable/one.rb +1 -65
- data/lib/facet/enumerable/op_pow.rb +1 -38
- data/lib/facet/enumerable/partition_by.rb +1 -55
- data/lib/facet/enumerable/permute.rb +1 -135
- data/lib/facet/enumerable/probability.rb +1 -59
- data/lib/facet/enumerable/project.rb +1 -11
- data/lib/facet/enumerable/self/combinations.rb +1 -68
- data/lib/facet/enumerable/self/cross.rb +1 -79
- data/lib/facet/enumerable/to_h.rb +1 -50
- data/lib/facet/enumerable/uniq_by.rb +1 -39
- data/lib/facet/enumerable/where.rb +1 -12
- data/lib/facet/enumerablepass.rb +1 -0
- data/lib/facet/expirable.rb +1 -0
- data/lib/facet/file.rb +1 -5
- data/lib/facet/file/self/create.rb +1 -52
- data/lib/facet/file/self/open_as_string.rb +1 -81
- data/lib/facet/file/self/read_list.rb +1 -47
- data/lib/facet/file/self/sanitize.rb +1 -50
- data/lib/facet/file/self/split_all.rb +1 -36
- data/lib/facet/filelist.rb +1 -0
- data/lib/facet/fileutils.rb +1 -0
- data/lib/facet/fileutils/head.rb +1 -2
- data/lib/facet/fileutils/safe_ln.rb +1 -38
- data/lib/facet/fileutils/slice.rb +1 -152
- data/lib/facet/fileutils/split_all.rb +1 -29
- data/lib/facet/fileutils/tail.rb +1 -2
- data/lib/facet/fileutils/wc.rb +1 -128
- data/lib/facet/fileutils/whereis.rb +1 -76
- data/lib/facet/fileutils/which.rb +1 -117
- data/lib/facet/float.rb +1 -3
- data/lib/facet/float/approx.rb +1 -42
- data/lib/facet/float/round_at.rb +1 -72
- data/lib/facet/float/round_to.rb +1 -73
- data/lib/facet/floatstring.rb +1 -0
- data/lib/facet/functor.rb +1 -41
- data/lib/facet/gem.rb +1 -3
- data/lib/facet/gem/self/active.rb +1 -9
- data/lib/facet/gem/self/gempath.rb +1 -10
- data/lib/facet/gem/self/gemspec.rb +1 -10
- data/lib/facet/hash.rb +1 -40
- data/lib/facet/hash/alias.rb +1 -54
- data/lib/facet/hash/assert_has_keys.rb +1 -38
- data/lib/facet/hash/assert_has_only_keys.rb +1 -38
- data/lib/facet/hash/at.rb +1 -26
- data/lib/facet/hash/collate.rb +1 -53
- data/lib/facet/hash/delete_unless.rb +1 -15
- data/lib/facet/hash/each.rb +1 -61
- data/lib/facet/hash/each_with_index.rb +1 -35
- data/lib/facet/hash/each_with_key.rb +1 -32
- data/lib/facet/hash/graph.rb +1 -31
- data/lib/facet/hash/has_keys.rb +1 -37
- data/lib/facet/hash/has_only_keys.rb +1 -37
- data/lib/facet/hash/inverse.rb +1 -51
- data/lib/facet/hash/join.rb +1 -19
- data/lib/facet/hash/keys_to_iv.rb +1 -60
- data/lib/facet/hash/keys_to_s.rb +1 -80
- data/lib/facet/hash/keys_to_sym.rb +1 -91
- data/lib/facet/hash/op_fetch.rb +1 -146
- data/lib/facet/hash/op_lshift.rb +1 -28
- data/lib/facet/hash/op_store.rb +1 -2
- data/lib/facet/hash/rand_key.rb +1 -47
- data/lib/facet/hash/rand_pair.rb +1 -50
- data/lib/facet/hash/rand_value.rb +1 -60
- data/lib/facet/hash/replace_each.rb +1 -33
- data/lib/facet/hash/self/zipnew.rb +1 -37
- data/lib/facet/hash/shuffle.rb +1 -53
- data/lib/facet/hash/slice.rb +1 -33
- data/lib/facet/hash/stringify_keys.rb +1 -2
- data/lib/facet/hash/swap.rb +1 -36
- data/lib/facet/hash/swapkey.rb +1 -44
- data/lib/facet/hash/symoblize_keys.rb +1 -2
- data/lib/facet/hash/to_h.rb +1 -35
- data/lib/facet/hash/to_ostruct.rb +1 -40
- data/lib/facet/hash/to_ostruct_recurse.rb +1 -45
- data/lib/facet/hash/traverse.rb +1 -63
- data/lib/facet/hash/update_each.rb +1 -43
- data/lib/facet/hash/update_keys.rb +1 -31
- data/lib/facet/hash/update_values.rb +1 -32
- data/lib/facet/hash/variablize_keys.rb +1 -2
- data/lib/facet/hash/weave.rb +1 -88
- data/lib/facet/heap.rb +1 -0
- data/lib/facet/inflect.rb +1 -70
- data/lib/facet/inheritor.rb +1 -0
- data/lib/facet/integer.rb +1 -9
- data/lib/facet/integer/even.rb +1 -2
- data/lib/facet/integer/fac.rb +1 -2
- data/lib/facet/integer/fact.rb +1 -2
- data/lib/facet/integer/factorial.rb +1 -61
- data/lib/facet/integer/multiple.rb +1 -69
- data/lib/facet/integer/odd.rb +1 -2
- data/lib/facet/integer/ordinal.rb +1 -41
- data/lib/facet/integer/times_collect.rb +1 -39
- data/lib/facet/integer/times_map.rb +1 -2
- data/lib/facet/interval.rb +1 -0
- data/lib/facet/ioredirect.rb +1 -0
- data/lib/facet/kernel.rb +1 -68
- data/lib/facet/kernel/__DIR__.rb +1 -11
- data/lib/facet/kernel/__class__.rb +1 -31
- data/lib/facet/kernel/__meta__.rb +1 -28
- data/lib/facet/kernel/adhoc.rb +1 -11
- data/lib/facet/kernel/as.rb +1 -91
- data/lib/facet/kernel/assign_from.rb +1 -82
- data/lib/facet/kernel/assign_with.rb +1 -75
- data/lib/facet/kernel/autoreload.rb +1 -124
- data/lib/facet/kernel/autoreload_files.rb +1 -2
- data/lib/facet/kernel/autoreload_glob.rb +1 -3
- data/lib/facet/kernel/bool.rb +1 -77
- data/lib/facet/kernel/bug.rb +1 -39
- data/lib/facet/kernel/call_stack.rb +1 -59
- data/lib/facet/kernel/called.rb +1 -40
- data/lib/facet/kernel/complete.rb +1 -6
- data/lib/facet/kernel/constant.rb +1 -52
- data/lib/facet/kernel/copy.rb +1 -48
- data/lib/facet/kernel/deep_copy.rb +1 -49
- data/lib/facet/kernel/demo.rb +1 -46
- data/lib/facet/kernel/eigenclass.rb +1 -17
- data/lib/facet/kernel/false.rb +1 -2
- data/lib/facet/kernel/fn.rb +1 -33
- data/lib/facet/kernel/generate_method_name.rb +1 -39
- data/lib/facet/kernel/get_by_id.rb +1 -33
- data/lib/facet/kernel/here.rb +1 -34
- data/lib/facet/kernel/in.rb +1 -35
- data/lib/facet/kernel/instance_assign.rb +1 -25
- data/lib/facet/kernel/instvar.rb +1 -13
- data/lib/facet/kernel/is.rb +1 -5
- data/lib/facet/kernel/maybe.rb +1 -41
- data/lib/facet/kernel/me.rb +1 -17
- data/lib/facet/kernel/meta.rb +1 -2
- data/lib/facet/kernel/metaclass.rb +1 -42
- data/lib/facet/kernel/method.rb +1 -76
- data/lib/facet/kernel/method_name.rb +1 -49
- data/lib/facet/kernel/methods.rb +1 -79
- data/lib/facet/kernel/nack.rb +1 -12
- data/lib/facet/kernel/new.rb +1 -40
- data/lib/facet/kernel/object_class.rb +1 -31
- data/lib/facet/kernel/object_hexid.rb +1 -35
- data/lib/facet/kernel/op_esc.rb +1 -37
- data/lib/facet/kernel/own.rb +1 -17
- data/lib/facet/kernel/p.rb +1 -12
- data/lib/facet/kernel/require_all.rb +1 -44
- data/lib/facet/kernel/require_esc.rb +1 -42
- data/lib/facet/kernel/require_facet.rb +1 -41
- data/lib/facet/kernel/require_local.rb +1 -25
- data/lib/facet/kernel/resc.rb +1 -32
- data/lib/facet/kernel/returning.rb +1 -49
- data/lib/facet/kernel/send_as.rb +1 -34
- data/lib/facet/kernel/set_from.rb +1 -69
- data/lib/facet/kernel/set_with.rb +1 -74
- data/lib/facet/kernel/silence_warnings.rb +1 -2
- data/lib/facet/kernel/silently.rb +1 -41
- data/lib/facet/kernel/singleton.rb +1 -47
- data/lib/facet/kernel/superior.rb +1 -53
- data/lib/facet/kernel/supermethod.rb +1 -44
- data/lib/facet/kernel/this.rb +1 -33
- data/lib/facet/kernel/to_b.rb +1 -41
- data/lib/facet/kernel/to_bool.rb +1 -47
- data/lib/facet/kernel/true.rb +1 -2
- data/lib/facet/kernel/unuri.rb +1 -2
- data/lib/facet/kernel/uri.rb +1 -38
- data/lib/facet/kernel/val.rb +1 -52
- data/lib/facet/kernel/warn_with_line.rb +1 -30
- data/lib/facet/kernel/with_accessor.rb +1 -94
- data/lib/facet/kernel/with_reader.rb +1 -2
- data/lib/facet/kernel/with_writer.rb +1 -2
- data/lib/facet/lisp.rb +1 -0
- data/lib/facet/lisp_format.rb +1 -0
- data/lib/facet/logger.rb +1 -0
- data/lib/facet/logger/format.rb +1 -28
- data/lib/facet/logger/format_message.rb +1 -1
- data/lib/facet/lrucache.rb +1 -0
- data/lib/facet/matchdata.rb +1 -3
- data/lib/facet/matchdata/match.rb +1 -37
- data/lib/facet/matchdata/matchset.rb +1 -2
- data/lib/facet/matchdata/matchtree.rb +1 -62
- data/lib/facet/mathconstants.rb +1 -0
- data/lib/facet/methodprobe.rb +1 -0
- data/lib/facet/mock.rb +1 -0
- data/lib/facet/module.rb +1 -40
- data/lib/facet/module/abstract.rb +1 -50
- data/lib/facet/module/alias_module_function.rb +1 -57
- data/lib/facet/module/ancestor.rb +1 -38
- data/lib/facet/module/attr.rb +1 -23
- data/lib/facet/module/attr_setter.rb +1 -48
- data/lib/facet/module/attr_tester.rb +1 -56
- data/lib/facet/module/basename.rb +1 -39
- data/lib/facet/module/by_name.rb +1 -68
- data/lib/facet/module/cattr_accessor.rb +1 -141
- data/lib/facet/module/cattr_reader.rb +1 -2
- data/lib/facet/module/cattr_writer.rb +1 -2
- data/lib/facet/module/clone_removing.rb +1 -2
- data/lib/facet/module/clone_renaming.rb +1 -2
- data/lib/facet/module/clone_using.rb +1 -87
- data/lib/facet/module/dirname.rb +1 -42
- data/lib/facet/module/equate_on.rb +1 -70
- data/lib/facet/module/generate_instance_method_name.rb +1 -47
- data/lib/facet/module/include_as.rb +1 -102
- data/lib/facet/module/initializer.rb +1 -65
- data/lib/facet/module/instance_methods.rb +1 -186
- data/lib/facet/module/integrate.rb +1 -51
- data/lib/facet/module/is.rb +1 -34
- data/lib/facet/module/memoize.rb +1 -95
- data/lib/facet/module/modspace.rb +1 -43
- data/lib/facet/module/namespace.rb +1 -61
- data/lib/facet/module/nesting.rb +1 -45
- data/lib/facet/module/redef.rb +1 -31
- data/lib/facet/module/redefine_method.rb +1 -57
- data/lib/facet/module/redirect.rb +1 -30
- data/lib/facet/module/redirect_method.rb +1 -64
- data/lib/facet/module/remove.rb +1 -29
- data/lib/facet/module/rename.rb +1 -31
- data/lib/facet/module/rename_method.rb +1 -38
- data/lib/facet/module/revisal.rb +1 -49
- data/lib/facet/module/shadow_all.rb +1 -17
- data/lib/facet/module/shadow_method.rb +1 -42
- data/lib/facet/module/sort_on.rb +1 -73
- data/lib/facet/module/undef.rb +1 -29
- data/lib/facet/module/wrap.rb +1 -30
- data/lib/facet/module/wrap_method.rb +1 -48
- data/lib/facet/multipliers.rb +1 -0
- data/lib/facet/multiton.rb +1 -0
- data/lib/facet/nackclass.rb +1 -0
- data/lib/facet/nil_as_emptiness.rb +1 -34
- data/lib/facet/nilclass.rb +1 -7
- data/lib/facet/nilclass/empty.rb +1 -32
- data/lib/facet/nilclass/include.rb +1 -32
- data/lib/facet/nilclass/length.rb +1 -2
- data/lib/facet/nilclass/op_fetch.rb +1 -37
- data/lib/facet/nilclass/size.rb +1 -44
- data/lib/facet/nilclass/to_f.rb +1 -32
- data/lib/facet/nilclass/to_h.rb +1 -33
- data/lib/facet/nilcomparable.rb +1 -0
- data/lib/facet/nullclass.rb +1 -0
- data/lib/facet/numeric.rb +1 -5
- data/lib/facet/numeric/ceil_multiple.rb +1 -40
- data/lib/facet/numeric/pred.rb +1 -2
- data/lib/facet/numeric/succ.rb +1 -69
- data/lib/facet/numeric/to_b.rb +1 -38
- data/lib/facet/one.rb +1 -0
- data/lib/facet/openobject.rb +1 -0
- data/lib/facet/orderedhash.rb +1 -0
- data/lib/facet/ormsupport.rb +1 -0
- data/lib/facet/ostruct.rb +1 -0
- data/lib/facet/ostruct/__merge__.rb +1 -52
- data/lib/facet/ostruct/__table__.rb +1 -17
- data/lib/facet/ostruct/__update__.rb +1 -45
- data/lib/facet/ostruct/op_fetch.rb +1 -40
- data/lib/facet/ostruct/op_store.rb +1 -42
- data/lib/facet/ostruct/to_h.rb +1 -8
- data/lib/facet/overload.rb +1 -0
- data/lib/facet/paramix.rb +1 -0
- data/lib/facet/pathlist.rb +1 -0
- data/lib/facet/pathname.rb +1 -2
- data/lib/facet/pathname/ascend.rb +1 -22
- data/lib/facet/pathname/descend.rb +1 -20
- data/lib/facet/pool.rb +1 -0
- data/lib/facet/preinitialize.rb +1 -0
- data/lib/facet/proc.rb +1 -3
- data/lib/facet/proc/compose.rb +1 -62
- data/lib/facet/proc/op_mul.rb +1 -2
- data/lib/facet/proc/to_method.rb +1 -74
- data/lib/facet/progressbar.rb +1 -0
- data/lib/facet/promoteself.rb +1 -0
- data/lib/facet/quaternion.rb +1 -0
- data/lib/facet/random.rb +1 -21
- data/lib/facet/range.rb +1 -4
- data/lib/facet/range/to_r.rb +1 -32
- data/lib/facet/range/to_range.rb +1 -36
- data/lib/facet/range/umbrella.rb +1 -67
- data/lib/facet/range/within.rb +1 -44
- data/lib/facet/reference.rb +1 -0
- data/lib/facet/regexp.rb +1 -3
- data/lib/facet/regexp/arity.rb +1 -41
- data/lib/facet/regexp/to_re.rb +1 -38
- data/lib/facet/regexp/to_regexp.rb +1 -36
- data/lib/facet/rtals.rb +1 -0
- data/lib/facet/semaphore.rb +1 -0
- data/lib/facet/snapshot.rb +1 -0
- data/lib/facet/stateparser.rb +1 -0
- data/lib/facet/statichash.rb +1 -0
- data/lib/facet/string.rb +1 -91
- data/lib/facet/string/align_center.rb +1 -87
- data/lib/facet/string/align_left.rb +1 -2
- data/lib/facet/string/align_right.rb +1 -2
- data/lib/facet/string/at.rb +1 -8
- data/lib/facet/string/at_rand.rb +1 -65
- data/lib/facet/string/basename.rb +1 -48
- data/lib/facet/string/blank.rb +1 -36
- data/lib/facet/string/bracket.rb +1 -70
- data/lib/facet/string/brief.rb +1 -33
- data/lib/facet/string/bytes.rb +1 -19
- data/lib/facet/string/camelcase.rb +1 -58
- data/lib/facet/string/camelize.rb +1 -35
- data/lib/facet/string/capitalized.rb +1 -38
- data/lib/facet/string/chars.rb +1 -34
- data/lib/facet/string/cmp.rb +1 -43
- data/lib/facet/string/demodulize.rb +1 -40
- data/lib/facet/string/dequote.rb +1 -29
- data/lib/facet/string/downcase.rb +1 -37
- data/lib/facet/string/dresner.rb +1 -49
- data/lib/facet/string/each_char.rb +1 -35
- data/lib/facet/string/each_word.rb +1 -50
- data/lib/facet/string/ends_with.rb +1 -2
- data/lib/facet/string/first.rb +1 -94
- data/lib/facet/string/first_char.rb +1 -20
- data/lib/facet/string/fold.rb +1 -67
- data/lib/facet/string/format.rb +1 -17
- data/lib/facet/string/frequency.rb +1 -39
- data/lib/facet/string/humanize.rb +1 -31
- data/lib/facet/string/indent.rb +1 -68
- data/lib/facet/string/index_all.rb +1 -40
- data/lib/facet/string/last.rb +1 -94
- data/lib/facet/string/last_char.rb +1 -22
- data/lib/facet/string/line_wrap.rb +1 -77
- data/lib/facet/string/lines.rb +1 -33
- data/lib/facet/string/lowercase.rb +1 -32
- data/lib/facet/string/margin.rb +1 -138
- data/lib/facet/string/methodize.rb +1 -44
- data/lib/facet/string/modulize.rb +1 -44
- data/lib/facet/string/mscan.rb +1 -42
- data/lib/facet/string/natcmp.rb +1 -108
- data/lib/facet/string/nchar.rb +1 -45
- data/lib/facet/string/ordinal.rb +1 -16
- data/lib/facet/string/pathize.rb +1 -46
- data/lib/facet/string/plural.rb +1 -2
- data/lib/facet/string/pop.rb +1 -54
- data/lib/facet/string/probability.rb +1 -34
- data/lib/facet/string/pull.rb +1 -17
- data/lib/facet/string/push.rb +1 -44
- data/lib/facet/string/quote.rb +1 -68
- data/lib/facet/string/rand_byte.rb +1 -55
- data/lib/facet/string/rand_index.rb +1 -29
- data/lib/facet/string/range.rb +1 -37
- data/lib/facet/string/range_all.rb +1 -48
- data/lib/facet/string/range_of_line.rb +1 -42
- data/lib/facet/string/regesc.rb +1 -32
- data/lib/facet/string/self/format.rb +1 -17
- data/lib/facet/string/self/interpolate.rb +1 -31
- data/lib/facet/string/self/patterns.rb +1 -51
- data/lib/facet/string/self/rand_letter.rb +1 -34
- data/lib/facet/string/self/random.rb +1 -37
- data/lib/facet/string/shatter.rb +1 -45
- data/lib/facet/string/shell_escape.rb +1 -0
- data/lib/facet/string/shift.rb +1 -42
- data/lib/facet/string/shuffle.rb +1 -42
- data/lib/facet/string/similarity.rb +1 -108
- data/lib/facet/string/singular.rb +1 -117
- data/lib/facet/string/slap.rb +1 -44
- data/lib/facet/string/soundex.rb +1 -102
- data/lib/facet/string/starts_with.rb +1 -24
- data/lib/facet/string/succ.rb +1 -38
- data/lib/facet/string/tab.rb +1 -2
- data/lib/facet/string/tabto.rb +1 -2
- data/lib/facet/string/to_a.rb +1 -35
- data/lib/facet/string/to_arr.rb +1 -55
- data/lib/facet/string/to_b.rb +1 -64
- data/lib/facet/string/to_const.rb +1 -39
- data/lib/facet/string/to_date.rb +1 -35
- data/lib/facet/string/to_proc.rb +1 -54
- data/lib/facet/string/to_re.rb +1 -46
- data/lib/facet/string/to_rx.rb +1 -2
- data/lib/facet/string/to_time.rb +1 -34
- data/lib/facet/string/unbracket.rb +1 -46
- data/lib/facet/string/underscore.rb +1 -18
- data/lib/facet/string/unix_crypt.rb +1 -41
- data/lib/facet/string/unpack.rb +1 -45
- data/lib/facet/string/unshift.rb +1 -42
- data/lib/facet/string/upcase.rb +1 -45
- data/lib/facet/string/uppercase.rb +1 -2
- data/lib/facet/string/whitespace.rb +1 -27
- data/lib/facet/string/word_filter.rb +1 -61
- data/lib/facet/string/word_wrap.rb +1 -90
- data/lib/facet/string/words.rb +1 -45
- data/lib/facet/string_as_array.rb +1 -16
- data/lib/facet/symbol.rb +1 -13
- data/lib/facet/symbol/camelcase.rb +1 -42
- data/lib/facet/symbol/camelize.rb +1 -33
- data/lib/facet/symbol/capitalize.rb +1 -31
- data/lib/facet/symbol/capitalized.rb +1 -33
- data/lib/facet/symbol/downcase.rb +1 -36
- data/lib/facet/symbol/not.rb +1 -40
- data/lib/facet/symbol/pad.rb +1 -43
- data/lib/facet/symbol/succ.rb +1 -42
- data/lib/facet/symbol/to_const.rb +1 -40
- data/lib/facet/symbol/to_proc.rb +1 -45
- data/lib/facet/symbol/to_str.rb +1 -39
- data/lib/facet/symbol/underscore.rb +1 -32
- data/lib/facet/symbol/upcase.rb +1 -37
- data/lib/facet/syncarray.rb +1 -0
- data/lib/facet/synchash.rb +1 -0
- data/lib/facet/system.rb +1 -0
- data/lib/facet/tagiterator.rb +1 -0
- data/lib/facet/time.rb +1 -8
- data/lib/facet/time/change.rb +1 -51
- data/lib/facet/time/elapse.rb +1 -41
- data/lib/facet/time/self/days_extrema.rb +1 -22
- data/lib/facet/time/self/stamp.rb +1 -2
- data/lib/facet/time/stamp.rb +1 -51
- data/lib/facet/time/to_date.rb +1 -37
- data/lib/facet/time/to_s.rb +1 -33
- data/lib/facet/time/to_time.rb +1 -36
- data/lib/facet/timer.rb +1 -0
- data/lib/facet/times.rb +1 -0
- data/lib/facet/tracepoint.rb +1 -0
- data/lib/facet/tuple.rb +1 -0
- data/lib/facet/typecast.rb +1 -0
- data/lib/facet/unboundmethod.rb +1 -1
- data/lib/facet/unboundmethod/name.rb +1 -8
- data/lib/facet/uninheritable.rb +1 -0
- data/lib/facet/units.rb +1 -0
- data/lib/facet/yamlstruct.rb +1 -0
- data/lib/facets.rb +77 -45
- data/lib/facets/core/array.rb +34 -0
- data/lib/facets/core/array/at_rand.rb +52 -0
- data/lib/facets/core/array/body.rb +2 -0
- data/lib/facets/core/array/delete_unless.rb +35 -0
- data/lib/facets/core/array/delete_values.rb +38 -0
- data/lib/facets/core/array/delete_values_at.rb +57 -0
- data/lib/facets/core/array/each_with_key.rb +9 -0
- data/lib/facets/core/array/first.rb +84 -0
- data/lib/facets/core/array/foot.rb +2 -0
- data/lib/facets/core/array/head.rb +80 -0
- data/lib/facets/core/array/last.rb +2 -0
- data/lib/facets/core/array/last_index.rb +35 -0
- data/lib/facets/core/array/merge.rb +40 -0
- data/lib/facets/core/array/mid.rb +50 -0
- data/lib/facets/core/array/middle.rb +45 -0
- data/lib/facets/core/array/op_fetch.rb +40 -0
- data/lib/facets/core/array/op_mod.rb +16 -0
- data/lib/facets/core/array/op_store.rb +47 -0
- data/lib/facets/core/array/pick.rb +68 -0
- data/lib/facets/core/array/pos.rb +39 -0
- data/lib/facets/core/array/pull.rb +37 -0
- data/lib/facets/core/array/rand_index.rb +30 -0
- data/lib/facets/core/array/rand_subset.rb +56 -0
- data/lib/facets/core/array/range.rb +47 -0
- data/lib/facets/core/array/rotate.rb +67 -0
- data/lib/facets/core/array/select.rb +37 -0
- data/lib/facets/core/array/shuffle.rb +66 -0
- data/lib/facets/core/array/slap.rb +37 -0
- data/lib/facets/core/array/store.rb +7 -0
- data/lib/facets/core/array/tail.rb +2 -0
- data/lib/facets/core/array/thru.rb +38 -0
- data/lib/facets/core/array/to_b.rb +31 -0
- data/lib/facets/core/array/to_h.rb +57 -0
- data/lib/facets/core/array/to_hash.rb +46 -0
- data/lib/facets/core/array/unzip.rb +20 -0
- data/lib/facets/core/binding.rb +14 -0
- data/lib/facets/core/binding/__DIR__.rb +2 -0
- data/lib/facets/core/binding/__FILE__.rb +2 -0
- data/lib/facets/core/binding/__LINE__.rb +58 -0
- data/lib/facets/core/binding/call_stack.rb +42 -0
- data/lib/facets/core/binding/called.rb +42 -0
- data/lib/facets/core/binding/caller.rb +42 -0
- data/lib/facets/core/binding/defined.rb +41 -0
- data/lib/facets/core/binding/eval.rb +42 -0
- data/lib/facets/core/binding/local_variables.rb +45 -0
- data/lib/facets/core/binding/method_name.rb +48 -0
- data/lib/facets/core/binding/op_fetch.rb +45 -0
- data/lib/facets/core/binding/op_store.rb +46 -0
- data/lib/facets/core/binding/self.rb +41 -0
- data/lib/facets/core/binding/self/of_caller.rb +122 -0
- data/lib/facets/core/class.rb +7 -0
- data/lib/facets/core/class/by_name.rb +1 -0
- data/lib/facets/core/class/descendents.rb +44 -0
- data/lib/facets/core/class/method_name.rb +33 -0
- data/lib/facets/core/class/remove_descendents.rb +46 -0
- data/lib/facets/core/class/remove_subclasses.rb +2 -0
- data/lib/facets/core/class/subclasses.rb +2 -0
- data/lib/facets/core/class/unix_path.rb +34 -0
- data/lib/facets/core/comparable.rb +5 -0
- data/lib/facets/core/comparable/at_least.rb +53 -0
- data/lib/facets/core/comparable/at_most.rb +2 -0
- data/lib/facets/core/comparable/cap.rb +2 -0
- data/lib/facets/core/comparable/clip.rb +72 -0
- data/lib/facets/core/comparable/cmp.rb +38 -0
- data/lib/facets/core/continuation.rb +1 -0
- data/lib/facets/core/continuation/self/create.rb +71 -0
- data/lib/facets/core/date.rb +0 -0
- data/lib/facets/core/date/days_in_month.rb +42 -0
- data/lib/facets/core/date/days_of_month.rb +34 -0
- data/lib/facets/core/date/stamp.rb +52 -0
- data/lib/facets/core/date/to_date.rb +36 -0
- data/lib/facets/core/date/to_s.rb +33 -0
- data/lib/facets/core/date/to_time.rb +36 -0
- data/lib/facets/core/dir.rb +4 -0
- data/lib/facets/core/dir/self/ancestor.rb +33 -0
- data/lib/facets/core/dir/self/ascend.rb +56 -0
- data/lib/facets/core/dir/self/ls_r.rb +76 -0
- data/lib/facets/core/dir/self/recurse.rb +2 -0
- data/lib/facets/core/enumerable.rb +39 -0
- data/lib/facets/core/enumerable/collect_with_counter.rb +2 -0
- data/lib/facets/core/enumerable/collect_with_index.rb +51 -0
- data/lib/facets/core/enumerable/commonality.rb +63 -0
- data/lib/facets/core/enumerable/compact_collect.rb +50 -0
- data/lib/facets/core/enumerable/compact_map.rb +2 -0
- data/lib/facets/core/enumerable/cross.rb +44 -0
- data/lib/facets/core/enumerable/each_by.rb +2 -0
- data/lib/facets/core/enumerable/each_combination.rb +59 -0
- data/lib/facets/core/enumerable/each_pair.rb +50 -0
- data/lib/facets/core/enumerable/each_permutation.rb +2 -0
- data/lib/facets/core/enumerable/each_slice.rb +131 -0
- data/lib/facets/core/enumerable/each_unique_pair.rb +66 -0
- data/lib/facets/core/enumerable/each_with_counter.rb +8 -0
- data/lib/facets/core/enumerable/elementwise.rb +2 -0
- data/lib/facets/core/enumerable/entropy.rb +52 -0
- data/lib/facets/core/enumerable/every.rb +65 -0
- data/lib/facets/core/enumerable/ew.rb +64 -0
- data/lib/facets/core/enumerable/filter_collect.rb +58 -0
- data/lib/facets/core/enumerable/filter_map.rb +2 -0
- data/lib/facets/core/enumerable/find_collisions.rb +41 -0
- data/lib/facets/core/enumerable/frequency.rb +39 -0
- data/lib/facets/core/enumerable/graph.rb +59 -0
- data/lib/facets/core/enumerable/ideal_entropy.rb +49 -0
- data/lib/facets/core/enumerable/map_with_counter.rb +2 -0
- data/lib/facets/core/enumerable/map_with_index.rb +2 -0
- data/lib/facets/core/enumerable/none.rb +56 -0
- data/lib/facets/core/enumerable/nonuniq.rb +39 -0
- data/lib/facets/core/enumerable/occur.rb +62 -0
- data/lib/facets/core/enumerable/one.rb +65 -0
- data/lib/facets/core/enumerable/op_pow.rb +38 -0
- data/lib/facets/core/enumerable/partition_by.rb +55 -0
- data/lib/facets/core/enumerable/permute.rb +135 -0
- data/lib/facets/core/enumerable/probability.rb +59 -0
- data/lib/facets/core/enumerable/project.rb +11 -0
- data/lib/facets/core/enumerable/self/combinations.rb +68 -0
- data/lib/facets/core/enumerable/self/cross.rb +79 -0
- data/lib/facets/core/enumerable/to_h.rb +50 -0
- data/lib/facets/core/enumerable/uniq_by.rb +39 -0
- data/lib/facets/core/enumerable/where.rb +12 -0
- data/lib/facets/core/file.rb +5 -0
- data/lib/facets/core/file/self/create.rb +52 -0
- data/lib/facets/core/file/self/open_as_string.rb +81 -0
- data/lib/facets/core/file/self/read_list.rb +47 -0
- data/lib/facets/core/file/self/sanitize.rb +50 -0
- data/lib/facets/core/file/self/split_all.rb +36 -0
- data/lib/facets/core/fileutils.rb +0 -0
- data/lib/facets/core/fileutils/head.rb +2 -0
- data/lib/facets/core/fileutils/safe_ln.rb +38 -0
- data/lib/facets/core/fileutils/slice.rb +152 -0
- data/lib/facets/core/fileutils/split_all.rb +29 -0
- data/lib/facets/core/fileutils/tail.rb +2 -0
- data/lib/facets/core/fileutils/wc.rb +128 -0
- data/lib/facets/core/fileutils/whereis.rb +76 -0
- data/lib/facets/core/fileutils/which.rb +117 -0
- data/lib/facets/core/float.rb +3 -0
- data/lib/facets/core/float/approx.rb +42 -0
- data/lib/facets/core/float/round_at.rb +72 -0
- data/lib/facets/core/float/round_to.rb +73 -0
- data/lib/facets/core/gem.rb +3 -0
- data/lib/facets/core/gem/self/active.rb +9 -0
- data/lib/facets/core/gem/self/gempath.rb +10 -0
- data/lib/facets/core/gem/self/gemspec.rb +10 -0
- data/lib/facets/core/hash.rb +40 -0
- data/lib/facets/core/hash/alias.rb +54 -0
- data/lib/facets/core/hash/assert_has_keys.rb +38 -0
- data/lib/facets/core/hash/assert_has_only_keys.rb +38 -0
- data/lib/facets/core/hash/at.rb +26 -0
- data/lib/facets/core/hash/collate.rb +53 -0
- data/lib/facets/core/hash/delete_unless.rb +15 -0
- data/lib/facets/core/hash/each.rb +61 -0
- data/lib/facets/core/hash/each_with_index.rb +35 -0
- data/lib/facets/core/hash/each_with_key.rb +32 -0
- data/lib/facets/core/hash/graph.rb +31 -0
- data/lib/facets/core/hash/has_keys.rb +37 -0
- data/lib/facets/core/hash/has_only_keys.rb +37 -0
- data/lib/facets/core/hash/inverse.rb +51 -0
- data/lib/facets/core/hash/join.rb +19 -0
- data/lib/facets/core/hash/keys_to_iv.rb +60 -0
- data/lib/facets/core/hash/keys_to_s.rb +80 -0
- data/lib/facets/core/hash/keys_to_sym.rb +91 -0
- data/lib/facets/core/hash/op_fetch.rb +146 -0
- data/lib/facets/core/hash/op_lshift.rb +28 -0
- data/lib/facets/core/hash/op_store.rb +2 -0
- data/lib/facets/core/hash/rand_key.rb +47 -0
- data/lib/facets/core/hash/rand_pair.rb +50 -0
- data/lib/facets/core/hash/rand_value.rb +60 -0
- data/lib/facets/core/hash/replace_each.rb +33 -0
- data/lib/facets/core/hash/self/zipnew.rb +37 -0
- data/lib/facets/core/hash/shuffle.rb +53 -0
- data/lib/facets/core/hash/slice.rb +33 -0
- data/lib/facets/core/hash/stringify_keys.rb +2 -0
- data/lib/facets/core/hash/swap.rb +36 -0
- data/lib/facets/core/hash/swapkey.rb +44 -0
- data/lib/facets/core/hash/symoblize_keys.rb +2 -0
- data/lib/facets/core/hash/to_h.rb +35 -0
- data/lib/facets/core/hash/to_ostruct.rb +40 -0
- data/lib/facets/core/hash/to_ostruct_recurse.rb +45 -0
- data/lib/facets/core/hash/traverse.rb +63 -0
- data/lib/facets/core/hash/update_each.rb +43 -0
- data/lib/facets/core/hash/update_keys.rb +31 -0
- data/lib/facets/core/hash/update_values.rb +32 -0
- data/lib/facets/core/hash/variablize_keys.rb +2 -0
- data/lib/facets/core/hash/weave.rb +88 -0
- data/lib/facets/core/inflect.rb +70 -0
- data/lib/facets/core/integer.rb +9 -0
- data/lib/facets/core/integer/even.rb +2 -0
- data/lib/facets/core/integer/fac.rb +2 -0
- data/lib/facets/core/integer/fact.rb +2 -0
- data/lib/facets/core/integer/factorial.rb +61 -0
- data/lib/facets/core/integer/multiple.rb +69 -0
- data/lib/facets/core/integer/odd.rb +2 -0
- data/lib/facets/core/integer/ordinal.rb +41 -0
- data/lib/facets/core/integer/times_collect.rb +39 -0
- data/lib/facets/core/integer/times_map.rb +2 -0
- data/lib/facets/core/kernel.rb +68 -0
- data/lib/facets/core/kernel/__DIR__.rb +11 -0
- data/lib/facets/core/kernel/__class__.rb +31 -0
- data/lib/facets/core/kernel/__meta__.rb +28 -0
- data/lib/facets/core/kernel/adhoc.rb +11 -0
- data/lib/facets/core/kernel/as.rb +87 -0
- data/lib/facets/core/kernel/assign_from.rb +82 -0
- data/lib/facets/core/kernel/assign_with.rb +75 -0
- data/lib/facets/core/kernel/autoreload.rb +124 -0
- data/lib/facets/core/kernel/autoreload_files.rb +2 -0
- data/lib/facets/core/kernel/autoreload_glob.rb +3 -0
- data/lib/facets/core/kernel/bool.rb +77 -0
- data/lib/facets/core/kernel/bug.rb +39 -0
- data/lib/facets/core/kernel/call_stack.rb +59 -0
- data/lib/facets/core/kernel/called.rb +40 -0
- data/lib/facets/core/kernel/complete.rb +6 -0
- data/lib/facets/core/kernel/constant.rb +52 -0
- data/lib/facets/core/kernel/copy.rb +48 -0
- data/lib/facets/core/kernel/deep_copy.rb +49 -0
- data/lib/facets/core/kernel/demo.rb +46 -0
- data/lib/facets/core/kernel/eigenclass.rb +17 -0
- data/lib/facets/core/kernel/false.rb +2 -0
- data/lib/facets/core/kernel/fn.rb +33 -0
- data/lib/facets/core/kernel/generate_method_name.rb +39 -0
- data/lib/facets/core/kernel/get_by_id.rb +33 -0
- data/lib/facets/core/kernel/here.rb +34 -0
- data/lib/facets/core/kernel/in.rb +35 -0
- data/lib/facets/core/kernel/instance_assign.rb +25 -0
- data/lib/facets/core/kernel/instvar.rb +13 -0
- data/lib/facets/core/kernel/is.rb +7 -0
- data/lib/facets/core/kernel/maybe.rb +41 -0
- data/lib/facets/core/kernel/me.rb +17 -0
- data/lib/facets/core/kernel/meta.rb +2 -0
- data/lib/facets/core/kernel/metaclass.rb +42 -0
- data/lib/facets/core/kernel/method.rb +76 -0
- data/lib/facets/core/kernel/method_name.rb +49 -0
- data/lib/facets/core/kernel/methods.rb +79 -0
- data/lib/facets/core/kernel/nack.rb +12 -0
- data/lib/facets/core/kernel/new.rb +40 -0
- data/lib/facets/core/kernel/object_class.rb +31 -0
- data/lib/facets/core/kernel/object_hexid.rb +35 -0
- data/lib/facets/core/kernel/op_esc.rb +37 -0
- data/lib/facets/core/kernel/own.rb +17 -0
- data/lib/facets/core/kernel/p.rb +12 -0
- data/lib/facets/core/kernel/require_all.rb +44 -0
- data/lib/facets/core/kernel/require_esc.rb +42 -0
- data/lib/facets/core/kernel/require_facet.rb +41 -0
- data/lib/facets/core/kernel/require_local.rb +25 -0
- data/lib/facets/core/kernel/resc.rb +32 -0
- data/lib/facets/core/kernel/returning.rb +49 -0
- data/lib/facets/core/kernel/send_as.rb +34 -0
- data/lib/facets/core/kernel/set_from.rb +69 -0
- data/lib/facets/core/kernel/set_with.rb +74 -0
- data/lib/facets/core/kernel/silence_warnings.rb +2 -0
- data/lib/facets/core/kernel/silently.rb +41 -0
- data/lib/facets/core/kernel/singleton.rb +47 -0
- data/lib/facets/core/kernel/superior.rb +53 -0
- data/lib/facets/core/kernel/supermethod.rb +44 -0
- data/lib/facets/core/kernel/this.rb +33 -0
- data/lib/facets/core/kernel/to_b.rb +41 -0
- data/lib/facets/core/kernel/to_bool.rb +47 -0
- data/lib/facets/core/kernel/true.rb +2 -0
- data/lib/facets/core/kernel/unuri.rb +2 -0
- data/lib/facets/core/kernel/uri.rb +38 -0
- data/lib/facets/core/kernel/val.rb +52 -0
- data/lib/facets/core/kernel/warn_with_line.rb +30 -0
- data/lib/facets/core/kernel/with_accessor.rb +94 -0
- data/lib/facets/core/kernel/with_reader.rb +2 -0
- data/lib/facets/core/kernel/with_writer.rb +2 -0
- data/lib/facets/core/logger.rb +0 -0
- data/lib/facets/core/logger/format.rb +28 -0
- data/lib/facets/core/logger/format_message.rb +1 -0
- data/lib/facets/core/matchdata.rb +3 -0
- data/lib/facets/core/matchdata/match.rb +37 -0
- data/lib/facets/core/matchdata/matchset.rb +2 -0
- data/lib/facets/core/matchdata/matchtree.rb +62 -0
- data/lib/facets/core/module.rb +40 -0
- data/lib/facets/core/module/abstract.rb +50 -0
- data/lib/facets/core/module/alias_module_function.rb +57 -0
- data/lib/facets/core/module/ancestor.rb +38 -0
- data/lib/facets/core/module/attr.rb +23 -0
- data/lib/facets/core/module/attr_setter.rb +48 -0
- data/lib/facets/core/module/attr_tester.rb +56 -0
- data/lib/facets/core/module/basename.rb +39 -0
- data/lib/facets/core/module/by_name.rb +68 -0
- data/lib/facets/core/module/cattr_accessor.rb +141 -0
- data/lib/facets/core/module/cattr_reader.rb +2 -0
- data/lib/facets/core/module/cattr_writer.rb +2 -0
- data/lib/facets/core/module/clone_removing.rb +2 -0
- data/lib/facets/core/module/clone_renaming.rb +2 -0
- data/lib/facets/core/module/clone_using.rb +87 -0
- data/lib/facets/core/module/dirname.rb +42 -0
- data/lib/facets/core/module/equate_on.rb +70 -0
- data/lib/facets/core/module/generate_instance_method_name.rb +47 -0
- data/lib/facets/core/module/include_as.rb +102 -0
- data/lib/facets/core/module/initializer.rb +65 -0
- data/lib/facets/core/module/instance_methods.rb +186 -0
- data/lib/facets/core/module/integrate.rb +51 -0
- data/lib/facets/core/module/is.rb +35 -0
- data/lib/facets/core/module/memoize.rb +95 -0
- data/lib/facets/core/module/modspace.rb +43 -0
- data/lib/facets/core/module/namespace.rb +61 -0
- data/lib/facets/core/module/nesting.rb +45 -0
- data/lib/facets/core/module/redef.rb +31 -0
- data/lib/facets/core/module/redefine_method.rb +57 -0
- data/lib/facets/core/module/redirect.rb +30 -0
- data/lib/facets/core/module/redirect_method.rb +64 -0
- data/lib/facets/core/module/remove.rb +29 -0
- data/lib/facets/core/module/rename.rb +31 -0
- data/lib/facets/core/module/rename_method.rb +38 -0
- data/lib/facets/core/module/revisal.rb +49 -0
- data/lib/facets/core/module/shadow_all.rb +17 -0
- data/lib/facets/core/module/shadow_method.rb +42 -0
- data/lib/facets/core/module/sort_on.rb +73 -0
- data/lib/facets/core/module/undef.rb +29 -0
- data/lib/facets/core/module/wrap.rb +30 -0
- data/lib/facets/core/module/wrap_method.rb +48 -0
- data/lib/facets/core/nil_as_emptiness.rb +34 -0
- data/lib/facets/core/nilclass.rb +7 -0
- data/lib/facets/core/nilclass/empty.rb +32 -0
- data/lib/facets/core/nilclass/include.rb +32 -0
- data/lib/facets/core/nilclass/length.rb +2 -0
- data/lib/facets/core/nilclass/op_fetch.rb +37 -0
- data/lib/facets/core/nilclass/size.rb +44 -0
- data/lib/facets/core/nilclass/to_f.rb +32 -0
- data/lib/facets/core/nilclass/to_h.rb +33 -0
- data/lib/facets/core/numeric.rb +5 -0
- data/lib/facets/core/numeric/ceil_multiple.rb +40 -0
- data/lib/facets/core/numeric/pred.rb +2 -0
- data/lib/facets/core/numeric/succ.rb +69 -0
- data/lib/facets/core/numeric/to_b.rb +38 -0
- data/lib/facets/core/ostruct.rb +0 -0
- data/lib/facets/core/ostruct/__merge__.rb +52 -0
- data/lib/facets/core/ostruct/__table__.rb +17 -0
- data/lib/facets/core/ostruct/__update__.rb +45 -0
- data/lib/facets/core/ostruct/op_fetch.rb +40 -0
- data/lib/facets/core/ostruct/op_store.rb +42 -0
- data/lib/facets/core/ostruct/to_h.rb +8 -0
- data/lib/facets/core/pathname.rb +2 -0
- data/lib/facets/core/pathname/ascend.rb +22 -0
- data/lib/facets/core/pathname/descend.rb +20 -0
- data/lib/facets/core/proc.rb +3 -0
- data/lib/facets/core/proc/compose.rb +62 -0
- data/lib/facets/core/proc/op_mul.rb +2 -0
- data/lib/facets/core/proc/to_method.rb +74 -0
- data/lib/facets/core/random.rb +21 -0
- data/lib/facets/core/range.rb +4 -0
- data/lib/facets/core/range/to_r.rb +32 -0
- data/lib/facets/core/range/to_range.rb +36 -0
- data/lib/facets/core/range/umbrella.rb +67 -0
- data/lib/facets/core/range/within.rb +44 -0
- data/lib/facets/core/regexp.rb +3 -0
- data/lib/facets/core/regexp/arity.rb +41 -0
- data/lib/facets/core/regexp/to_re.rb +38 -0
- data/lib/facets/core/regexp/to_regexp.rb +36 -0
- data/lib/facets/core/string.rb +92 -0
- data/lib/facets/core/string/align_center.rb +87 -0
- data/lib/facets/core/string/align_left.rb +2 -0
- data/lib/facets/core/string/align_right.rb +2 -0
- data/lib/facets/core/string/at.rb +8 -0
- data/lib/facets/core/string/at_rand.rb +65 -0
- data/lib/facets/core/string/basename.rb +48 -0
- data/lib/facets/core/string/blank.rb +36 -0
- data/lib/facets/core/string/bracket.rb +70 -0
- data/lib/facets/core/string/brief.rb +33 -0
- data/lib/facets/core/string/bytes.rb +19 -0
- data/lib/facets/core/string/camelcase.rb +58 -0
- data/lib/facets/core/string/camelize.rb +35 -0
- data/lib/facets/core/string/capitalized.rb +38 -0
- data/lib/facets/core/string/chars.rb +34 -0
- data/lib/facets/core/string/cmp.rb +43 -0
- data/lib/facets/core/string/demodulize.rb +40 -0
- data/lib/facets/core/string/dequote.rb +29 -0
- data/lib/facets/core/string/downcase.rb +37 -0
- data/lib/facets/core/string/dresner.rb +49 -0
- data/lib/facets/core/string/each_char.rb +35 -0
- data/lib/facets/core/string/each_word.rb +50 -0
- data/lib/facets/core/string/ends_with.rb +2 -0
- data/lib/facets/core/string/first.rb +94 -0
- data/lib/facets/core/string/first_char.rb +20 -0
- data/lib/facets/core/string/fold.rb +67 -0
- data/lib/facets/core/string/format.rb +17 -0
- data/lib/facets/core/string/frequency.rb +39 -0
- data/lib/facets/core/string/humanize.rb +31 -0
- data/lib/facets/core/string/indent.rb +68 -0
- data/lib/facets/core/string/index_all.rb +40 -0
- data/lib/facets/core/string/last.rb +94 -0
- data/lib/facets/core/string/last_char.rb +22 -0
- data/lib/facets/core/string/line_wrap.rb +77 -0
- data/lib/facets/core/string/lines.rb +33 -0
- data/lib/facets/core/string/lowercase.rb +32 -0
- data/lib/facets/core/string/margin.rb +138 -0
- data/lib/facets/core/string/methodize.rb +44 -0
- data/lib/facets/core/string/modulize.rb +44 -0
- data/lib/facets/core/string/mscan.rb +42 -0
- data/lib/facets/core/string/natcmp.rb +108 -0
- data/lib/facets/core/string/nchar.rb +45 -0
- data/lib/facets/core/string/ordinal.rb +16 -0
- data/lib/facets/core/string/pathize.rb +46 -0
- data/lib/facets/core/string/plural.rb +2 -0
- data/lib/facets/core/string/pop.rb +54 -0
- data/lib/facets/core/string/probability.rb +34 -0
- data/lib/facets/core/string/pull.rb +17 -0
- data/lib/facets/core/string/push.rb +44 -0
- data/lib/facets/core/string/quote.rb +68 -0
- data/lib/facets/core/string/rand_byte.rb +55 -0
- data/lib/facets/core/string/rand_index.rb +29 -0
- data/lib/facets/core/string/range.rb +37 -0
- data/lib/facets/core/string/range_all.rb +48 -0
- data/lib/facets/core/string/range_of_line.rb +42 -0
- data/lib/facets/core/string/regesc.rb +32 -0
- data/lib/facets/core/string/self/format.rb +17 -0
- data/lib/facets/core/string/self/interpolate.rb +31 -0
- data/lib/facets/core/string/self/patterns.rb +51 -0
- data/lib/facets/core/string/self/rand_letter.rb +34 -0
- data/lib/facets/core/string/self/random.rb +37 -0
- data/lib/facets/core/string/shatter.rb +45 -0
- data/lib/facets/core/string/shell_escape.rb +11 -0
- data/lib/facets/core/string/shift.rb +42 -0
- data/lib/facets/core/string/shuffle.rb +42 -0
- data/lib/facets/core/string/similarity.rb +108 -0
- data/lib/facets/core/string/singular.rb +117 -0
- data/lib/facets/core/string/slap.rb +44 -0
- data/lib/facets/core/string/soundex.rb +102 -0
- data/lib/facets/core/string/starts_with.rb +24 -0
- data/lib/facets/core/string/succ.rb +38 -0
- data/lib/facets/core/string/tab.rb +2 -0
- data/lib/facets/core/string/tabto.rb +2 -0
- data/lib/facets/core/string/to_a.rb +35 -0
- data/lib/facets/core/string/to_arr.rb +55 -0
- data/lib/facets/core/string/to_b.rb +64 -0
- data/lib/facets/core/string/to_const.rb +39 -0
- data/lib/facets/core/string/to_date.rb +35 -0
- data/lib/facets/core/string/to_proc.rb +54 -0
- data/lib/facets/core/string/to_re.rb +46 -0
- data/lib/facets/core/string/to_rx.rb +2 -0
- data/lib/facets/core/string/to_time.rb +34 -0
- data/lib/facets/core/string/unbracket.rb +46 -0
- data/lib/facets/core/string/underscore.rb +18 -0
- data/lib/facets/core/string/unix_crypt.rb +41 -0
- data/lib/facets/core/string/unpack.rb +45 -0
- data/lib/facets/core/string/unshift.rb +42 -0
- data/lib/facets/core/string/upcase.rb +45 -0
- data/lib/facets/core/string/uppercase.rb +2 -0
- data/lib/facets/core/string/whitespace.rb +27 -0
- data/lib/facets/core/string/word_filter.rb +61 -0
- data/lib/facets/core/string/word_wrap.rb +90 -0
- data/lib/facets/core/string/words.rb +45 -0
- data/lib/facets/core/string_as_array.rb +16 -0
- data/lib/facets/core/symbol.rb +13 -0
- data/lib/facets/core/symbol/camelcase.rb +42 -0
- data/lib/facets/core/symbol/camelize.rb +33 -0
- data/lib/facets/core/symbol/capitalize.rb +31 -0
- data/lib/facets/core/symbol/capitalized.rb +33 -0
- data/lib/facets/core/symbol/downcase.rb +36 -0
- data/lib/facets/core/symbol/not.rb +40 -0
- data/lib/facets/core/symbol/pad.rb +43 -0
- data/lib/facets/core/symbol/succ.rb +42 -0
- data/lib/facets/core/symbol/to_const.rb +40 -0
- data/lib/facets/core/symbol/to_proc.rb +45 -0
- data/lib/facets/core/symbol/to_str.rb +39 -0
- data/lib/facets/core/symbol/underscore.rb +32 -0
- data/lib/facets/core/symbol/upcase.rb +37 -0
- data/lib/facets/core/time.rb +8 -0
- data/lib/facets/core/time/change.rb +51 -0
- data/lib/facets/core/time/elapse.rb +41 -0
- data/lib/facets/core/time/self/days_extrema.rb +22 -0
- data/lib/facets/core/time/self/stamp.rb +2 -0
- data/lib/facets/core/time/stamp.rb +51 -0
- data/lib/facets/core/time/to_date.rb +37 -0
- data/lib/facets/core/time/to_s.rb +33 -0
- data/lib/facets/core/time/to_time.rb +36 -0
- data/lib/facets/core/unboundmethod.rb +1 -0
- data/lib/facets/core/unboundmethod/name.rb +8 -0
- data/lib/facets/more/annotation.rb +580 -0
- data/lib/facets/more/ansicode.rb +311 -0
- data/lib/facets/more/aspects.rb +230 -0
- data/lib/facets/more/association.rb +156 -0
- data/lib/facets/more/basicobject.rb +135 -0
- data/lib/facets/more/bbcode.rb +388 -0
- data/lib/facets/more/binaryreader.rb +246 -0
- data/lib/facets/more/bitmask.rb +112 -0
- data/lib/facets/more/blankslate.rb +3 -0
- data/lib/facets/more/bytes.rb +212 -0
- data/lib/facets/more/classinherit.rb +216 -0
- data/lib/facets/more/classmethods.rb +219 -0
- data/lib/facets/more/cloneable.rb +55 -0
- data/lib/facets/more/consoleapp.rb +123 -0
- data/lib/facets/more/coroutine.rb +172 -0
- data/lib/facets/more/crypt.rb +180 -0
- data/lib/facets/more/dictionary.rb +436 -0
- data/lib/facets/more/downloader.rb +272 -0
- data/lib/facets/more/enumerablepass.rb +285 -0
- data/lib/facets/more/expirable.rb +87 -0
- data/lib/facets/more/filelist.rb +486 -0
- data/lib/facets/more/floatstring.rb +179 -0
- data/lib/facets/more/functor.rb +105 -0
- data/lib/facets/more/heap.rb +226 -0
- data/lib/facets/more/inheritor.rb +239 -0
- data/lib/facets/more/interval.rb +424 -0
- data/lib/facets/more/ioredirect.rb +130 -0
- data/lib/facets/more/lisp.rb +387 -0
- data/lib/facets/more/lisp_format.rb +1843 -0
- data/lib/facets/more/lrucache.rb +183 -0
- data/lib/facets/more/mathconstants.rb +320 -0
- data/lib/facets/more/methodprobe.rb +215 -0
- data/lib/facets/more/mock.rb +233 -0
- data/lib/facets/more/multipliers.rb +192 -0
- data/lib/facets/more/multiton.rb +359 -0
- data/lib/facets/more/nackclass.rb +162 -0
- data/lib/facets/more/nilcomparable.rb +133 -0
- data/lib/facets/more/nullclass.rb +68 -0
- data/lib/facets/more/one.rb +117 -0
- data/lib/facets/more/openobject.rb +220 -0
- data/lib/facets/more/orderedhash.rb +3 -0
- data/lib/facets/more/ormsupport.rb +235 -0
- data/lib/facets/more/overload.rb +110 -0
- data/lib/facets/more/paramix.rb +243 -0
- data/lib/facets/more/pathlist.rb +105 -0
- data/lib/facets/more/pool.rb +98 -0
- data/lib/facets/more/preinitialize.rb +152 -0
- data/lib/facets/more/progressbar.rb +227 -0
- data/lib/facets/more/promoteself.rb +104 -0
- data/lib/facets/more/quaternion.rb +527 -0
- data/lib/facets/more/reference.rb +83 -0
- data/lib/facets/more/rtals.rb +14 -0
- data/lib/facets/more/semaphore.rb +103 -0
- data/lib/facets/more/snapshot.rb +190 -0
- data/lib/facets/more/stateparser.rb +579 -0
- data/lib/facets/more/statichash.rb +87 -0
- data/lib/facets/more/syncarray.rb +144 -0
- data/lib/facets/more/synchash.rb +173 -0
- data/lib/facets/more/system.rb +169 -0
- data/lib/facets/more/tagiterator.rb +387 -0
- data/lib/facets/more/timer.rb +307 -0
- data/lib/facets/more/times.rb +327 -0
- data/lib/facets/more/tracepoint.rb +183 -0
- data/lib/facets/more/tuple.rb +170 -0
- data/lib/facets/more/typecast.rb +280 -0
- data/lib/facets/more/uninheritable.rb +90 -0
- data/lib/facets/more/units.rb +938 -0
- data/lib/facets/more/yamlstruct.rb +90 -0
- metadata +680 -39
- data/data/facets/methods.yaml +0 -446
@@ -0,0 +1,285 @@
|
|
1
|
+
#--
|
2
|
+
# EnumerablePass
|
3
|
+
#
|
4
|
+
# Copyright (c) 2004,2005 Thomas Sawyer
|
5
|
+
#
|
6
|
+
# Ruby License
|
7
|
+
#
|
8
|
+
# This module is free software. You may use, modify, and/or redistribute this
|
9
|
+
# software under the same terms as Ruby.
|
10
|
+
#
|
11
|
+
# This program is distributed in the hope that it will be useful, but WITHOUT
|
12
|
+
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
13
|
+
# FOR A PARTICULAR PURPOSE.
|
14
|
+
#
|
15
|
+
#
|
16
|
+
# ==========================================================================
|
17
|
+
# Changes
|
18
|
+
# --------------------------------------------------------------------------
|
19
|
+
# 05.10.31 Trans Rewrote to use Enumerator and to build methods
|
20
|
+
# dynamically based on Enumerable. So it essentially
|
21
|
+
# always in sync. Renamed to EnumerablePass too.
|
22
|
+
#
|
23
|
+
# 04.06.01 Trans Minor modifications to documentation.
|
24
|
+
# ==========================================================================
|
25
|
+
#++
|
26
|
+
|
27
|
+
#:title: EnumerablePass
|
28
|
+
#
|
29
|
+
# This is a simple reimplementation of the core Enumerable module
|
30
|
+
# to allow the methods to take and pass-on arbitrary arguments to the
|
31
|
+
# underlying #each call.
|
32
|
+
#
|
33
|
+
# NOTE Any Enumerable method with a negative arity cannot do pass arguments
|
34
|
+
# due to ambiguity in the argument count. So the methods #inject and #zip
|
35
|
+
# do NOT work this way, but simply work as they do in Enumerable.
|
36
|
+
# The method #find (and #detect) though has been made to work by removing
|
37
|
+
# its rarely used optional parameter and providing instead an optional
|
38
|
+
# keyword parameter (:ifnone => ...). Please keep these difference in mind.
|
39
|
+
#
|
40
|
+
# == Synopsis
|
41
|
+
#
|
42
|
+
# class T
|
43
|
+
# include EnumerablePass
|
44
|
+
# def initialize(arr)
|
45
|
+
# @arr = arr
|
46
|
+
# end
|
47
|
+
# def each(n)
|
48
|
+
# arr.each{ |e| yield(e+n) }
|
49
|
+
# end
|
50
|
+
# end
|
51
|
+
#
|
52
|
+
# t = T.new([1,2,3])
|
53
|
+
# t.collect(4)
|
54
|
+
# #=> [5,6,7]
|
55
|
+
#
|
56
|
+
# == Author(s)
|
57
|
+
#
|
58
|
+
# Thomas Sawyer
|
59
|
+
#
|
60
|
+
|
61
|
+
require 'enumerator'
|
62
|
+
|
63
|
+
module EnumerablePass
|
64
|
+
|
65
|
+
def self.wrap_enumerable_method( methodname )
|
66
|
+
|
67
|
+
m = methodname
|
68
|
+
meth = Enumerable.instance_method(m)
|
69
|
+
arity = meth.arity
|
70
|
+
|
71
|
+
case arity <=> 0
|
72
|
+
when 0
|
73
|
+
class_eval %{
|
74
|
+
def #{m}( *args, &yld )
|
75
|
+
enum_for(:each, *args).#{m}( &yld )
|
76
|
+
end
|
77
|
+
}
|
78
|
+
when 1
|
79
|
+
class_eval %{
|
80
|
+
def #{m}( *args, &yld )
|
81
|
+
args, each_args = args[0...#{arity}], args[#{arity}..-1]
|
82
|
+
enum_for(:each, *each_args).#{m}( *args, &yld )
|
83
|
+
end
|
84
|
+
}
|
85
|
+
else
|
86
|
+
class_eval %{
|
87
|
+
def #{m}( *args, &yld )
|
88
|
+
enum_for(:each).#{m}( *args, &yld )
|
89
|
+
end
|
90
|
+
}
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
Enumerable.instance_methods(false).each do |m|
|
95
|
+
wrap_enumerable_method( m )
|
96
|
+
end
|
97
|
+
|
98
|
+
# Make exception for #find (a negative arity method) to accept
|
99
|
+
# keyword argument.
|
100
|
+
#
|
101
|
+
# ObjectSpace.find(Class, :ifnone=>lambda{1}) { |e| ... }
|
102
|
+
# ObjectSpace.find(Class, :ifnone=>lambda{1}) { |e| ... }
|
103
|
+
#
|
104
|
+
def find(*args, &yld) # future use **keys ?
|
105
|
+
if Hash === args.last and args.last.key?(:ifnone)
|
106
|
+
ifnone = args.last.delete(:ifnone)
|
107
|
+
args.pop if args.last.empty?
|
108
|
+
enum_for(:each, *args).find( ifnone, &yld )
|
109
|
+
else
|
110
|
+
enum_for(:each, *args).find( &yld )
|
111
|
+
end
|
112
|
+
end
|
113
|
+
alias_method :detect, :find
|
114
|
+
|
115
|
+
end
|
116
|
+
|
117
|
+
|
118
|
+
=begin OLD CODE
|
119
|
+
module EnumerableArgs
|
120
|
+
|
121
|
+
def collect(*args) # :yield:
|
122
|
+
a = []
|
123
|
+
each(*args){ |n| a << yield(n) }
|
124
|
+
a
|
125
|
+
end
|
126
|
+
alias_method( :map, :collect )
|
127
|
+
|
128
|
+
def detect(*args) # :yield:
|
129
|
+
each(*args){ |n| return n if yield(n) }
|
130
|
+
nil
|
131
|
+
end
|
132
|
+
alias_method( :find, :detect )
|
133
|
+
|
134
|
+
def each_with_index(*args)
|
135
|
+
i=0
|
136
|
+
each(*args){ |*n| n << i; yield(*n); i+=1 }
|
137
|
+
self
|
138
|
+
end
|
139
|
+
|
140
|
+
def to_a(*args)
|
141
|
+
a = []
|
142
|
+
each(*args){ |n| a << n }
|
143
|
+
a
|
144
|
+
end
|
145
|
+
alias_method( :entries, :to_a )
|
146
|
+
|
147
|
+
# An additional method not part of standard Enumerable.
|
148
|
+
# The regular version of this method can be found in Facets,
|
149
|
+
# but it is a bit more advanced then this one.
|
150
|
+
# At some point they need to be put into sync.
|
151
|
+
def each_slice(*args, &yld)
|
152
|
+
a = []; s = []
|
153
|
+
ar = yld.arity.abs
|
154
|
+
each(*args){ |n|
|
155
|
+
s << n
|
156
|
+
if s.length >= ar
|
157
|
+
yld.call(*s)
|
158
|
+
s = []
|
159
|
+
end
|
160
|
+
}
|
161
|
+
a
|
162
|
+
end
|
163
|
+
alias_method( :each_by, :each_slice )
|
164
|
+
|
165
|
+
def select(*args) # :yield:
|
166
|
+
a = []
|
167
|
+
each(*args){ |n| a << n if yield(n) }
|
168
|
+
a
|
169
|
+
end
|
170
|
+
alias_method( :find_all, :select )
|
171
|
+
|
172
|
+
def grep(pattern, *args)
|
173
|
+
a = []
|
174
|
+
each(*args){ |n| a << (block_given? ? yield(n) : n) if pattern === n }
|
175
|
+
a
|
176
|
+
end
|
177
|
+
|
178
|
+
def include?(anObj, *args)
|
179
|
+
each(*args){ |n| return true if anObj == n }
|
180
|
+
false
|
181
|
+
end
|
182
|
+
alias_method( :member?, :include? )
|
183
|
+
|
184
|
+
def max(*args)
|
185
|
+
to_a(*args).max
|
186
|
+
end
|
187
|
+
|
188
|
+
def min(*args)
|
189
|
+
to_a(*args).min
|
190
|
+
end
|
191
|
+
|
192
|
+
def reject(*args)
|
193
|
+
a = []
|
194
|
+
each(*args){ |n| a << n if ! yield(n) }
|
195
|
+
a
|
196
|
+
end
|
197
|
+
|
198
|
+
def sort(*args)
|
199
|
+
# TODO
|
200
|
+
end
|
201
|
+
|
202
|
+
end
|
203
|
+
=end
|
204
|
+
|
205
|
+
|
206
|
+
# _____ _
|
207
|
+
# |_ _|__ ___| |_
|
208
|
+
# | |/ _ \/ __| __|
|
209
|
+
# | | __/\__ \ |_
|
210
|
+
# |_|\___||___/\__|
|
211
|
+
#
|
212
|
+
|
213
|
+
=begin testing
|
214
|
+
|
215
|
+
require 'test/unit'
|
216
|
+
|
217
|
+
# fixture
|
218
|
+
|
219
|
+
class PlusArray
|
220
|
+
include EnumerablePass
|
221
|
+
def initialize(arr)
|
222
|
+
@arr = arr
|
223
|
+
end
|
224
|
+
def each(n=0)
|
225
|
+
@arr.each{ |e| yield(e+n) }
|
226
|
+
end
|
227
|
+
end
|
228
|
+
|
229
|
+
class TC_Enumerable < Test::Unit::TestCase
|
230
|
+
|
231
|
+
def test_collect
|
232
|
+
t = PlusArray.new([1,2,3])
|
233
|
+
assert_equal( [5,6,7], t.collect(4){ |e| e } )
|
234
|
+
end
|
235
|
+
|
236
|
+
#def test_each_slice
|
237
|
+
# t = PlusArray.new([1,2,3,4])
|
238
|
+
# a = []
|
239
|
+
# t.each_slice(2,4){ |e,f| a << [e,f] }
|
240
|
+
# assert_equal( [[5,6],[7,8]], a )
|
241
|
+
#end
|
242
|
+
|
243
|
+
#def test_find
|
244
|
+
# t = PlusArray.new([1,2,3,4])
|
245
|
+
# f = t.find(2, :ifnone=>lambda{:NOPE}) { |a| a == 10 }
|
246
|
+
# assert_equal(:NOPE, f)
|
247
|
+
#end
|
248
|
+
|
249
|
+
def test_grep
|
250
|
+
# TODO
|
251
|
+
end
|
252
|
+
|
253
|
+
def test_to_a
|
254
|
+
t = PlusArray.new([1,2,3])
|
255
|
+
assert_equal( [5,6,7], t.to_a(4) )
|
256
|
+
end
|
257
|
+
|
258
|
+
def test_min
|
259
|
+
t = PlusArray.new([1,2,3])
|
260
|
+
assert_equal( 5, t.min(4) )
|
261
|
+
end
|
262
|
+
|
263
|
+
def test_max
|
264
|
+
t = PlusArray.new([1,2,3])
|
265
|
+
assert_equal( 7, t.max(4) )
|
266
|
+
end
|
267
|
+
|
268
|
+
def test_include?
|
269
|
+
t = PlusArray.new([1,2,3])
|
270
|
+
assert( t.include?(7,4) )
|
271
|
+
end
|
272
|
+
|
273
|
+
def test_select
|
274
|
+
t = PlusArray.new([1,2,3])
|
275
|
+
assert_equal( [6], t.select(4){ |x| x == 6 } )
|
276
|
+
end
|
277
|
+
|
278
|
+
def test_reject
|
279
|
+
t = PlusArray.new([1,2,3])
|
280
|
+
assert_equal( [5,7], t.reject(4){ |x| x == 6 } )
|
281
|
+
end
|
282
|
+
|
283
|
+
end
|
284
|
+
|
285
|
+
=end
|
@@ -0,0 +1,87 @@
|
|
1
|
+
#--
|
2
|
+
# Expirable
|
3
|
+
#
|
4
|
+
# George Moschovitis
|
5
|
+
# Copyright (c) 2004-2005 Navel, all rights reserved.
|
6
|
+
#
|
7
|
+
# Ruby License
|
8
|
+
#
|
9
|
+
# This module is free software. You may use, modify, and/or redistribute this
|
10
|
+
# software under the same terms as Ruby.
|
11
|
+
#
|
12
|
+
# This program is distributed in the hope that it will be useful, but WITHOUT
|
13
|
+
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
14
|
+
# FOR A PARTICULAR PURPOSE.
|
15
|
+
#
|
16
|
+
# ==========================================================================
|
17
|
+
# Revision History
|
18
|
+
# --------------------------------------------------------------------------
|
19
|
+
# 2005-08-07 trans * Ported to Calibre.
|
20
|
+
# ==========================================================================
|
21
|
+
#++
|
22
|
+
|
23
|
+
#:title: Expirable
|
24
|
+
#
|
25
|
+
# Very generic expirability mixin.
|
26
|
+
#
|
27
|
+
# == Usage
|
28
|
+
#
|
29
|
+
# TODO
|
30
|
+
#
|
31
|
+
# == Author(s)
|
32
|
+
#
|
33
|
+
# * George Moschovitis
|
34
|
+
#
|
35
|
+
|
36
|
+
module Expirable
|
37
|
+
|
38
|
+
attr_accessor :expires
|
39
|
+
|
40
|
+
# Set the expires timeout for this entry.
|
41
|
+
|
42
|
+
def expires_after(timeout = (60*60*24))
|
43
|
+
@expires = Time.now + timeout
|
44
|
+
end
|
45
|
+
|
46
|
+
# Set the expire timeout for this entry. The timeout happens
|
47
|
+
# after (base + rand(spread)) seconds.
|
48
|
+
|
49
|
+
def expires_spread(base, spread)
|
50
|
+
@expires = Time.now + base + rand(spread)
|
51
|
+
end
|
52
|
+
|
53
|
+
# Is this entry expired?
|
54
|
+
|
55
|
+
def expired?
|
56
|
+
if @expires.nil? or (Time.now > @expires)
|
57
|
+
return true
|
58
|
+
else
|
59
|
+
return false
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
|
65
|
+
|
66
|
+
|
67
|
+
# _____ _
|
68
|
+
# |_ _|__ ___| |_
|
69
|
+
# | |/ _ \/ __| __|
|
70
|
+
# | | __/\__ \ |_
|
71
|
+
# |_|\___||___/\__|
|
72
|
+
#
|
73
|
+
|
74
|
+
# TODO
|
75
|
+
|
76
|
+
=begin #test
|
77
|
+
|
78
|
+
require 'test/unit'
|
79
|
+
|
80
|
+
class TC_Expirable < Test::Unit::TestCase
|
81
|
+
|
82
|
+
def test_01
|
83
|
+
end
|
84
|
+
|
85
|
+
end
|
86
|
+
|
87
|
+
=end
|
@@ -0,0 +1,486 @@
|
|
1
|
+
#--
|
2
|
+
# FileList (ported from Rake)
|
3
|
+
#
|
4
|
+
# Copyright (C) 2002-2005 Jim Weirich
|
5
|
+
#
|
6
|
+
# Permission is hereby granted, free of charge, to any person obtaining
|
7
|
+
# a copy of this software and associated documentation files (the
|
8
|
+
# "Software"), to deal in the Software without restriction, including
|
9
|
+
# without limitation the rights to use, copy, modify, merge, publish,
|
10
|
+
# distribute, sublicense, and/or sell copies of the Software, and to
|
11
|
+
# permit persons to whom the Software is furnished to do so, subject to
|
12
|
+
# the following conditions:
|
13
|
+
#
|
14
|
+
# The above copyright notice and this permission notice shall be
|
15
|
+
# included in all copies or substantial portions of the Software.
|
16
|
+
#
|
17
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
18
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
19
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
20
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
21
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
22
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
23
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
24
|
+
#
|
25
|
+
#
|
26
|
+
# ==========================================================================
|
27
|
+
# Revision History ::
|
28
|
+
# --------------------------------------------------------------------------
|
29
|
+
# 05-09-06 v0.6.0 trans * Ported from Rake
|
30
|
+
# 05-04-28 v0.4.x trans * Ported from Rake
|
31
|
+
# ==========================================================================
|
32
|
+
#++
|
33
|
+
|
34
|
+
#:title: FileList
|
35
|
+
#
|
36
|
+
# A FileList is essentially an array with helper methods
|
37
|
+
# to make file manipulation easier.
|
38
|
+
#
|
39
|
+
# FileLists are lazy. When given a list of glob patterns for
|
40
|
+
# possible files to be included in the file list, instead of
|
41
|
+
# searching the file structures to find the files, a FileList holds
|
42
|
+
# the pattern for latter use.
|
43
|
+
#
|
44
|
+
# This allows us to define a number of FileList to match any number of
|
45
|
+
# files, but only search out the actual files when then FileList
|
46
|
+
# itself is actually used. The key is that the first time an
|
47
|
+
# element of the FileList/Array is requested, the pending patterns
|
48
|
+
# are resolved into a real list of file names.
|
49
|
+
#
|
50
|
+
# == Synopsis
|
51
|
+
#
|
52
|
+
# fl = FileList.new
|
53
|
+
# fl.include('./**/*')
|
54
|
+
# fl.exclude('./*~')
|
55
|
+
#
|
56
|
+
|
57
|
+
class FileList
|
58
|
+
|
59
|
+
#include Cloneable
|
60
|
+
def clone
|
61
|
+
sibling = self.class.new
|
62
|
+
instance_variables.each do |ivar|
|
63
|
+
value = self.instance_variable_get(ivar)
|
64
|
+
sibling.instance_variable_set(ivar, value.rake_dup)
|
65
|
+
end
|
66
|
+
sibling
|
67
|
+
end
|
68
|
+
alias_method :dup, :clone
|
69
|
+
|
70
|
+
|
71
|
+
# == Method Delegation
|
72
|
+
#
|
73
|
+
# The lazy evaluation magic of FileLists happens by implementing
|
74
|
+
# all the array specific methods to call +resolve+ before
|
75
|
+
# delegating the heavy lifting to an embedded array object
|
76
|
+
# (@items).
|
77
|
+
#
|
78
|
+
# In addition, there are two kinds of delegation calls. The
|
79
|
+
# regular kind delegates to the @items array and returns the
|
80
|
+
# result directly. Well, almost directly. It checks if the
|
81
|
+
# returned value is the @items object itself, and if so will
|
82
|
+
# return the FileList object instead.
|
83
|
+
#
|
84
|
+
# The second kind of delegation call is used in methods that
|
85
|
+
# normally return a new Array object. We want to capture the
|
86
|
+
# return value of these methods and wrap them in a new FileList
|
87
|
+
# object. We enumerate these methods in the +SPECIAL_RETURN+ list
|
88
|
+
# below.
|
89
|
+
|
90
|
+
# List of array methods (that are not in +Object+) that need to be
|
91
|
+
# delegated.
|
92
|
+
ARRAY_METHODS = Array.instance_methods - Object.instance_methods
|
93
|
+
|
94
|
+
# List of additional methods that must be delegated.
|
95
|
+
MUST_DEFINE = %w[to_a inspect]
|
96
|
+
|
97
|
+
# List of methods that should not be delegated here (we define
|
98
|
+
# special versions of them explicitly below).
|
99
|
+
MUST_NOT_DEFINE = %w[to_a to_ary partition *]
|
100
|
+
|
101
|
+
# List of delegated methods that return new array values which
|
102
|
+
# need wrapping.
|
103
|
+
SPECIAL_RETURN = %w[
|
104
|
+
map collect sort sort_by select find_all reject grep
|
105
|
+
compact flatten uniq values_at
|
106
|
+
+ - & |
|
107
|
+
]
|
108
|
+
|
109
|
+
DELEGATING_METHODS = (ARRAY_METHODS + MUST_DEFINE - MUST_NOT_DEFINE).sort.uniq
|
110
|
+
|
111
|
+
# Now do the delegation.
|
112
|
+
DELEGATING_METHODS.each_with_index do |sym, i|
|
113
|
+
if SPECIAL_RETURN.include?(sym)
|
114
|
+
ln = __LINE__+1
|
115
|
+
class_eval %{
|
116
|
+
def #{sym}(*args, &block)
|
117
|
+
resolve if @pending
|
118
|
+
result = @items.send(:#{sym}, *args, &block)
|
119
|
+
FileList.new.import(result)
|
120
|
+
end
|
121
|
+
}, __FILE__, ln
|
122
|
+
else
|
123
|
+
ln = __LINE__+1
|
124
|
+
class_eval %{
|
125
|
+
def #{sym}(*args, &block)
|
126
|
+
resolve if @pending
|
127
|
+
result = @items.send(:#{sym}, *args, &block)
|
128
|
+
result.object_id == @items.object_id ? self : result
|
129
|
+
end
|
130
|
+
}, __FILE__, ln
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
# Create a file list from the globbable patterns given. If you
|
135
|
+
# wish to perform multiple includes or excludes at object build
|
136
|
+
# time, use the "yield self" pattern.
|
137
|
+
#
|
138
|
+
# Example:
|
139
|
+
# file_list = FileList.new['lib/**/*.rb', 'test/test*.rb']
|
140
|
+
#
|
141
|
+
# pkg_files = FileList.new['lib/**/*'] do |fl|
|
142
|
+
# fl.exclude(/\bCVS\b/)
|
143
|
+
# end
|
144
|
+
#
|
145
|
+
def initialize(*patterns)
|
146
|
+
@pending_add = []
|
147
|
+
@pending = false
|
148
|
+
@exclude_patterns = DEFAULT_IGNORE_PATTERNS.dup
|
149
|
+
@exclude_re = nil
|
150
|
+
@items = []
|
151
|
+
patterns.each { |pattern| include(pattern) }
|
152
|
+
yield self if block_given?
|
153
|
+
end
|
154
|
+
|
155
|
+
# Add file names defined by glob patterns to the file list. If an
|
156
|
+
# array is given, add each element of the array.
|
157
|
+
#
|
158
|
+
# Example:
|
159
|
+
# file_list.include("*.java", "*.cfg")
|
160
|
+
# file_list.include %w( math.c lib.h *.o )
|
161
|
+
#
|
162
|
+
def include(*filenames)
|
163
|
+
# TODO: check for pending
|
164
|
+
filenames.each do |fn|
|
165
|
+
if fn.respond_to? :to_ary
|
166
|
+
include(*fn.to_ary)
|
167
|
+
else
|
168
|
+
@pending_add << fn
|
169
|
+
end
|
170
|
+
end
|
171
|
+
@pending = true
|
172
|
+
self
|
173
|
+
end
|
174
|
+
alias :add :include
|
175
|
+
|
176
|
+
# Register a list of file name patterns that should be excluded
|
177
|
+
# from the list. Patterns may be regular expressions, glob
|
178
|
+
# patterns or regular strings.
|
179
|
+
#
|
180
|
+
# Note that glob patterns are expanded against the file system.
|
181
|
+
# If a file is explicitly added to a file list, but does not exist
|
182
|
+
# in the file system, then an glob pattern in the exclude list
|
183
|
+
# will not exclude the file.
|
184
|
+
#
|
185
|
+
# Examples:
|
186
|
+
# FileList['a.c', 'b.c'].exclude("a.c") => ['b.c']
|
187
|
+
# FileList['a.c', 'b.c'].exclude(/^a/) => ['b.c']
|
188
|
+
#
|
189
|
+
# If "a.c" is a file, then ...
|
190
|
+
# FileList['a.c', 'b.c'].exclude("a.*") => ['b.c']
|
191
|
+
#
|
192
|
+
# If "a.c" is not a file, then ...
|
193
|
+
# FileList['a.c', 'b.c'].exclude("a.*") => ['a.c', 'b.c']
|
194
|
+
#
|
195
|
+
def exclude(*patterns)
|
196
|
+
patterns.each do |pat| @exclude_patterns << pat end
|
197
|
+
if ! @pending
|
198
|
+
calculate_exclude_regexp
|
199
|
+
reject! { |fn| fn =~ @exclude_re }
|
200
|
+
end
|
201
|
+
self
|
202
|
+
end
|
203
|
+
|
204
|
+
|
205
|
+
# Clear all the exclude patterns so that we exclude nothing.
|
206
|
+
def clear_exclude
|
207
|
+
@exclude_patterns = []
|
208
|
+
calculate_exclude_regexp if ! @pending
|
209
|
+
end
|
210
|
+
|
211
|
+
# Define equality.
|
212
|
+
def ==(array)
|
213
|
+
to_ary == array
|
214
|
+
end
|
215
|
+
|
216
|
+
# Return the internal array object.
|
217
|
+
def to_a
|
218
|
+
resolve
|
219
|
+
@items
|
220
|
+
end
|
221
|
+
|
222
|
+
# Return the internal array object.
|
223
|
+
def to_ary
|
224
|
+
resolve
|
225
|
+
@items
|
226
|
+
end
|
227
|
+
|
228
|
+
# Redefine * to return either a string or a new file list.
|
229
|
+
def *(other)
|
230
|
+
result = @items * other
|
231
|
+
case result
|
232
|
+
when Array
|
233
|
+
FileList.new.import(result)
|
234
|
+
else
|
235
|
+
result
|
236
|
+
end
|
237
|
+
end
|
238
|
+
|
239
|
+
# Resolve all the pending adds now.
|
240
|
+
def resolve
|
241
|
+
if @pending
|
242
|
+
@pending = false
|
243
|
+
@pending_add.each do |fn| resolve_add(fn) end
|
244
|
+
@pending_add = []
|
245
|
+
resolve_exclude
|
246
|
+
end
|
247
|
+
self
|
248
|
+
end
|
249
|
+
|
250
|
+
def calculate_exclude_regexp
|
251
|
+
ignores = []
|
252
|
+
@exclude_patterns.each do |pat|
|
253
|
+
case pat
|
254
|
+
when Regexp
|
255
|
+
ignores << pat
|
256
|
+
when /[*.]/
|
257
|
+
Dir[pat].each do |p| ignores << p end
|
258
|
+
else
|
259
|
+
ignores << Regexp.quote(pat)
|
260
|
+
end
|
261
|
+
end
|
262
|
+
if ignores.empty?
|
263
|
+
@exclude_re = /^$/
|
264
|
+
else
|
265
|
+
re_str = ignores.collect { |p| "(" + p.to_s + ")" }.join("|")
|
266
|
+
@exclude_re = Regexp.new(re_str)
|
267
|
+
end
|
268
|
+
end
|
269
|
+
|
270
|
+
def resolve_add(fn)
|
271
|
+
case fn
|
272
|
+
when Array
|
273
|
+
fn.each { |f| self.resolve_add(f) }
|
274
|
+
when %r{[*?]}
|
275
|
+
add_matching(fn)
|
276
|
+
else
|
277
|
+
self << fn
|
278
|
+
end
|
279
|
+
end
|
280
|
+
|
281
|
+
def resolve_exclude
|
282
|
+
@exclude_patterns.each do |pat|
|
283
|
+
case pat
|
284
|
+
when Regexp
|
285
|
+
reject! { |fn| fn =~ pat }
|
286
|
+
when /[*.]/
|
287
|
+
reject_list = Dir[pat]
|
288
|
+
reject! { |fn| reject_list.include?(fn) }
|
289
|
+
else
|
290
|
+
reject! { |fn| fn == pat }
|
291
|
+
end
|
292
|
+
end
|
293
|
+
self
|
294
|
+
end
|
295
|
+
|
296
|
+
# Return a new FileList with the results of running +sub+ against
|
297
|
+
# each element of the oringal list.
|
298
|
+
#
|
299
|
+
# Example:
|
300
|
+
# FileList['a.c', 'b.c'].sub(/\.c$/, '.o') => ['a.o', 'b.o']
|
301
|
+
#
|
302
|
+
def sub(pat, rep)
|
303
|
+
inject(FileList.new) { |res, fn| res << fn.sub(pat,rep) }
|
304
|
+
end
|
305
|
+
|
306
|
+
# Return a new FileList with the results of running +gsub+ against
|
307
|
+
# each element of the original list.
|
308
|
+
#
|
309
|
+
# Example:
|
310
|
+
# FileList['lib/test/file', 'x/y'].gsub(/\//, "\\")
|
311
|
+
# => ['lib\\test\\file', 'x\\y']
|
312
|
+
#
|
313
|
+
def gsub(pat, rep)
|
314
|
+
inject(FileList.new) { |res, fn| res << fn.gsub(pat,rep) }
|
315
|
+
end
|
316
|
+
|
317
|
+
# Same as +sub+ except that the oringal file list is modified.
|
318
|
+
def sub!(pat, rep)
|
319
|
+
each_with_index { |fn, i| self[i] = fn.sub(pat,rep) }
|
320
|
+
self
|
321
|
+
end
|
322
|
+
|
323
|
+
# Same as +gsub+ except that the original file list is modified.
|
324
|
+
def gsub!(pat, rep)
|
325
|
+
each_with_index { |fn, i| self[i] = fn.gsub(pat,rep) }
|
326
|
+
self
|
327
|
+
end
|
328
|
+
|
329
|
+
# Return a new array with <tt>String#ext</tt> method applied to
|
330
|
+
# each member of the array.
|
331
|
+
#
|
332
|
+
# This method is a shortcut for:
|
333
|
+
#
|
334
|
+
# array.collect { |item| item.ext(newext) }
|
335
|
+
#
|
336
|
+
# +ext+ is a user added method for the Array class.
|
337
|
+
def ext(newext='')
|
338
|
+
collect { |fn| fn.ext(newext) }
|
339
|
+
end
|
340
|
+
|
341
|
+
|
342
|
+
# Grep each of the files in the filelist using the given pattern.
|
343
|
+
# If a block is given, call the block on each matching line,
|
344
|
+
# passing the file name, line number, and the matching line of
|
345
|
+
# text. If no block is given, a standard emac style
|
346
|
+
# file:linenumber:line message will be printed to standard out.
|
347
|
+
def egrep(pattern)
|
348
|
+
each do |fn|
|
349
|
+
open(fn) do |inf|
|
350
|
+
count = 0
|
351
|
+
|
352
|
+
inf.each do |line|
|
353
|
+
count += 1
|
354
|
+
if pattern.match(line)
|
355
|
+
if block_given?
|
356
|
+
yield fn, count, line
|
357
|
+
else
|
358
|
+
puts "#{fn}:#{count}:#{line}"
|
359
|
+
end
|
360
|
+
end
|
361
|
+
end
|
362
|
+
|
363
|
+
end
|
364
|
+
end
|
365
|
+
end
|
366
|
+
|
367
|
+
# FileList version of partition. Needed because the nested arrays
|
368
|
+
# should be FileLists in this version.
|
369
|
+
def partition(&block) # :nodoc:
|
370
|
+
resolve
|
371
|
+
result = @items.partition(&block)
|
372
|
+
[
|
373
|
+
FileList.new.import(result[0]),
|
374
|
+
FileList.new.import(result[1]),
|
375
|
+
]
|
376
|
+
end
|
377
|
+
|
378
|
+
# Convert a FileList to a string by joining all elements with a space.
|
379
|
+
def to_s
|
380
|
+
resolve if @pending
|
381
|
+
self.join(' ')
|
382
|
+
end
|
383
|
+
|
384
|
+
# Add matching glob patterns.
|
385
|
+
def add_matching(pattern)
|
386
|
+
Dir[pattern].each do |fn|
|
387
|
+
self << fn unless exclude?(fn)
|
388
|
+
end
|
389
|
+
end
|
390
|
+
private :add_matching
|
391
|
+
|
392
|
+
# Should the given file name be excluded?
|
393
|
+
def exclude?(fn)
|
394
|
+
calculate_exclude_regexp unless @exclude_re
|
395
|
+
fn =~ @exclude_re
|
396
|
+
end
|
397
|
+
|
398
|
+
DEFAULT_IGNORE_PATTERNS = [
|
399
|
+
/(^|[\/\\])CVS([\/\\]|$)/,
|
400
|
+
/(^|[\/\\])\.svn([\/\\]|$)/,
|
401
|
+
/\.bak$/,
|
402
|
+
/~$/,
|
403
|
+
/(^|[\/\\])core$/
|
404
|
+
]
|
405
|
+
@exclude_patterns = DEFAULT_IGNORE_PATTERNS.dup
|
406
|
+
|
407
|
+
def import(array)
|
408
|
+
@items = array
|
409
|
+
self
|
410
|
+
end
|
411
|
+
|
412
|
+
class << self
|
413
|
+
# Create a new file list including the files listed. Similar to:
|
414
|
+
#
|
415
|
+
# FileList.new(*args)
|
416
|
+
def [](*args)
|
417
|
+
new(*args)
|
418
|
+
end
|
419
|
+
|
420
|
+
# Set the ignore patterns back to the default value. The
|
421
|
+
# default patterns will ignore files
|
422
|
+
# * containing "CVS" in the file path
|
423
|
+
# * containing ".svn" in the file path
|
424
|
+
# * ending with ".bak"
|
425
|
+
# * ending with "~"
|
426
|
+
# * named "core"
|
427
|
+
#
|
428
|
+
# Note that file names beginning with "." are automatically
|
429
|
+
# ignored by Ruby's glob patterns and are not specifically
|
430
|
+
# listed in the ignore patterns.
|
431
|
+
def select_default_ignore_patterns
|
432
|
+
@exclude_patterns = DEFAULT_IGNORE_PATTERNS.dup
|
433
|
+
end
|
434
|
+
|
435
|
+
# Clear the ignore patterns.
|
436
|
+
def clear_ignore_patterns
|
437
|
+
@exclude_patterns = [ /^$/ ]
|
438
|
+
end
|
439
|
+
end
|
440
|
+
|
441
|
+
end # FileList
|
442
|
+
|
443
|
+
|
444
|
+
|
445
|
+
# _____ _
|
446
|
+
# |_ _|__ ___| |_
|
447
|
+
# | |/ _ \/ __| __|
|
448
|
+
# | | __/\__ \ |_
|
449
|
+
# |_|\___||___/\__|
|
450
|
+
#
|
451
|
+
|
452
|
+
# TODO
|
453
|
+
|
454
|
+
# FileList can't be tested without a FIXTURE setup.
|
455
|
+
# So don't bother running it directly from here, but
|
456
|
+
# transfer it over to the test directory.
|
457
|
+
# Need a better solution, is there a way to fake the
|
458
|
+
# filesystem?
|
459
|
+
|
460
|
+
=begin #test
|
461
|
+
|
462
|
+
require 'test/unit'
|
463
|
+
|
464
|
+
# FIND TEST DIRECTORY
|
465
|
+
paths = File.expand_path(File.dirname(__FILE__)).split('/')
|
466
|
+
paths.size.downto(1) do |i|
|
467
|
+
f = (paths.slice(0..i)+['test']).join('/')
|
468
|
+
$TESTDIR = File.join(f,'FIXTURE') if File.directory?(f)
|
469
|
+
end
|
470
|
+
raise unless $TESTDIR
|
471
|
+
|
472
|
+
class TC_FileList < Test::Unit::TestCase
|
473
|
+
|
474
|
+
def test_filelist
|
475
|
+
Dir.chdir File.join( $TESTDIR, 'filelist' ) do
|
476
|
+
fl = FileList.new
|
477
|
+
fl.include('*')
|
478
|
+
assert_equal( ['testfile.txt', 'testfile2.txt'], fl.to_a )
|
479
|
+
fl.exclude('*2.txt')
|
480
|
+
assert_equal( ['testfile.txt'], fl.to_a )
|
481
|
+
end
|
482
|
+
end
|
483
|
+
|
484
|
+
end
|
485
|
+
|
486
|
+
=end
|