facets 1.8.8 → 1.8.20
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/{doc/COPYING → COPYING} +0 -0
- data/PROJECT +18 -11
- data/README +8 -14
- data/Rakefile +3 -7
- data/VERSION +1 -1
- data/doc/AUTHORS +6 -1
- data/doc/{HISTORY.txt → ChangeLog} +96 -0
- data/doc/{HISTORY.1 → History} +0 -0
- data/lib/facet/array/pad.rb +1 -0
- data/lib/facet/dir/self/multiglob_r.rb +1 -0
- data/lib/facet/dir/self/multiglob_with_default.rb +1 -0
- data/lib/facet/string/capitalize_all.rb +1 -0
- data/lib/facet/string/cleave.rb +1 -0
- data/lib/facets/core/array/pad.rb +76 -0
- data/lib/facets/core/dir/self/ls_r.rb +2 -3
- data/lib/facets/core/dir/self/multiglob.rb +90 -12
- data/lib/facets/core/dir/self/{multiglob_recurse.rb → multiglob_r.rb} +1 -1
- data/lib/facets/core/dir/self/multiglob_with_default.rb +3 -0
- data/lib/facets/core/enumerable/accumulate.rb +1 -3
- data/lib/facets/core/enumerable/cart.rb +28 -53
- data/lib/facets/core/enumerable/graph.rb +1 -4
- data/lib/facets/core/enumerable/self/cart.rb +5 -117
- data/lib/facets/core/enumerable/self/cartesian_product.rb +3 -3
- data/lib/facets/core/file/self/create.rb +1 -3
- data/lib/facets/core/hash/rekey.rb +1 -5
- data/lib/facets/core/kernel/ask.rb +2 -2
- data/lib/facets/core/kernel/autoreload.rb +3 -5
- data/lib/facets/core/module/attr_tester.rb +40 -12
- data/lib/facets/core/module/on_included.rb +1 -3
- data/lib/facets/core/nilclass/op_cmp.rb +2 -1
- data/lib/facets/core/string/capitalize_all.rb +30 -0
- data/lib/facets/core/string/capitalized.rb +2 -4
- data/lib/facets/core/string/cleave.rb +66 -0
- data/lib/facets/core/symbol/self/generate.rb +5 -4
- data/lib/facets/core/symbol/to_s.rb +3 -1
- data/lib/facets/more/aspects.rb +4 -8
- data/lib/facets/more/expirable.rb +2 -2
- data/lib/facets/more/lrucache.rb +173 -173
- data/lib/facets/more/openobject.rb +1 -1
- data/lib/facets/more/pool.rb +2 -2
- data/lib/facets/more/syncarray.rb +3 -3
- data/lib/facets/more/synchash.rb +3 -3
- data/lib/facets/more/uploadutils.rb +14 -16
- data/lib/facets/yore/enumerable/cross.rb +117 -0
- data/test/lib/facets/core/array/test_at_rand.rb +34 -0
- data/test/lib/facets/core/array/test_delete_unless.rb +28 -0
- data/test/lib/facets/core/array/test_delete_values.rb +28 -0
- data/test/lib/facets/core/array/test_delete_values_at.rb +31 -0
- data/test/lib/facets/core/array/test_first.rb +46 -0
- data/test/lib/facets/core/array/test_head.rb +42 -0
- data/test/lib/facets/core/array/test_last_index.rb +26 -0
- data/test/lib/facets/core/array/test_merge.rb +35 -0
- data/test/lib/facets/core/array/test_mid.rb +33 -0
- data/test/lib/facets/core/array/test_middle.rb +29 -0
- data/test/lib/facets/core/array/test_op_fetch.rb +35 -0
- data/test/lib/facets/core/array/test_pad.rb +48 -0
- data/test/lib/facets/core/array/test_pick.rb +40 -0
- data/test/lib/facets/core/array/test_pos.rb +28 -0
- data/test/lib/facets/core/array/test_pot.rb +28 -0
- data/test/lib/facets/core/array/test_pull.rb +28 -0
- data/test/lib/facets/core/array/test_rand_index.rb +29 -0
- data/test/lib/facets/core/array/test_rand_subset.rb +29 -0
- data/test/lib/facets/core/array/test_range.rb +32 -0
- data/test/lib/facets/core/array/test_rotate.rb +36 -0
- data/test/lib/facets/core/array/test_select.rb +28 -0
- data/test/lib/facets/core/array/test_shuffle.rb +35 -0
- data/test/lib/facets/core/array/test_thru.rb +27 -0
- data/test/lib/facets/core/array/test_to_b.rb +27 -0
- data/test/lib/facets/core/array/test_to_h.rb +33 -0
- data/test/lib/facets/core/array/test_to_hash.rb +27 -0
- data/test/lib/facets/core/binding/self/test_of_caller.rb +35 -0
- data/test/lib/facets/core/binding/test___LINE__.rb +43 -0
- data/test/lib/facets/core/binding/test_call_stack.rb +34 -0
- data/test/lib/facets/core/binding/test_called.rb +30 -0
- data/test/lib/facets/core/binding/test_caller.rb +35 -0
- data/test/lib/facets/core/binding/test_defined.rb +34 -0
- data/test/lib/facets/core/binding/test_eval.rb +34 -0
- data/test/lib/facets/core/binding/test_local_variables.rb +34 -0
- data/test/lib/facets/core/binding/test_method_name.rb +34 -0
- data/test/lib/facets/core/binding/test_op_fetch.rb +34 -0
- data/test/lib/facets/core/binding/test_op_store.rb +35 -0
- data/test/lib/facets/core/binding/test_self.rb +34 -0
- data/test/lib/facets/core/class/test_cattr.rb +63 -0
- data/test/lib/facets/core/class/test_descendents.rb +30 -0
- data/test/lib/facets/core/class/test_method_name.rb +26 -0
- data/test/lib/facets/core/class/test_remove_descendents.rb +32 -0
- data/test/lib/facets/core/class/test_unix_path.rb +26 -0
- data/test/lib/facets/core/comparable/test_at_least.rb +34 -0
- data/test/lib/facets/core/comparable/test_clip.rb +44 -0
- data/test/lib/facets/core/comparable/test_cmp.rb +28 -0
- data/test/lib/facets/core/continuation/self/test_create.rb +26 -0
- data/test/lib/facets/core/date/test_days_in_month.rb +30 -0
- data/test/lib/facets/core/date/test_days_of_month.rb +30 -0
- data/test/lib/facets/core/date/test_stamp.rb +38 -0
- data/test/lib/facets/core/date/test_to_date.rb +30 -0
- data/test/lib/facets/core/date/test_to_s.rb +30 -0
- data/test/lib/facets/core/date/test_to_time.rb +30 -0
- data/test/lib/facets/core/dir/self/test_ancestor.rb +26 -0
- data/test/lib/facets/core/dir/self/test_ascend.rb +41 -0
- data/test/lib/facets/core/enumerable/self/test_cart.rb +44 -0
- data/test/lib/facets/core/enumerable/self/test_combinations.rb +46 -0
- data/test/lib/facets/core/enumerable/self/test_cross.rb +31 -0
- data/test/lib/facets/core/enumerable/test_cart.rb +49 -0
- data/test/lib/facets/core/enumerable/test_collect_with_index.rb +27 -0
- data/test/lib/facets/core/enumerable/test_commonality.rb +31 -0
- data/test/lib/facets/core/enumerable/test_compact_collect.rb +27 -0
- data/test/lib/facets/core/enumerable/test_count.rb +38 -0
- data/test/lib/facets/core/enumerable/test_cross.rb +30 -0
- data/test/lib/facets/core/enumerable/test_each_by.rb +71 -0
- data/test/lib/facets/core/enumerable/test_each_combination.rb +29 -0
- data/test/lib/facets/core/enumerable/test_each_pair.rb +29 -0
- data/test/lib/facets/core/enumerable/test_each_slice.rb +57 -0
- data/test/lib/facets/core/enumerable/test_each_unique_pair.rb +29 -0
- data/test/lib/facets/core/enumerable/test_eachn.rb +34 -0
- data/test/lib/facets/core/enumerable/test_entropy.rb +26 -0
- data/test/lib/facets/core/enumerable/test_every.rb +35 -0
- data/test/lib/facets/core/enumerable/test_ew.rb +31 -0
- data/test/lib/facets/core/enumerable/test_filter_collect.rb +31 -0
- data/test/lib/facets/core/enumerable/test_find_collisions.rb +30 -0
- data/test/lib/facets/core/enumerable/test_frequency.rb +27 -0
- data/test/lib/facets/core/enumerable/test_graph.rb +30 -0
- data/test/lib/facets/core/enumerable/test_ideal_entropy.rb +27 -0
- data/test/lib/facets/core/enumerable/test_none.rb +33 -0
- data/test/lib/facets/core/enumerable/test_occur.rb +30 -0
- data/test/lib/facets/core/enumerable/test_one.rb +35 -0
- data/test/lib/facets/core/enumerable/test_op_pow.rb +27 -0
- data/test/lib/facets/core/enumerable/test_partition_by.rb +31 -0
- data/test/lib/facets/core/enumerable/test_permutation.rb +29 -0
- data/test/lib/facets/core/enumerable/test_probability.rb +27 -0
- data/test/lib/facets/core/enumerable/test_to_h.rb +27 -0
- data/test/lib/facets/core/enumerable/test_uniq_by.rb +28 -0
- data/test/lib/facets/core/file/self/test_create.rb +44 -0
- data/test/lib/facets/core/file/self/test_open_as_string.rb +50 -0
- data/test/lib/facets/core/file/self/test_read_list.rb +40 -0
- data/test/lib/facets/core/file/self/test_sanitize.rb +46 -0
- data/test/lib/facets/core/file/self/test_split_all.rb +27 -0
- data/test/lib/facets/core/float/test_round_at.rb +46 -0
- data/test/lib/facets/core/float/test_round_to.rb +46 -0
- data/test/lib/facets/core/hash/self/test_zipnew.rb +28 -0
- data/test/lib/facets/core/hash/test_alias.rb +31 -0
- data/test/lib/facets/core/hash/test_assert_has_keys.rb +27 -0
- data/test/lib/facets/core/hash/test_assert_has_only_keys.rb +27 -0
- data/test/lib/facets/core/hash/test_at.rb +28 -0
- data/test/lib/facets/core/hash/test_collate.rb +35 -0
- data/test/lib/facets/core/hash/test_each_with_index.rb +29 -0
- data/test/lib/facets/core/hash/test_each_with_key.rb +29 -0
- data/test/lib/facets/core/hash/test_graph.rb +28 -0
- data/test/lib/facets/core/hash/test_has_keys.rb +27 -0
- data/test/lib/facets/core/hash/test_has_only_keys.rb +27 -0
- data/test/lib/facets/core/hash/test_inverse.rb +30 -0
- data/test/lib/facets/core/hash/test_normalize_keys.rb +34 -0
- data/test/lib/facets/core/hash/test_op_fetch.rb +111 -0
- data/test/lib/facets/core/hash/test_op_lshift.rb +29 -0
- data/test/lib/facets/core/hash/test_rand_key.rb +27 -0
- data/test/lib/facets/core/hash/test_rand_pair.rb +27 -0
- data/test/lib/facets/core/hash/test_rand_value.rb +27 -0
- data/test/lib/facets/core/hash/test_rekey.rb +52 -0
- data/test/lib/facets/core/hash/test_replace_each.rb +29 -0
- data/test/lib/facets/core/hash/test_shuffle.rb +32 -0
- data/test/lib/facets/core/hash/test_slice.rb +27 -0
- data/test/lib/facets/core/hash/test_stringify_keys.rb +34 -0
- data/test/lib/facets/core/hash/test_swap.rb +27 -0
- data/test/lib/facets/core/hash/test_swapkey.rb +29 -0
- data/test/lib/facets/core/hash/test_symbolize_keys.rb +34 -0
- data/test/lib/facets/core/hash/test_to_h.rb +27 -0
- data/test/lib/facets/core/hash/test_to_ostruct.rb +30 -0
- data/test/lib/facets/core/hash/test_to_ostruct_recurse.rb +44 -0
- data/test/lib/facets/core/hash/test_traverse.rb +37 -0
- data/test/lib/facets/core/hash/test_update_each.rb +29 -0
- data/test/lib/facets/core/hash/test_update_keys.rb +28 -0
- data/test/lib/facets/core/hash/test_update_values.rb +28 -0
- data/test/lib/facets/core/hash/test_weave.rb +29 -0
- data/test/lib/facets/core/integer/test_factorial.rb +30 -0
- data/test/lib/facets/core/integer/test_multiple.rb +43 -0
- data/test/lib/facets/core/integer/test_of.rb +28 -0
- data/test/lib/facets/core/integer/test_ordinal.rb +29 -0
- data/test/lib/facets/core/integer/test_times_collect.rb +28 -0
- data/test/lib/facets/core/kernel/test___class__.rb +26 -0
- data/test/lib/facets/core/kernel/test_as.rb +42 -0
- data/test/lib/facets/core/kernel/test_assign_from.rb +31 -0
- data/test/lib/facets/core/kernel/test_assign_with.rb +31 -0
- data/test/lib/facets/core/kernel/test_bool.rb +41 -0
- data/test/lib/facets/core/kernel/test_bug.rb +26 -0
- data/test/lib/facets/core/kernel/test_call_stack.rb +26 -0
- data/test/lib/facets/core/kernel/test_called.rb +26 -0
- data/test/lib/facets/core/kernel/test_callee.rb +26 -0
- data/test/lib/facets/core/kernel/test_constant.rb +33 -0
- data/test/lib/facets/core/kernel/test_copy.rb +40 -0
- data/test/lib/facets/core/kernel/test_deep_copy.rb +40 -0
- data/test/lib/facets/core/kernel/test_demo.rb +28 -0
- data/test/lib/facets/core/kernel/test_fn.rb +26 -0
- data/test/lib/facets/core/kernel/test_get_by_id.rb +28 -0
- data/test/lib/facets/core/kernel/test_here.rb +26 -0
- data/test/lib/facets/core/kernel/test_in.rb +27 -0
- data/test/lib/facets/core/kernel/test_instance_class.rb +27 -0
- data/test/lib/facets/core/kernel/test_instance_exec.rb +58 -0
- data/test/lib/facets/core/kernel/test_maybe.rb +26 -0
- data/test/lib/facets/core/kernel/test_meta_class.rb +27 -0
- data/test/lib/facets/core/kernel/test_metaclass.rb +27 -0
- data/test/lib/facets/core/kernel/test_method.rb +32 -0
- data/test/lib/facets/core/kernel/test_methods.rb +50 -0
- data/test/lib/facets/core/kernel/test_new.rb +30 -0
- data/test/lib/facets/core/kernel/test_object_class.rb +26 -0
- data/test/lib/facets/core/kernel/test_object_hexid.rb +27 -0
- data/test/lib/facets/core/kernel/test_qua_class.rb +27 -0
- data/test/lib/facets/core/kernel/test_require_all.rb +26 -0
- data/test/lib/facets/core/kernel/test_require_esc.rb +27 -0
- data/test/lib/facets/core/kernel/test_resc.rb +27 -0
- data/test/lib/facets/core/kernel/test_send_as.rb +26 -0
- data/test/lib/facets/core/kernel/test_set_from.rb +33 -0
- data/test/lib/facets/core/kernel/test_set_with.rb +42 -0
- data/test/lib/facets/core/kernel/test_silently.rb +28 -0
- data/test/lib/facets/core/kernel/test_singleton.rb +40 -0
- data/test/lib/facets/core/kernel/test_singleton_class.rb +27 -0
- data/test/lib/facets/core/kernel/test_super_at.rb +30 -0
- data/test/lib/facets/core/kernel/test_supermethod.rb +33 -0
- data/test/lib/facets/core/kernel/test_this.rb +26 -0
- data/test/lib/facets/core/kernel/test_to_b.rb +28 -0
- data/test/lib/facets/core/kernel/test_to_bool.rb +28 -0
- data/test/lib/facets/core/kernel/test_to_data.rb +59 -0
- data/test/lib/facets/core/kernel/test_uri.rb +30 -0
- data/test/lib/facets/core/kernel/test_val.rb +43 -0
- data/test/lib/facets/core/kernel/test_with.rb +30 -0
- data/test/lib/facets/core/kernel/test_with_accessor.rb +51 -0
- data/test/lib/facets/core/matchdata/test_match.rb +29 -0
- data/test/lib/facets/core/matchdata/test_matchtree.rb +37 -0
- data/test/lib/facets/core/module/self/test_op_add.rb +48 -0
- data/test/lib/facets/core/module/test_abstract.rb +36 -0
- data/test/lib/facets/core/module/test_alias_method_chain.rb +44 -0
- data/test/lib/facets/core/module/test_alias_module_function.rb +34 -0
- data/test/lib/facets/core/module/test_ancestor.rb +26 -0
- data/test/lib/facets/core/module/test_attr_tester.rb +39 -0
- data/test/lib/facets/core/module/test_basename.rb +26 -0
- data/test/lib/facets/core/module/test_by_name.rb +29 -0
- data/test/lib/facets/core/module/test_class_extension.rb +70 -0
- data/test/lib/facets/core/module/test_clone_using.rb +55 -0
- data/test/lib/facets/core/module/test_dirname.rb +26 -0
- data/test/lib/facets/core/module/test_equate_on.rb +37 -0
- data/test/lib/facets/core/module/test_include_as.rb +45 -0
- data/test/lib/facets/core/module/test_initializer.rb +32 -0
- data/test/lib/facets/core/module/test_instance_methods.rb +59 -0
- data/test/lib/facets/core/module/test_integrate.rb +35 -0
- data/test/lib/facets/core/module/test_memoize.rb +50 -0
- data/test/lib/facets/core/module/test_modspace.rb +27 -0
- data/test/lib/facets/core/module/test_namespace.rb +66 -0
- data/test/lib/facets/core/module/test_nesting.rb +36 -0
- data/test/lib/facets/core/module/test_new.rb +34 -0
- data/test/lib/facets/core/module/test_nodef.rb +30 -0
- data/test/lib/facets/core/module/test_on_included.rb +36 -0
- data/test/lib/facets/core/module/test_redef.rb +30 -0
- data/test/lib/facets/core/module/test_redefine_method.rb +30 -0
- data/test/lib/facets/core/module/test_redirect.rb +30 -0
- data/test/lib/facets/core/module/test_redirect_method.rb +30 -0
- data/test/lib/facets/core/module/test_remove.rb +30 -0
- data/test/lib/facets/core/module/test_rename.rb +31 -0
- data/test/lib/facets/core/module/test_rename_method.rb +31 -0
- data/test/lib/facets/core/module/test_revisal.rb +35 -0
- data/test/lib/facets/core/module/test_shadow_method.rb +30 -0
- data/test/lib/facets/core/module/test_sort_on.rb +42 -0
- data/test/lib/facets/core/module/test_this.rb +31 -0
- data/test/lib/facets/core/module/test_wrap.rb +30 -0
- data/test/lib/facets/core/module/test_wrap_method.rb +30 -0
- data/test/lib/facets/core/nilclass/test_blank.rb +26 -0
- data/test/lib/facets/core/nilclass/test_empty.rb +26 -0
- data/test/lib/facets/core/nilclass/test_include.rb +26 -0
- data/test/lib/facets/core/nilclass/test_op_fetch.rb +28 -0
- data/test/lib/facets/core/nilclass/test_size.rb +30 -0
- data/test/lib/facets/core/nilclass/test_to_h.rb +26 -0
- data/test/lib/facets/core/numeric/test_approx.rb +29 -0
- data/test/lib/facets/core/numeric/test_ceil_multiple.rb +31 -0
- data/test/lib/facets/core/numeric/test_distance.rb +28 -0
- data/test/lib/facets/core/numeric/test_succ.rb +40 -0
- data/test/lib/facets/core/numeric/test_to_b.rb +27 -0
- data/test/lib/facets/core/ostruct/test___update__.rb +45 -0
- data/test/lib/facets/core/ostruct/test_instance_delegate.rb +34 -0
- data/test/lib/facets/core/ostruct/test_op_fetch.rb +33 -0
- data/test/lib/facets/core/proc/test_compose.rb +29 -0
- data/test/lib/facets/core/proc/test_op_mul.rb +34 -0
- data/test/lib/facets/core/proc/test_to_method.rb +44 -0
- data/test/lib/facets/core/range/test_to_r.rb +27 -0
- data/test/lib/facets/core/range/test_to_range.rb +27 -0
- data/test/lib/facets/core/range/test_umbrella.rb +34 -0
- data/test/lib/facets/core/range/test_within.rb +29 -0
- data/test/lib/facets/core/regexp/test_arity.rb +33 -0
- data/test/lib/facets/core/regexp/test_to_re.rb +27 -0
- data/test/lib/facets/core/regexp/test_to_regexp.rb +27 -0
- data/test/lib/facets/core/string/self/test_interpolate.rb +27 -0
- data/test/lib/facets/core/string/self/test_patterns.rb +28 -0
- data/test/lib/facets/core/string/self/test_rand_letter.rb +26 -0
- data/test/lib/facets/core/string/test_align_center.rb +34 -0
- data/test/lib/facets/core/string/test_at_rand.rb +35 -0
- data/test/lib/facets/core/string/test_basename.rb +41 -0
- data/test/lib/facets/core/string/test_blank.rb +27 -0
- data/test/lib/facets/core/string/test_bracket.rb +49 -0
- data/test/lib/facets/core/string/test_camelcase.rb +39 -0
- data/test/lib/facets/core/string/test_camelize.rb +26 -0
- data/test/lib/facets/core/string/test_capitalize_all.rb +26 -0
- data/test/lib/facets/core/string/test_capitalized.rb +26 -0
- data/test/lib/facets/core/string/test_chars.rb +27 -0
- data/test/lib/facets/core/string/test_cleave.rb +43 -0
- data/test/lib/facets/core/string/test_cmp.rb +30 -0
- data/test/lib/facets/core/string/test_demodulize.rb +38 -0
- data/test/lib/facets/core/string/test_divide.rb +29 -0
- data/test/lib/facets/core/string/test_downcase.rb +26 -0
- data/test/lib/facets/core/string/test_dresner.rb +32 -0
- data/test/lib/facets/core/string/test_each_char.rb +29 -0
- data/test/lib/facets/core/string/test_each_word.rb +29 -0
- data/test/lib/facets/core/string/test_first.rb +43 -0
- data/test/lib/facets/core/string/test_fold.rb +34 -0
- data/test/lib/facets/core/string/test_humanize.rb +26 -0
- data/test/lib/facets/core/string/test_indent.rb +40 -0
- data/test/lib/facets/core/string/test_index_all.rb +26 -0
- data/test/lib/facets/core/string/test_last.rb +46 -0
- data/test/lib/facets/core/string/test_line_wrap.rb +27 -0
- data/test/lib/facets/core/string/test_lines.rb +26 -0
- data/test/lib/facets/core/string/test_lowercase.rb +26 -0
- data/test/lib/facets/core/string/test_margin.rb +117 -0
- data/test/lib/facets/core/string/test_methodize.rb +27 -0
- data/test/lib/facets/core/string/test_modulize.rb +29 -0
- data/test/lib/facets/core/string/test_mscan.rb +30 -0
- data/test/lib/facets/core/string/test_natcmp.rb +30 -0
- data/test/lib/facets/core/string/test_nchar.rb +29 -0
- data/test/lib/facets/core/string/test_pathize.rb +29 -0
- data/test/lib/facets/core/string/test_pop.rb +47 -0
- data/test/lib/facets/core/string/test_pot.rb +39 -0
- data/test/lib/facets/core/string/test_push.rb +40 -0
- data/test/lib/facets/core/string/test_quote.rb +49 -0
- data/test/lib/facets/core/string/test_rand_byte.rb +35 -0
- data/test/lib/facets/core/string/test_rand_index.rb +26 -0
- data/test/lib/facets/core/string/test_range.rb +27 -0
- data/test/lib/facets/core/string/test_range_all.rb +27 -0
- data/test/lib/facets/core/string/test_range_of_line.rb +28 -0
- data/test/lib/facets/core/string/test_regesc.rb +28 -0
- data/test/lib/facets/core/string/test_shatter.rb +29 -0
- data/test/lib/facets/core/string/test_shift.rb +40 -0
- data/test/lib/facets/core/string/test_shuffle.rb +27 -0
- data/test/lib/facets/core/string/test_similarity.rb +26 -0
- data/test/lib/facets/core/string/test_singular.rb +86 -0
- data/test/lib/facets/core/string/test_soundex.rb +41 -0
- data/test/lib/facets/core/string/test_succ.rb +29 -0
- data/test/lib/facets/core/string/test_to_a.rb +27 -0
- data/test/lib/facets/core/string/test_to_b.rb +41 -0
- data/test/lib/facets/core/string/test_to_const.rb +28 -0
- data/test/lib/facets/core/string/test_to_date.rb +30 -0
- data/test/lib/facets/core/string/test_to_proc.rb +33 -0
- data/test/lib/facets/core/string/test_to_re.rb +28 -0
- data/test/lib/facets/core/string/test_to_time.rb +30 -0
- data/test/lib/facets/core/string/test_unix_crypt.rb +30 -0
- data/test/lib/facets/core/string/test_unpack.rb +34 -0
- data/test/lib/facets/core/string/test_unshift.rb +39 -0
- data/test/lib/facets/core/string/test_upcase.rb +30 -0
- data/test/lib/facets/core/string/test_whitespace.rb +27 -0
- data/test/lib/facets/core/string/test_word_filter.rb +34 -0
- data/test/lib/facets/core/string/test_word_wrap.rb +51 -0
- data/test/lib/facets/core/string/test_words.rb +37 -0
- data/test/lib/facets/core/symbol/test_camelcase.rb +26 -0
- data/test/lib/facets/core/symbol/test_camelize.rb +27 -0
- data/test/lib/facets/core/symbol/test_capitalize.rb +26 -0
- data/test/lib/facets/core/symbol/test_capitalized.rb +27 -0
- data/test/lib/facets/core/symbol/test_downcase.rb +27 -0
- data/test/lib/facets/core/symbol/test_not.rb +29 -0
- data/test/lib/facets/core/symbol/test_pad.rb +27 -0
- data/test/lib/facets/core/symbol/test_succ.rb +28 -0
- data/test/lib/facets/core/symbol/test_to_const.rb +28 -0
- data/test/lib/facets/core/symbol/test_to_proc.rb +33 -0
- data/test/lib/facets/core/symbol/test_to_str.rb +28 -0
- data/test/lib/facets/core/symbol/test_underscore.rb +26 -0
- data/test/lib/facets/core/symbol/test_upcase.rb +27 -0
- data/test/lib/facets/core/time/test_change.rb +33 -0
- data/test/lib/facets/core/time/test_elapse.rb +27 -0
- data/test/lib/facets/core/time/test_stamp.rb +39 -0
- data/test/lib/facets/core/time/test_to_date.rb +31 -0
- data/test/lib/facets/core/time/test_to_s.rb +31 -0
- data/test/lib/facets/core/time/test_to_time.rb +31 -0
- data/test/lib/facets/more/test_ann.rb +112 -0
- data/test/lib/facets/more/test_ann_attr.rb +39 -0
- data/test/lib/facets/more/test_ansicode.rb +36 -0
- data/test/lib/facets/more/test_arguments.rb +83 -0
- data/test/lib/facets/more/test_association.rb +51 -0
- data/test/lib/facets/more/test_autoarray.rb +32 -0
- data/test/lib/facets/more/test_basicobject.rb +67 -0
- data/test/lib/facets/more/test_bbcode.rb +34 -0
- data/test/lib/facets/more/test_binaryreader.rb +64 -0
- data/test/lib/facets/more/test_bitmask.rb +47 -0
- data/test/lib/facets/more/test_buildingblock.rb +47 -0
- data/test/lib/facets/more/test_bytes.rb +84 -0
- data/test/lib/facets/more/test_classmethods.rb +69 -0
- data/test/lib/facets/more/test_command.rb +69 -0
- data/test/lib/facets/more/test_coroutine.rb +60 -0
- data/test/lib/facets/more/test_crypt.rb +46 -0
- data/test/lib/facets/more/test_cut.rb +198 -0
- data/test/lib/facets/more/test_dependency.rb +82 -0
- data/test/lib/facets/more/test_dictionary.rb +107 -0
- data/test/lib/facets/more/test_elementor.rb +52 -0
- data/test/lib/facets/more/test_enumerablepass.rb +86 -0
- data/test/lib/facets/more/test_floatstring.rb +36 -0
- data/test/lib/facets/more/test_functor.rb +39 -0
- data/test/lib/facets/more/test_htmlbuilder.rb +38 -0
- data/test/lib/facets/more/test_htmlfilter.rb +86 -0
- data/test/lib/facets/more/test_infinity.rb +50 -0
- data/test/lib/facets/more/test_inheritor.rb +155 -0
- data/test/lib/facets/more/test_instance_intercept.rb +50 -0
- data/test/lib/facets/more/test_interval.rb +119 -0
- data/test/lib/facets/more/test_json.rb +232 -0
- data/test/lib/facets/more/test_linkedlist.rb +53 -0
- data/test/lib/facets/more/test_lisp.rb +47 -0
- data/test/lib/facets/more/test_lisp_format.rb +37 -0
- data/test/lib/facets/more/test_lrucache.rb +25 -0
- data/test/lib/facets/more/test_mathconstants.rb +18 -0
- data/test/lib/facets/more/test_methodfilter.rb +45 -0
- data/test/lib/facets/more/test_methodprobe.rb +53 -0
- data/test/lib/facets/more/test_multipliers.rb +114 -0
- data/test/lib/facets/more/test_multiton.rb +199 -0
- data/test/lib/facets/more/test_nackclass.rb +45 -0
- data/test/lib/facets/more/test_nilcomparable.rb +47 -0
- data/test/lib/facets/more/test_opencascade.rb +75 -0
- data/test/lib/facets/more/test_openhash.rb +126 -0
- data/test/lib/facets/more/test_openobject.rb +126 -0
- data/test/lib/facets/more/test_overload.rb +54 -0
- data/test/lib/facets/more/test_paramix.rb +100 -0
- data/test/lib/facets/more/test_pqueue.rb +39 -0
- data/test/lib/facets/more/test_preinitialize.rb +49 -0
- data/test/lib/facets/more/test_promoteself.rb +45 -0
- data/test/lib/facets/more/test_recorder.rb +44 -0
- data/test/lib/facets/more/test_snapshot.rb +34 -0
- data/test/lib/facets/more/test_statichash.rb +31 -0
- data/test/lib/facets/more/test_syncarray.rb +28 -0
- data/test/lib/facets/more/test_synchash.rb +28 -0
- data/test/lib/facets/more/test_tagiterator.rb +93 -0
- data/test/lib/facets/more/test_timer.rb +66 -0
- data/test/lib/facets/more/test_times.rb +103 -0
- data/test/lib/facets/more/test_tuple.rb +64 -0
- data/test/lib/facets/more/test_typecast.rb +68 -0
- data/test/lib/facets/more/test_uninheritable.rb +42 -0
- data/test/lib/facets/more/test_units.rb +111 -0
- data/test/lib/facets/more/test_xmlbuilder.rb +54 -0
- data/test/lib/facets/more/test_xmlhelper.rb +40 -0
- data/test/lib/facets/more/test_xoxo.rb +288 -0
- data/test/lib/facets/more/test_yamlstruct.rb +37 -0
- data/test/lib/facets/yore/enumerable/test_cross.rb +44 -0
- data/test/lib/facets/yore/kernel/test_require_facet.rb +27 -0
- data/test/lib/facets/yore/module/test_namespace.rb +33 -0
- data/test/lib/facets/yore/test_annattr.rb +39 -0
- data/test/lib/facets/yore/test_annotation.rb +318 -0
- metadata +589 -9
- data/lib/facet/dir/self/multiglob_recurse.rb +0 -1
- data/lib/facet/dir/self/multiglob_sum.rb +0 -1
- data/lib/facets/core/dir/self/multiglob_sum.rb +0 -42
data/{doc/COPYING → COPYING}
RENAMED
|
File without changes
|
data/PROJECT
CHANGED
|
@@ -26,29 +26,36 @@ rubyforge:
|
|
|
26
26
|
package : Facets
|
|
27
27
|
|
|
28
28
|
scm: darcs
|
|
29
|
-
changelog: doc/
|
|
29
|
+
changelog : doc/ChangeLog
|
|
30
|
+
stamp : VERSION
|
|
30
31
|
|
|
31
|
-
distribute: [ -doc/rdoc, -test/lib ]
|
|
32
|
+
#distribute: [ -doc/rdoc, -test/lib ]
|
|
32
33
|
|
|
33
34
|
package: [ gem, tgz ]
|
|
34
35
|
|
|
36
|
+
notes:
|
|
37
|
+
labels: [ TODO, FIXME, CREDIT ]
|
|
38
|
+
|
|
35
39
|
rdoc:
|
|
36
40
|
template : jamis
|
|
37
41
|
options : ['--all', '--inline-source']
|
|
38
42
|
|
|
39
43
|
mail:
|
|
40
|
-
mail_to
|
|
41
|
-
mail_from
|
|
42
|
-
domain
|
|
43
|
-
server
|
|
44
|
-
port
|
|
45
|
-
account
|
|
44
|
+
mail_to : transfire@gmail.com #ruby-talk@ruby-lang.org
|
|
45
|
+
mail_from : transfire@gmail.com
|
|
46
|
+
domain : facets.rubyforge.org
|
|
47
|
+
server : smtp.gmail.com
|
|
48
|
+
port : 25 #587
|
|
49
|
+
account : transfire@gmail.com
|
|
46
50
|
login_type : login #cram_md5 #plain
|
|
47
|
-
secure
|
|
51
|
+
secure : true
|
|
48
52
|
|
|
49
|
-
|
|
53
|
+
announce:
|
|
54
|
+
memo : 'doc/LATEST'
|
|
50
55
|
|
|
51
|
-
|
|
56
|
+
test:
|
|
57
|
+
extract : 'lib/facets/**/*.rb'
|
|
52
58
|
|
|
59
|
+
manifest: MANIFEST
|
|
53
60
|
archive: ~/trans/ruby/ARCHIVE
|
|
54
61
|
|
data/README
CHANGED
|
@@ -32,7 +32,7 @@ The collection PER COLLECTION is licensed as follows:
|
|
|
32
32
|
Ruby Facets
|
|
33
33
|
Copyright (c) 2004-2006 Thomas Sawyer
|
|
34
34
|
|
|
35
|
-
Distributed under the terms of the Ruby
|
|
35
|
+
Distributed under the terms of the Ruby license.
|
|
36
36
|
|
|
37
37
|
The Ruby license is a dual license that also provides for use of the GPL.
|
|
38
38
|
Complete texts of both licenses accompany this document (see doc/COPYING).
|
|
@@ -54,7 +54,7 @@ Complete texts of both licenses accompany this document (see doc/COPYING).
|
|
|
54
54
|
Acknowledgments and Copyrights for particular snippets of borrowed code
|
|
55
55
|
are given in their respective source. All licenses are either compatible
|
|
56
56
|
with the Ruby license (namely the GPL) or the original author has given
|
|
57
|
-
permission for inclusion of their code under such lincense
|
|
57
|
+
permission for inclusion of their code under such lincense.
|
|
58
58
|
|
|
59
59
|
|
|
60
60
|
== Mission
|
|
@@ -287,10 +287,10 @@ already included or simply have a patch, they too are more than welcome.
|
|
|
287
287
|
We want Ruby Facets to be of the highest quality.
|
|
288
288
|
|
|
289
289
|
|
|
290
|
-
==
|
|
290
|
+
== Authors
|
|
291
291
|
|
|
292
292
|
This collection was put together by, and largely written by Thomas Sawyer
|
|
293
|
-
(aka Trans
|
|
293
|
+
(aka Trans). He can be reached via email at transfire at gmail.com.
|
|
294
294
|
|
|
295
295
|
Some parts of this collection were written and/or inspired by other
|
|
296
296
|
persons. Fortunately nearly all were copyrighted under the same open
|
|
@@ -299,17 +299,11 @@ copyright notice with the source code.
|
|
|
299
299
|
|
|
300
300
|
Any code file not specifically labelled shall fall under the Ruby License.
|
|
301
301
|
|
|
302
|
-
In all cases, I have made every effort to give credit where credit is due.
|
|
303
|
-
|
|
302
|
+
In all cases, I have made every effort to give credit where credit is due.
|
|
303
|
+
You will find these copyrights, thanks and acknowledgements embedded in the
|
|
304
|
+
source code, and an unobtrusive "Author(s)" section is given in the RDocs.
|
|
304
305
|
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
* Thomas Sawyer
|
|
308
|
-
* George Moschovitis
|
|
309
|
-
* Peter Vanbroekhoven
|
|
310
|
-
* Florian Gross
|
|
311
|
-
|
|
312
|
-
See the AUTHORS file for a list of all other contributing Rubyists.
|
|
306
|
+
Also see the AUTHORS file for a list of all contributing Rubyists.
|
|
313
307
|
|
|
314
308
|
If anyone is missing from the list, please let me know and
|
|
315
309
|
I will correct right away. Thanks.
|
data/Rakefile
CHANGED
|
@@ -2,11 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# Facets Rakefile
|
|
4
4
|
|
|
5
|
-
require '
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
#require 'project/project'
|
|
9
|
-
#project = Project.load
|
|
5
|
+
require 'autorake'
|
|
10
6
|
|
|
11
7
|
#
|
|
12
8
|
# Redirect, extact tests and run tests
|
|
@@ -25,7 +21,7 @@ LIBDIR = 'lib'
|
|
|
25
21
|
REDIR = 'facet'
|
|
26
22
|
SRCDIR = 'facets'
|
|
27
23
|
|
|
28
|
-
desc "
|
|
24
|
+
desc "Create redirection facet/ lib"
|
|
29
25
|
task :redirect do
|
|
30
26
|
count = 0
|
|
31
27
|
dest = File.join( LIBDIR, REDIR )
|
|
@@ -106,7 +102,7 @@ end
|
|
|
106
102
|
|
|
107
103
|
MTHPATH = "lib/facets/core"
|
|
108
104
|
|
|
109
|
-
desc "
|
|
105
|
+
desc "Output core method list"
|
|
110
106
|
task :list do
|
|
111
107
|
index_methods
|
|
112
108
|
puts method_list_outline
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
1.8.
|
|
1
|
+
1.8.20 rc (2007-02-06)
|
data/doc/AUTHORS
CHANGED
|
@@ -23,20 +23,25 @@
|
|
|
23
23
|
* Michael Granger
|
|
24
24
|
* Florian Gross
|
|
25
25
|
* Sean O'Halpin
|
|
26
|
-
* Thomas-Ivo Heinen
|
|
27
26
|
* David Heinemeier Hansson
|
|
27
|
+
* Thomas-Ivo Heinen
|
|
28
|
+
* Dave Hoover
|
|
28
29
|
* Ara T. Howard
|
|
29
30
|
* MenTaLguY
|
|
30
31
|
* Mohammad Khan
|
|
32
|
+
* Richard Laugesen
|
|
31
33
|
* Derek Lewis
|
|
32
34
|
* Jan Molic
|
|
33
35
|
* George Moschovitis
|
|
34
36
|
* Michael Neumann
|
|
37
|
+
* Tim Pease
|
|
35
38
|
* Jonas Pfenniger
|
|
39
|
+
* Ryan Platte
|
|
36
40
|
* Thomas Sawyer
|
|
37
41
|
* Daniel Schierbeck
|
|
38
42
|
* Gavin Sinclair
|
|
39
43
|
* Tilo Sloboda
|
|
44
|
+
* Phil Tomson
|
|
40
45
|
* Peter Vanbroekhoven
|
|
41
46
|
* Jim Weirich
|
|
42
47
|
* Jeff Wood
|
|
@@ -1,3 +1,99 @@
|
|
|
1
|
+
Tue Feb 6 13:37:23 EST 2007 Trans <transfire@gmail.com>
|
|
2
|
+
* removed #own from base list in facets.rb (really need a standard for "singleton class")
|
|
3
|
+
|
|
4
|
+
Tue Feb 6 13:36:34 EST 2007 Trans <transfire@gmail.com>
|
|
5
|
+
* minor adjustments to uploadutils
|
|
6
|
+
|
|
7
|
+
Tue Feb 6 13:35:54 EST 2007 Trans <transfire@gmail.com>
|
|
8
|
+
* fixed bug in aspects.rb that would not handle args of wrapped method
|
|
9
|
+
|
|
10
|
+
Tue Feb 6 13:35:23 EST 2007 Trans <transfire@gmail.com>
|
|
11
|
+
* Symbol#to_s optimization, had to remove freeze
|
|
12
|
+
|
|
13
|
+
Tue Feb 6 13:34:16 EST 2007 Trans <transfire@gmail.com>
|
|
14
|
+
* updates to fileutils/stage (stage worth keeping?)
|
|
15
|
+
|
|
16
|
+
Tue Feb 6 13:32:53 EST 2007 Trans <transfire@gmail.com>
|
|
17
|
+
* update to credits
|
|
18
|
+
|
|
19
|
+
Tue Feb 6 13:13:51 EST 2007 Trans <transfire@gmail.com>
|
|
20
|
+
* fix bug in kernel/ask, returns more than one character
|
|
21
|
+
|
|
22
|
+
Tue Feb 6 13:12:39 EST 2007 Trans <transfire@gmail.com>
|
|
23
|
+
* cleanup of enumerbale/graph (no effective change)
|
|
24
|
+
|
|
25
|
+
Tue Feb 6 13:10:58 EST 2007 Trans <transfire@gmail.com>
|
|
26
|
+
* new super fast enumerable/cart by Thomas Hafner (replaces #cross)
|
|
27
|
+
|
|
28
|
+
Tue Feb 6 13:08:48 EST 2007 Trans <transfire@gmail.com>
|
|
29
|
+
* improved multiglob rountines (accept '+' and '-' prefixes)
|
|
30
|
+
|
|
31
|
+
Tue Feb 6 10:02:31 EST 2007 Trans <transfire@gmail.com>
|
|
32
|
+
* No longer will track project file via scm until it settles
|
|
33
|
+
|
|
34
|
+
Mon Feb 5 08:23:54 EST 2007 Trans <transfire@gmail.com>
|
|
35
|
+
* fixed bug in attr_tester, thanks Dov!
|
|
36
|
+
|
|
37
|
+
Tue Jan 30 11:48:34 EST 2007 Trans <transfire@gmail.com>
|
|
38
|
+
* added weekdays to times.rb thanks to Ryan Platte and Dave Hoover
|
|
39
|
+
|
|
40
|
+
Tue Jan 30 11:47:40 EST 2007 Trans <transfire@gmail.com>
|
|
41
|
+
* improvements to dictionary.rb (no longer a subclass of Hash) thanks Jan!
|
|
42
|
+
|
|
43
|
+
Tue Jan 30 11:43:38 EST 2007 Trans <transfire@gmail.com>
|
|
44
|
+
* re-replace openhash with openobject
|
|
45
|
+
|
|
46
|
+
Tue Jan 30 11:43:03 EST 2007 Trans <transfire@gmail.com>
|
|
47
|
+
* improvements to ann.rb and ann_attr.rb. works, yea!
|
|
48
|
+
|
|
49
|
+
Tue Jan 30 11:42:34 EST 2007 Trans <transfire@gmail.com>
|
|
50
|
+
* fixed bug in string/singular.rb
|
|
51
|
+
|
|
52
|
+
Tue Jan 30 11:41:29 EST 2007 Trans <transfire@gmail.com>
|
|
53
|
+
* changed enumerable/cross into enumerable/cart and cartesian_product
|
|
54
|
+
|
|
55
|
+
Tue Jan 30 11:40:04 EST 2007 Trans <transfire@gmail.com>
|
|
56
|
+
* openobject returns (openhash was a bad name, thanks george)
|
|
57
|
+
|
|
58
|
+
Tue Jan 30 11:38:57 EST 2007 Trans <transfire@gmail.com>
|
|
59
|
+
* moved enumerable/cross to enumerable/cart (cartesian_product)
|
|
60
|
+
|
|
61
|
+
Wed Jan 24 17:49:59 EST 2007 Trans <transfire@gmail.com>
|
|
62
|
+
tagged 1.8
|
|
63
|
+
|
|
64
|
+
Wed Jan 24 17:25:52 EST 2007 Trans <transfire@gmail.com>
|
|
65
|
+
* added buildingblock.rb, replaced builderobject.rb
|
|
66
|
+
|
|
67
|
+
Wed Jan 24 17:22:54 EST 2007 Trans <transfire@gmail.com>
|
|
68
|
+
* adjust require for "yored" files
|
|
69
|
+
|
|
70
|
+
Wed Jan 24 17:22:20 EST 2007 Trans <transfire@gmail.com>
|
|
71
|
+
* HtmlBuilder and XMLBuilder aer now based on BuildingBlock
|
|
72
|
+
|
|
73
|
+
Wed Jan 24 17:21:23 EST 2007 Trans <transfire@gmail.com>
|
|
74
|
+
* bug fix for command.rb
|
|
75
|
+
|
|
76
|
+
Wed Jan 24 17:20:13 EST 2007 Trans <transfire@gmail.com>
|
|
77
|
+
* minor improvements to basic object (object_self to access kernel methods)
|
|
78
|
+
|
|
79
|
+
Wed Jan 24 17:19:08 EST 2007 Trans <transfire@gmail.com>
|
|
80
|
+
* ostuct adjustment, use #instance_delegate to get underneth the open access
|
|
81
|
+
|
|
82
|
+
Wed Jan 24 17:18:21 EST 2007 Trans <transfire@gmail.com>
|
|
83
|
+
* module/include_as is now based on module/namespace (thanks Pit!)
|
|
84
|
+
|
|
85
|
+
Wed Jan 24 17:17:04 EST 2007 Trans <transfire@gmail.com>
|
|
86
|
+
* minor adjustments to methods for (class<<self;self;end)
|
|
87
|
+
|
|
88
|
+
Wed Jan 24 17:16:25 EST 2007 Trans <transfire@gmail.com>
|
|
89
|
+
* fixed enumerable/partition_by
|
|
90
|
+
|
|
91
|
+
Wed Jan 24 17:15:49 EST 2007 Trans <transfire@gmail.com>
|
|
92
|
+
* further updates to project info file (need to stop versioning this)
|
|
93
|
+
|
|
94
|
+
Wed Jan 24 17:14:34 EST 2007 Trans <transfire@gmail.com>
|
|
95
|
+
* deprecated (yored) builderobject.rb (poor implementation)
|
|
96
|
+
|
|
1
97
|
Tue Jan 23 18:30:14 EST 2007 Trans <transfire@gmail.com>
|
|
2
98
|
* added hash/insert; like store but only if key isn't already present
|
|
3
99
|
|
data/doc/{HISTORY.1 → History}
RENAMED
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require 'facets/core/array/pad.rb'
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require 'facets/core/dir/self/multiglob_r.rb'
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require 'facets/core/dir/self/multiglob_with_default.rb'
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require 'facets/core/string/capitalize_all.rb'
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require 'facets/core/string/cleave.rb'
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# CREDIT Richard Laugesen
|
|
2
|
+
|
|
3
|
+
class Array
|
|
4
|
+
|
|
5
|
+
# Pad an array with a given <tt>value</tt> upto a given <tt>length</tt>.
|
|
6
|
+
#
|
|
7
|
+
# [0,1,2].pad(6,"a") #=> [0,1,2,"a","a","a"]
|
|
8
|
+
#
|
|
9
|
+
# If <tt>length</tt> is a negative number padding will be added
|
|
10
|
+
# to the beginning of the array.
|
|
11
|
+
#
|
|
12
|
+
# [0,1,2].pad(-6,"a") #=> ["a","a","a",0,1,2]
|
|
13
|
+
|
|
14
|
+
def pad(len, val=nil)
|
|
15
|
+
return dup if self.size >= len.abs
|
|
16
|
+
if len < 0
|
|
17
|
+
Array.new((len+size).abs,val) + self
|
|
18
|
+
else
|
|
19
|
+
self + Array.new(len-size,val)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# Like #pad but changes the array in place.
|
|
24
|
+
#
|
|
25
|
+
# a = [0,1,2]
|
|
26
|
+
# a.pad!(6,"x")
|
|
27
|
+
# a #=> [0,1,2,"x","x","x"]
|
|
28
|
+
|
|
29
|
+
def pad!(len, val=nil)
|
|
30
|
+
return self if self.size >= len.abs
|
|
31
|
+
if len < 0
|
|
32
|
+
replace Array.new((len+size).abs,val) + self
|
|
33
|
+
else
|
|
34
|
+
concat Array.new(len-size,val)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
=begin test
|
|
42
|
+
|
|
43
|
+
require 'test/unit'
|
|
44
|
+
|
|
45
|
+
class TestPad < Test::Unit::TestCase
|
|
46
|
+
|
|
47
|
+
def test_pad
|
|
48
|
+
r = [0,1,2,3].pad(7,"x")
|
|
49
|
+
x = [0,1,2,3,"x","x","x"]
|
|
50
|
+
assert_equal(x,r)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def test_pad!
|
|
54
|
+
a = [0,1,2,3]
|
|
55
|
+
r = a.pad!(6,"y")
|
|
56
|
+
x = [0,1,2,3,"y","y"]
|
|
57
|
+
assert_equal(x,a)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def test_pad_negative
|
|
61
|
+
r = [0,1,2,3].pad(-7,"n")
|
|
62
|
+
x = ["n","n","n",0,1,2,3]
|
|
63
|
+
assert_equal(x,r)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def test_pad_negative!
|
|
67
|
+
a = [0,1,2,3]
|
|
68
|
+
r = a.pad!(-6,"q")
|
|
69
|
+
x = ["q","q",0,1,2,3]
|
|
70
|
+
assert_equal(x,a)
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
=end
|
|
76
|
+
|
|
@@ -1,32 +1,110 @@
|
|
|
1
|
+
# = multiglob.rb
|
|
2
|
+
#
|
|
3
|
+
# CREDIT Tom Sawyer
|
|
1
4
|
|
|
2
5
|
# Like +glob+ but can take multiple patterns.
|
|
3
6
|
#
|
|
4
7
|
# Dir.multiglob( '*.rb', '*.py' )
|
|
5
8
|
#
|
|
6
|
-
#
|
|
9
|
+
# Rather then constants for options multiglob accepts a trailing options
|
|
10
|
+
# hash of symbol keys.
|
|
11
|
+
#
|
|
12
|
+
# :noescape File::FNM_NOESCAPE
|
|
13
|
+
# :casefold File::FNM_CASEFOLD
|
|
14
|
+
# :pathname File::FNM_PATHNAME
|
|
15
|
+
# :dotmatch File::FNM_DOTMATCH
|
|
16
|
+
# :strict File::FNM_PATHNAME && File::FNM_DOTMATCH
|
|
17
|
+
#
|
|
18
|
+
# It also has an option for recurse.
|
|
19
|
+
#
|
|
20
|
+
# :recurse Recurively include contents of directories.
|
|
21
|
+
#
|
|
22
|
+
# For example
|
|
23
|
+
#
|
|
24
|
+
# Dir.multiglob( '*', :recurse => true )
|
|
25
|
+
#
|
|
26
|
+
# would have the same result as
|
|
27
|
+
#
|
|
28
|
+
# Dir.multiglob('**/*')
|
|
29
|
+
#
|
|
30
|
+
# Multiglob also accepts '+' and '-' prefixes. Any entry that begins with a '-'
|
|
31
|
+
# is treated as an exclusion glob and will be removed from the final result.
|
|
32
|
+
# For example, to collect all files in the current directory, less ruby scripts:
|
|
33
|
+
#
|
|
34
|
+
# Dir.multiglob( '*', '-*.rb' )
|
|
35
|
+
#
|
|
36
|
+
# This is very useful in collecting files as specificed by a configuration
|
|
37
|
+
# parameter.
|
|
7
38
|
|
|
8
39
|
def Dir.multiglob( *patterns )
|
|
40
|
+
options = (Hash === patterns.last ? patterns.pop : {})
|
|
41
|
+
|
|
42
|
+
bitflags = 0
|
|
43
|
+
bitflags |= File::FNM_NOESCAPE if options[:noescape]
|
|
44
|
+
bitflags |= File::FNM_CASEFOLD if options[:casefold]
|
|
45
|
+
bitflags |= File::FNM_PATHNAME if options[:pathname] or options[:strict]
|
|
46
|
+
bitflags |= File::FNM_DOTMATCH if options[:dotmatch] or options[:strict]
|
|
47
|
+
|
|
9
48
|
patterns = [patterns].flatten.compact
|
|
10
|
-
|
|
49
|
+
|
|
50
|
+
patterns_include = patterns.select{ |f| f !~ /^[-]/ }
|
|
51
|
+
patterns_exclude = patterns.select{ |f| f =~ /^[-]/ }
|
|
52
|
+
|
|
53
|
+
patterns_include.collect!{ |f| f =~ /^[+]/ ? f[1..-1] : f }
|
|
54
|
+
patterns_exclude.collect!{ |f| f =~ /^[-]/ ? f[1..-1] : f }
|
|
55
|
+
|
|
56
|
+
if options[:recurse]
|
|
57
|
+
patterns_include += patterns_include.collect{ |f| File.join(f, '**', '*') }
|
|
58
|
+
patterns_exclude += patterns_exclude.collect{ |f| File.join(f, '**', '*') }
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
files = []
|
|
62
|
+
files += patterns_include.collect{ |pattern| Dir.glob(pattern, bitflags) }.flatten.uniq
|
|
63
|
+
files -= patterns_exclude.collect{ |pattern| Dir.glob(pattern, bitflags) }.flatten.uniq
|
|
64
|
+
|
|
65
|
+
return files
|
|
11
66
|
end
|
|
12
67
|
|
|
13
68
|
# The same as +multiglob+, but recusively includes directories.
|
|
14
69
|
#
|
|
15
|
-
# Dir.
|
|
70
|
+
# Dir.multiglob_r( 'folder' )
|
|
16
71
|
#
|
|
17
72
|
# is equivalent to
|
|
18
73
|
#
|
|
74
|
+
# Dir.multiglob( 'folder', :recurse=>true )
|
|
75
|
+
#
|
|
76
|
+
# The effect of which is
|
|
77
|
+
#
|
|
19
78
|
# Dir.multiglob( 'folder', 'folder/**/*' )
|
|
79
|
+
|
|
80
|
+
def Dir.multiglob_r( *patterns )
|
|
81
|
+
options = (Hash === patterns.last ? patterns.pop : {})
|
|
82
|
+
options[:recurse] = true
|
|
83
|
+
patterns << options
|
|
84
|
+
multiglob(*patterns)
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
# This is just like multiglob but handles a base pattern such that
|
|
88
|
+
# if the +patterns+ list starts with a '+' or '-' entry, then the base
|
|
89
|
+
# will be included in the result, otherwise it will be omitted.
|
|
20
90
|
#
|
|
21
|
-
#
|
|
91
|
+
# Dir.multiglob_with_default('*.yaml', '-*.rb') #=> [ 'foo.yaml' ]
|
|
92
|
+
# Dir.multiglob_with_default('*.yaml', '+*.rb') #=> [ 'foo.yaml', 'foo.rb' ]
|
|
93
|
+
# Dir.multiglob_with_default('*.yaml', '*.rb') #=> [ 'foo.rb' ]
|
|
94
|
+
#
|
|
95
|
+
# This is useful when a configuration option needs to supply a file list
|
|
96
|
+
# that may include files, exclude files or append files to a default list.
|
|
22
97
|
|
|
23
|
-
def Dir.
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
98
|
+
def Dir.multiglob_with_default(default, *patterns)
|
|
99
|
+
default = [default].flatten.compact
|
|
100
|
+
patterns = patterns.flatten.compact
|
|
101
|
+
|
|
102
|
+
if patterns.empty?
|
|
103
|
+
patterns = default
|
|
104
|
+
elsif patterns.first =~ /^[+-]/
|
|
105
|
+
patterns = default + patterns
|
|
30
106
|
end
|
|
31
|
-
|
|
107
|
+
|
|
108
|
+
multiglob(*patterns)
|
|
32
109
|
end
|
|
110
|
+
|