facets 2.4.5 → 2.5.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 +6 -2
- data/CHANGES +46 -52
- data/MANIFEST +680 -642
- data/README +3 -10
- data/RELEASE +82 -36
- data/VERSION +1 -1
- data/doc/archive/{changelog-0.rdoc → CHANGELOG-0.10.30} +0 -0
- data/doc/archive/{changelog-1.rdoc → CHANGELOG-1.8.54} +0 -0
- data/doc/archive/CHANGELOG-2.4.5 +1654 -0
- data/doc/{news → archive}/RELEASE-2.0.5 +0 -0
- data/doc/{news → archive}/RELEASE-2.1.0 +0 -0
- data/doc/{news → archive}/RELEASE-2.1.1 +0 -0
- data/doc/{news → archive}/RELEASE-2.1.2 +0 -0
- data/doc/{news → archive}/RELEASE-2.1.3 +0 -0
- data/doc/{news → archive}/RELEASE-2.2.0 +0 -0
- data/doc/{news → archive}/RELEASE-2.2.1 +0 -0
- data/doc/{news → archive}/RELEASE-2.3.0 +0 -0
- data/doc/{news → archive}/RELEASE-2.4.0 +0 -0
- data/doc/{news → archive}/RELEASE-2.4.1 +0 -0
- data/doc/{news → archive}/RELEASE-2.4.2 +0 -0
- data/doc/{news → archive}/RELEASE-2.4.3 +0 -0
- data/doc/{news → archive}/RELEASE-2.4.4 +0 -0
- data/doc/archive/RELEASE-2.4.5 +37 -0
- data/doc/{book/history.rdoc → guide/notes.rd} +62 -4
- data/doc/log/basic_stats/index.html +39 -0
- data/doc/log/bstats/stats.html +39 -0
- data/doc/log/changelog.html +141 -0
- data/doc/log/changelog.txt +1609 -0
- data/doc/log/stats.html +25 -0
- data/doc/log/testlog.txt +278 -0
- data/doc/rdoc/core/classes/Array.html +158 -147
- data/doc/rdoc/core/classes/Binding.html +54 -54
- data/doc/rdoc/core/classes/Class.html +59 -57
- data/doc/rdoc/core/classes/Comparable.html +67 -76
- data/doc/rdoc/core/classes/Dir.html +47 -47
- data/doc/rdoc/core/classes/Enumerable.html +232 -192
- data/doc/rdoc/core/classes/Exception.html +15 -16
- data/doc/rdoc/core/classes/File.html +128 -85
- data/doc/rdoc/core/classes/FileTest.html +7 -7
- data/doc/rdoc/core/classes/Float.html +16 -14
- data/doc/rdoc/core/classes/Functor.html +12 -12
- data/doc/rdoc/core/classes/Hash.html +490 -319
- data/doc/rdoc/core/classes/Indexable.html +110 -110
- data/doc/rdoc/core/classes/InstanceVariables.html +44 -44
- data/doc/rdoc/core/classes/Integer.html +122 -116
- data/doc/rdoc/core/classes/Kernel.html +415 -401
- data/doc/rdoc/core/classes/Lazy/Promise.html +1 -1
- data/doc/rdoc/core/classes/MatchData.html +24 -21
- data/doc/rdoc/core/classes/Module.html +230 -229
- data/doc/rdoc/core/classes/NilClass.html +28 -26
- data/doc/rdoc/core/classes/Numeric.html +30 -30
- data/doc/rdoc/core/classes/Object.html +8 -8
- data/doc/rdoc/core/classes/{Friend.html → ObjectSpace.html} +25 -48
- data/doc/rdoc/core/classes/Proc.html +29 -27
- data/doc/rdoc/core/classes/Range.html +17 -15
- data/doc/rdoc/core/classes/Regexp.html +17 -17
- data/doc/rdoc/core/classes/Stackable.html +31 -31
- data/doc/rdoc/core/classes/String.html +445 -401
- data/doc/rdoc/{more/classes/CLI/NoOptionError.html → core/classes/Struct.html} +24 -21
- data/doc/rdoc/core/classes/Symbol.html +73 -65
- data/doc/rdoc/core/classes/Time.html +87 -86
- data/doc/rdoc/core/classes/TrueClass.html +8 -8
- data/doc/rdoc/core/classes/UnboundMethod.html +17 -16
- data/doc/rdoc/core/created.rid +1 -1
- data/doc/rdoc/core/files/README.html +10 -16
- data/doc/rdoc/core/files/lib/core/facets/array/combination_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/array/conjoin_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/array/delete_rb.html +10 -1
- data/doc/rdoc/core/files/lib/core/facets/array/delete_unless_rb.html +92 -0
- data/doc/rdoc/core/files/lib/core/facets/array/delete_values_rb.html +92 -0
- data/doc/rdoc/core/files/lib/core/facets/array/index_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/array/indexable_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/array/merge_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/array/only_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/array/pad_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/array/permutation_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/array/product_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/array/rotate_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/array/select_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/array/splice_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/array/stackable_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/binding/caller_rb.html +2 -2
- data/doc/rdoc/core/files/lib/core/facets/binding/callstack_rb.html +96 -0
- data/doc/rdoc/core/files/lib/core/facets/binding/defined_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/bitmask_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/class/cattr_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/class/descendents_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/class/prepend_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/class/to_proc_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/comparable/at_least_rb.html +96 -0
- data/doc/rdoc/core/files/lib/core/facets/comparable/at_most_rb.html +96 -0
- data/doc/rdoc/core/files/lib/core/facets/comparable/bound_rb.html +5 -1
- data/doc/rdoc/core/files/lib/core/facets/comparable/cap_rb.html +92 -0
- data/doc/rdoc/core/files/lib/core/facets/comparable/clip_rb.html +92 -0
- data/doc/rdoc/core/files/lib/core/facets/comparable/cmp_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/comparable/comparable_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/dir/ascend_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/dir/multiglob_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/dir/recurse_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/enumerable/accumulate_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/enumerable/cluster_by_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/enumerable/collect_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/enumerable/commonality_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/enumerable/count_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/enumerable/divide_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/enumerable/duplicates_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/enumerable/each_by_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/enumerable/entropy_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/enumerable/frequency_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/enumerable/graph_rb.html +96 -0
- data/doc/rdoc/core/files/lib/core/facets/enumerable/group_by_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/enumerable/inject_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/enumerable/map_send_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/enumerable/mash_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/enumerable/mode_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/enumerable/modulate_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/enumerable/none_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/enumerable/occur_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/enumerable/one_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/enumerable/probability_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/enumerable/sum_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/enumerable/take_rb.html +92 -0
- data/doc/rdoc/core/files/lib/core/facets/enumerable/uniq_by_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/exception/detail_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/exception/suppress_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/file/append_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/file/create_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/file/null_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/file/read_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/file/rewrite_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/file/rootname_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/file/split_all_rb.html +92 -0
- data/doc/rdoc/core/files/lib/core/facets/file/split_root_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/file/write_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/file/writelines_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/filetest/root_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/hash/alias_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/hash/autonew_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/hash/collate_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/hash/delete_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/hash/insert_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/hash/inverse_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/hash/join_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/hash/keys_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/hash/op_add_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/hash/op_and_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/hash/op_mul_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/hash/op_or_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/hash/op_push_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/hash/op_sub_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/hash/rekey_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/hash/replace_each_rb.html +92 -0
- data/doc/rdoc/core/files/lib/core/facets/hash/select_rb.html +1 -1
- data/doc/rdoc/{more/files/lib/more → core/files/lib/core}/facets/hash/stringify_keys_rb.html +1 -1
- data/doc/rdoc/{more/files/lib/more → core/files/lib/core}/facets/hash/symbolize_keys_rb.html +2 -2
- data/doc/rdoc/core/files/lib/core/facets/hash/to_options_rb.html +96 -0
- data/doc/rdoc/core/files/lib/core/facets/hash/to_struct_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/hash/traverse_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/hash/update_each_rb.html +92 -0
- data/doc/rdoc/core/files/lib/core/facets/hash/update_keys_rb.html +92 -0
- data/doc/rdoc/core/files/lib/core/facets/hash/update_rb.html +8 -1
- data/doc/rdoc/core/files/lib/core/facets/hash/update_values_rb.html +92 -0
- data/doc/rdoc/core/files/lib/core/facets/hash/weave_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/hash/zipnew_rb.html +1 -5
- data/doc/rdoc/core/files/lib/core/facets/integer/factorial_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/integer/multiple_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/integer/odd_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/kernel/__here___rb.html +92 -0
- data/doc/rdoc/core/files/lib/core/facets/kernel/as_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/kernel/ask_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/kernel/attr_singleton_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/kernel/callstack_rb.html +92 -0
- data/doc/rdoc/core/files/lib/core/facets/kernel/complete_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/kernel/constant_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/kernel/d_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/kernel/demo_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/kernel/ergo_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/kernel/instance_class_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/kernel/instance_variables_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/kernel/not_nil_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/kernel/object_send_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/kernel/p_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/kernel/populate_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/kernel/qua_class_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/kernel/resc_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/kernel/respond_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/kernel/returning_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/kernel/silence_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/kernel/try_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/matchdata/match_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/matchdata/matchset_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/metaid_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/module/abstract_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/module/alias_accessor_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/module/alias_method_chain_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/module/alias_module_function_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/module/ancestor_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/module/basename_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/module/conflict_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/module/include_function_module_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/module/instance_methods_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/module/is_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/module/methodize_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/module/modspace_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/module/module_load_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/module/nesting_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/module/op_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/module/prepend_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/module/redefine_method_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/module/rename_method_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/module/revise_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/module/spacename_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/module/wrap_method_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/nilclass/to_f_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/numeric/approx_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/numeric/distance_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/numeric/round_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/objectspace/classes_rb.html +92 -0
- data/doc/rdoc/{more/files/lib/more/facets/dictionarymatcher_rb.html → core/files/lib/core/facets/objectspace_rb.html} +4 -4
- data/doc/rdoc/core/files/lib/core/facets/proc/bind_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/proc/compose_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/proc/to_method_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/proc/update_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/range/combine_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/range/overlap_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/range/within_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/regexp/arity_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/string/align_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/string/bracket_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/string/camelcase_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/string/capitalized_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/string/chars_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/string/chomp_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/string/cleave_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/string/compress_lines_rb.html +92 -0
- data/doc/rdoc/core/files/lib/core/facets/string/contains_rb.html +92 -0
- data/doc/rdoc/core/files/lib/core/facets/string/divide_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/string/expand_tab_rb.html +92 -0
- data/doc/rdoc/core/files/lib/core/facets/string/fold_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/string/indent_rb.html +92 -0
- data/doc/rdoc/core/files/lib/core/facets/string/interpolate_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/string/line_wrap_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/string/lines_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/string/margin_rb.html +92 -0
- data/doc/rdoc/core/files/lib/core/facets/string/methodize_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/string/mscan_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/string/natcmp_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/string/nchar_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/string/op_sub_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/string/outdent_rb.html +96 -0
- data/doc/rdoc/core/files/lib/core/facets/string/range_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/string/rewrite_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/string/shatter_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/string/snakecase_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/string/splice_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/string/start_with_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/string/tab_rb.html +8 -1
- data/doc/rdoc/core/files/lib/core/facets/string/tabto_rb.html +96 -0
- data/doc/rdoc/core/files/lib/core/facets/string/titlecase_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/string/to_re_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/string/word_wrap_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/struct/attributes_rb.html +92 -0
- data/doc/rdoc/{more/files/lib/more/facets/bytes_rb.html → core/files/lib/core/facets/struct_rb.html} +4 -4
- data/doc/rdoc/core/files/lib/core/facets/symbol/chomp_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/symbol/generate_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/symbol/not_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/symbol/succ_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/symbol/to_proc_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/time/advance_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/time/change_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/time/elapse_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/time/hence_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/time/stamp_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/to_hash_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/unboundmethod/arguments_rb.html +1 -1
- data/doc/rdoc/core/files/lib/core/facets/unboundmethod/name_rb.html +1 -1
- data/doc/rdoc/core/fr_class_index.html +2 -1
- data/doc/rdoc/core/fr_file_index.html +30 -1
- data/doc/rdoc/core/fr_method_index.html +430 -423
- data/doc/rdoc/lore/classes/Date.html +6 -5
- data/doc/rdoc/{more/classes/CLI/Command/UniversalOptions.html → lore/classes/Enumerable.html} +7 -9
- data/doc/rdoc/lore/classes/Enumerable/Enumerator.html +147 -0
- data/doc/rdoc/lore/classes/OpenStruct.html +13 -15
- data/doc/rdoc/lore/created.rid +1 -1
- data/doc/rdoc/lore/files/README.html +10 -16
- data/doc/rdoc/lore/files/lib/lore/facets/date_rb.html +1 -1
- data/doc/rdoc/lore/files/lib/lore/facets/enumerator_rb.html +111 -0
- data/doc/rdoc/lore/files/lib/lore/facets/ostruct_rb.html +1 -1
- data/doc/rdoc/lore/fr_class_index.html +2 -0
- data/doc/rdoc/lore/fr_file_index.html +1 -0
- data/doc/rdoc/lore/fr_method_index.html +13 -12
- data/doc/rdoc/more/classes/ANSICode.html +66 -66
- data/doc/rdoc/more/classes/Advisable.html +37 -37
- data/doc/rdoc/more/classes/Advisable/Method.html +20 -20
- data/doc/rdoc/more/classes/Archive/Tar/Minitar.html +27 -27
- data/doc/rdoc/more/classes/Archive/Tar/Minitar/Input.html +28 -28
- data/doc/rdoc/more/classes/Archive/Tar/Minitar/Output.html +19 -19
- data/doc/rdoc/more/classes/Archive/Tar/Minitar/Reader.html +31 -31
- data/doc/rdoc/more/classes/Archive/Tar/Minitar/Writer.html +33 -33
- data/doc/rdoc/more/classes/Argvector.html +76 -76
- data/doc/rdoc/more/classes/Association.html +28 -28
- data/doc/rdoc/more/classes/Association/Kernel.html +8 -8
- data/doc/rdoc/more/classes/Autoarray.html +12 -12
- data/doc/rdoc/more/classes/BBCode.html +34 -34
- data/doc/rdoc/more/classes/BaseX.html +16 -16
- data/doc/rdoc/more/classes/BiCrypt.html +67 -67
- data/doc/rdoc/more/classes/BinReadable.html +85 -85
- data/doc/rdoc/more/classes/BinReadable/ByteOrder.html +25 -25
- data/doc/rdoc/more/classes/Binding.html +8 -8
- data/doc/rdoc/more/classes/BlankSlate.html +5 -5
- data/doc/rdoc/more/classes/Buildable.html +4 -4
- data/doc/rdoc/more/classes/BuildingBlock.html +32 -32
- data/doc/rdoc/more/classes/Capsule.html +41 -41
- data/doc/rdoc/more/classes/Cloneable.html +4 -4
- data/doc/rdoc/more/classes/ConsoleUtils.html +22 -22
- data/doc/rdoc/more/classes/Coroutine.html +28 -28
- data/doc/rdoc/more/classes/Crypt.html +16 -16
- data/doc/rdoc/more/classes/CssFilter.html +45 -45
- data/doc/rdoc/more/classes/CssTree.html +8 -8
- data/doc/rdoc/more/classes/Dictionary.html +228 -228
- data/doc/rdoc/more/classes/Downloader.html +56 -56
- data/doc/rdoc/more/classes/Duration.html +369 -445
- data/doc/rdoc/more/classes/Duration/Numeric.html +389 -0
- data/doc/rdoc/more/classes/{CLI/NoCommandError.html → Duration/Time.html} +30 -17
- data/doc/rdoc/more/classes/Enumerable.html +114 -51
- data/doc/rdoc/more/classes/Enumerable/Elementor.html +16 -16
- data/doc/rdoc/more/classes/Enumerable/Enumerator.html +4 -4
- data/doc/rdoc/more/classes/Enumerable/Filterable.html +246 -0
- data/doc/rdoc/more/classes/EnumerablePass.html +17 -17
- data/doc/rdoc/more/classes/{RecursiveDependency.html → Enumerator.html} +7 -4
- data/doc/rdoc/more/classes/{CLI.html → Enumerator/Filter.html} +22 -26
- data/doc/rdoc/more/classes/Equatable.html +16 -16
- data/doc/rdoc/more/classes/Expirable.html +17 -17
- data/doc/rdoc/more/classes/FileList.html +125 -125
- data/doc/rdoc/more/classes/Fileable.html +14 -14
- data/doc/rdoc/more/classes/Fileable/DSL.html +41 -41
- data/doc/rdoc/more/classes/Hash.html +16 -162
- data/doc/rdoc/more/classes/Hash2Xml.html +4 -4
- data/doc/rdoc/more/classes/HtmlFilter.html +9 -9
- data/doc/rdoc/more/classes/IORedirect.html +19 -19
- data/doc/rdoc/more/classes/InfinityClass.html +36 -36
- data/doc/rdoc/more/classes/InfinityClass/Numeric.html +23 -23
- data/doc/rdoc/more/classes/Ini.html +37 -37
- data/doc/rdoc/more/classes/Instantiable.html +9 -9
- data/doc/rdoc/more/classes/Instantize.html +8 -8
- data/doc/rdoc/more/classes/Interval.html +187 -187
- data/doc/rdoc/more/classes/It.html +12 -12
- data/doc/rdoc/more/classes/LRUCache.html +38 -38
- data/doc/rdoc/more/classes/LinkedList.html +68 -68
- data/doc/rdoc/more/classes/LinkedList/Node.html +4 -4
- data/doc/rdoc/more/classes/{DictionaryMatcher.html → Matcher.html} +66 -68
- data/doc/rdoc/more/classes/{DictionaryMatcher → Matcher}/MatchData.html +8 -8
- data/doc/rdoc/more/classes/{CacheDecorator.html → Memoizer.html} +64 -46
- data/doc/rdoc/more/classes/Module.html +182 -361
- data/doc/rdoc/more/classes/Multiton.html +12 -12
- data/doc/rdoc/more/classes/Multiton/MetaMethods.html +28 -28
- data/doc/rdoc/more/classes/Net/SMTP.html +8 -8
- data/doc/rdoc/more/classes/NullClass.html +24 -24
- data/doc/rdoc/more/classes/Numeric/Multipliers.html +456 -0
- data/doc/rdoc/more/classes/ObjectReflection.html +12 -12
- data/doc/rdoc/more/classes/OpEsc.html +8 -7
- data/doc/rdoc/more/classes/OpenCascade.html +4 -4
- data/doc/rdoc/more/classes/OpenCollection.html +8 -8
- data/doc/rdoc/more/classes/OpenHash.html +9 -9
- data/doc/rdoc/more/classes/{EventHook.html → OpenModule.html} +24 -63
- data/doc/rdoc/more/classes/OpenObject.html +95 -95
- data/doc/rdoc/more/classes/OpenStructable.html +326 -0
- data/doc/rdoc/more/classes/PQueue.html +84 -84
- data/doc/rdoc/more/classes/Paramix.html +11 -11
- data/doc/rdoc/more/classes/Paramix/Delegator.html +16 -16
- data/doc/rdoc/more/classes/PathList.html +8 -8
- data/doc/rdoc/more/classes/PathList/Finder.html +8 -8
- data/doc/rdoc/more/classes/Platform.html +46 -46
- data/doc/rdoc/more/classes/Pool.html +18 -18
- data/doc/rdoc/more/classes/Proc.html +9 -9
- data/doc/rdoc/more/classes/ProgressBar.html +52 -52
- data/doc/rdoc/more/classes/Prototype.html +28 -28
- data/doc/rdoc/more/classes/RWDelegator.html +16 -16
- data/doc/rdoc/more/classes/Random.html +5 -5
- data/doc/rdoc/more/classes/Random/Array.html +37 -37
- data/doc/rdoc/more/classes/Random/Hash.html +52 -52
- data/doc/rdoc/more/classes/Random/Object.html +4 -4
- data/doc/rdoc/more/classes/Random/String.html +34 -34
- data/doc/rdoc/more/classes/Random/String/Self.html +9 -9
- data/doc/rdoc/more/classes/Recorder.html +16 -16
- data/doc/rdoc/more/classes/Reference.html +19 -19
- data/doc/rdoc/more/classes/Registerable.html +13 -13
- data/doc/rdoc/more/classes/Semaphore.html +36 -36
- data/doc/rdoc/more/classes/Settings.html +28 -28
- data/doc/rdoc/more/classes/Settings/Setting.html +13 -13
- data/doc/rdoc/more/classes/Settings/SettingCollection.html +4 -4
- data/doc/rdoc/more/classes/SimpleStringIO.html +8 -8
- data/doc/rdoc/more/classes/Snapshot.html +16 -16
- data/doc/rdoc/more/classes/Snapshot/ValueHolder.html +12 -12
- data/doc/rdoc/more/classes/SparseArray.html +1397 -0
- data/doc/rdoc/more/classes/Stash.html +232 -0
- data/doc/rdoc/more/classes/String/Mask.html +72 -72
- data/doc/rdoc/more/classes/String/Words.html +49 -49
- data/doc/rdoc/more/classes/Struct.html +8 -8
- data/doc/rdoc/more/classes/SyncArray.html +4 -4
- data/doc/rdoc/more/classes/SyncHash.html +4 -4
- data/doc/rdoc/more/classes/SyncHash/Delegator.html +28 -28
- data/doc/rdoc/more/classes/SyncHash/Inheritor.html +28 -28
- data/doc/rdoc/more/classes/System.html +253 -253
- data/doc/rdoc/more/classes/Timer.html +48 -48
- data/doc/rdoc/more/classes/Timer/Dummy.html +9 -9
- data/doc/rdoc/more/classes/TracePoint.html +58 -58
- data/doc/rdoc/more/classes/Tuple.html +170 -170
- data/doc/rdoc/more/classes/TypeCast/Class.html +4 -4
- data/doc/rdoc/more/classes/TypeCast/Object.html +4 -4
- data/doc/rdoc/more/classes/Uninheritable.html +6 -6
- data/doc/rdoc/more/classes/VersionNumber.html +57 -57
- data/doc/rdoc/more/classes/XOXO.html +9 -9
- data/doc/rdoc/more/classes/ZipUtils.html +251 -118
- data/doc/rdoc/more/classes/ZipUtils/DryRun.html +203 -35
- data/doc/rdoc/more/classes/ZipUtils/NoWrite.html +203 -35
- data/doc/rdoc/more/classes/ZipUtils/Verbose.html +173 -35
- data/doc/rdoc/more/created.rid +1 -1
- data/doc/rdoc/more/files/README.html +10 -16
- data/doc/rdoc/more/files/lib/more/facets/attr_rb.html +1 -1
- data/doc/rdoc/more/files/lib/more/facets/buildable_rb.html +1 -1
- data/doc/rdoc/more/files/lib/more/facets/consoleutils_rb.html +1 -18
- data/doc/rdoc/more/files/lib/more/facets/dependency_rb.html +1 -1
- data/doc/rdoc/more/files/lib/more/facets/duration_rb.html +1 -41
- data/doc/rdoc/more/files/lib/more/facets/elementor_rb.html +2 -1
- data/doc/rdoc/more/files/lib/more/facets/enumerablepass_rb.html +2 -1
- data/doc/rdoc/more/files/lib/more/facets/{fileshell_rb.html → filter_rb.html} +6 -5
- data/doc/rdoc/more/files/lib/more/facets/inheritor_rb.html +3 -28
- data/doc/rdoc/more/files/lib/more/facets/iteration_rb.html +1 -1
- data/doc/rdoc/more/files/lib/more/facets/kernel/meta_rb.html +1 -1
- data/doc/rdoc/more/files/lib/more/facets/matcher_rb.html +97 -0
- data/doc/rdoc/more/files/lib/more/facets/memoize_rb.html +7 -4
- data/doc/rdoc/more/files/lib/more/facets/{cachedecorator_rb.html → memoizer_rb.html} +23 -49
- data/doc/rdoc/more/files/lib/more/facets/multipliers_rb.html +2 -18
- data/doc/rdoc/more/files/lib/more/facets/nilstatus_rb.html +1 -1
- data/doc/rdoc/{core/files/lib/core/facets/callstack_rb.html → more/files/lib/more/facets/openmodule_rb.html} +4 -4
- data/doc/rdoc/more/files/lib/more/facets/opesc_rb.html +1 -1
- data/doc/rdoc/more/files/lib/more/facets/ostructable_rb.html +92 -0
- data/doc/rdoc/more/files/lib/more/facets/pathlist_rb.html +1 -1
- data/doc/rdoc/more/files/lib/more/facets/snapshot_rb.html +2 -2
- data/doc/rdoc/more/files/lib/more/facets/sparse_array_rb.html +92 -0
- data/doc/rdoc/more/files/lib/more/facets/stash_rb.html +166 -0
- data/doc/rdoc/more/files/lib/more/facets/string/words_rb.html +1 -1
- data/doc/rdoc/more/files/lib/more/facets/succ_rb.html +1 -1
- data/doc/rdoc/more/files/lib/more/facets/thread_rb.html +1 -1
- data/doc/rdoc/more/files/lib/more/facets/ziputils_rb.html +6 -34
- data/doc/rdoc/more/fr_class_index.html +13 -17
- data/doc/rdoc/more/fr_file_index.html +7 -15
- data/doc/rdoc/more/fr_method_index.html +1079 -1003
- data/doc/rdoc/more/index.html +1 -1
- data/lib/core/facets/array/conjoin.rb +1 -1
- data/lib/core/facets/array/delete.rb +3 -60
- data/lib/core/facets/array/delete_unless.rb +15 -0
- data/lib/core/facets/array/delete_values.rb +50 -0
- data/lib/core/facets/array/index.rb +0 -26
- data/lib/core/facets/array/indexable.rb +2 -2
- data/lib/core/facets/array/merge.rb +1 -1
- data/lib/core/facets/array/only.rb +1 -2
- data/lib/core/facets/array/pad.rb +2 -2
- data/lib/core/facets/array/permutation.rb +1 -1
- data/lib/core/facets/array/product.rb +2 -2
- data/lib/core/facets/array/rotate.rb +2 -4
- data/lib/core/facets/array/select.rb +1 -1
- data/lib/core/facets/array/splice.rb +1 -1
- data/lib/core/facets/array/stackable.rb +2 -2
- data/lib/core/facets/binding/caller.rb +2 -7
- data/lib/core/facets/binding/callstack.rb +1 -0
- data/lib/core/facets/binding/defined.rb +0 -1
- data/lib/core/facets/bitmask.rb +6 -9
- data/lib/core/facets/class/cattr.rb +6 -9
- data/lib/core/facets/class/descendents.rb +0 -2
- data/lib/core/facets/class/prepend.rb +3 -4
- data/lib/core/facets/class/to_proc.rb +0 -20
- data/lib/core/facets/comparable/at_least.rb +1 -0
- data/lib/core/facets/comparable/at_most.rb +1 -0
- data/lib/core/facets/comparable/bound.rb +1 -65
- data/lib/core/facets/comparable/cap.rb +34 -0
- data/lib/core/facets/comparable/clip.rb +38 -0
- data/lib/core/facets/comparable/cmp.rb +3 -3
- data/lib/core/facets/comparable/comparable.rb +1 -1
- data/lib/core/facets/dir/ascend.rb +2 -5
- data/lib/core/facets/dir/multiglob.rb +0 -2
- data/lib/core/facets/dir/recurse.rb +1 -2
- data/lib/core/facets/enumerable/accumulate.rb +2 -0
- data/lib/core/facets/enumerable/cluster_by.rb +1 -1
- data/lib/core/facets/enumerable/collect.rb +2 -2
- data/lib/core/facets/enumerable/commonality.rb +1 -1
- data/lib/core/facets/enumerable/count.rb +1 -1
- data/lib/core/facets/enumerable/divide.rb +1 -1
- data/lib/core/facets/enumerable/duplicates.rb +2 -2
- data/lib/core/facets/enumerable/each_by.rb +1 -1
- data/lib/core/facets/enumerable/entropy.rb +2 -2
- data/lib/core/facets/enumerable/frequency.rb +1 -1
- data/lib/core/facets/enumerable/graph.rb +1 -0
- data/lib/core/facets/enumerable/group_by.rb +1 -1
- data/lib/core/facets/enumerable/inject.rb +2 -3
- data/lib/core/facets/enumerable/map_send.rb +15 -3
- data/lib/core/facets/enumerable/mash.rb +4 -5
- data/lib/core/facets/enumerable/mode.rb +1 -1
- data/lib/core/facets/enumerable/modulate.rb +2 -2
- data/lib/core/facets/enumerable/none.rb +1 -1
- data/lib/core/facets/enumerable/occur.rb +0 -2
- data/lib/core/facets/enumerable/one.rb +1 -1
- data/lib/core/facets/enumerable/probability.rb +1 -1
- data/lib/core/facets/enumerable/sum.rb +1 -1
- data/lib/core/facets/enumerable/take.rb +20 -0
- data/lib/core/facets/enumerable/uniq_by.rb +0 -2
- data/lib/core/facets/exception/detail.rb +1 -1
- data/lib/core/facets/exception/suppress.rb +1 -2
- data/lib/core/facets/file/append.rb +1 -1
- data/lib/core/facets/file/create.rb +1 -1
- data/lib/core/facets/file/null.rb +1 -1
- data/lib/core/facets/file/read.rb +3 -3
- data/lib/core/facets/file/rewrite.rb +1 -1
- data/lib/core/facets/file/rootname.rb +1 -1
- data/lib/core/facets/file/split_all.rb +19 -0
- data/lib/core/facets/file/split_root.rb +3 -0
- data/lib/core/facets/file/write.rb +1 -1
- data/lib/core/facets/file/writelines.rb +1 -2
- data/lib/core/facets/filetest/root.rb +1 -1
- data/lib/core/facets/hash/alias.rb +1 -1
- data/lib/core/facets/hash/autonew.rb +1 -17
- data/lib/core/facets/hash/collate.rb +1 -1
- data/lib/core/facets/hash/delete.rb +3 -3
- data/lib/core/facets/hash/insert.rb +1 -1
- data/lib/core/facets/hash/inverse.rb +1 -1
- data/lib/core/facets/hash/join.rb +1 -1
- data/lib/core/facets/hash/keys.rb +3 -3
- data/lib/core/facets/hash/op_add.rb +1 -1
- data/lib/core/facets/hash/op_and.rb +1 -1
- data/lib/core/facets/hash/op_mul.rb +1 -1
- data/lib/core/facets/hash/op_or.rb +1 -1
- data/lib/core/facets/hash/op_push.rb +1 -1
- data/lib/core/facets/hash/op_sub.rb +1 -1
- data/lib/core/facets/hash/rekey.rb +11 -7
- data/lib/core/facets/hash/replace_each.rb +16 -0
- data/lib/core/facets/hash/select.rb +1 -2
- data/lib/{more → core}/facets/hash/stringify_keys.rb +0 -0
- data/lib/core/facets/hash/symbolize_keys.rb +94 -0
- data/lib/core/facets/hash/to_options.rb +1 -0
- data/lib/core/facets/hash/to_struct.rb +1 -1
- data/lib/core/facets/hash/traverse.rb +2 -2
- data/lib/core/facets/hash/update.rb +5 -80
- data/lib/core/facets/hash/update_each.rb +18 -0
- data/lib/core/facets/hash/update_keys.rb +20 -0
- data/lib/core/facets/hash/update_values.rb +20 -0
- data/lib/core/facets/hash/weave.rb +1 -1
- data/lib/core/facets/hash/zipnew.rb +17 -1
- data/lib/core/facets/integer/factorial.rb +1 -1
- data/lib/core/facets/integer/multiple.rb +1 -1
- data/lib/core/facets/integer/odd.rb +2 -2
- data/lib/core/facets/kernel/__here__.rb +8 -0
- data/lib/core/facets/kernel/as.rb +2 -2
- data/lib/core/facets/kernel/attr_singleton.rb +5 -5
- data/lib/core/facets/{callstack.rb → kernel/callstack.rb} +1 -1
- data/lib/core/facets/kernel/complete.rb +1 -1
- data/lib/core/facets/kernel/constant.rb +1 -1
- data/lib/core/facets/kernel/d.rb +1 -5
- data/lib/core/facets/kernel/demo.rb +2 -2
- data/lib/core/facets/kernel/ergo.rb +2 -2
- data/lib/core/facets/kernel/instance_class.rb +1 -1
- data/lib/core/facets/kernel/instance_variables.rb +2 -4
- data/lib/core/facets/kernel/not_nil.rb +1 -1
- data/lib/core/facets/kernel/object_send.rb +1 -1
- data/lib/core/facets/kernel/p.rb +1 -1
- data/lib/core/facets/kernel/populate.rb +2 -2
- data/lib/core/facets/kernel/qua_class.rb +2 -2
- data/lib/core/facets/kernel/resc.rb +1 -1
- data/lib/core/facets/kernel/respond.rb +1 -1
- data/lib/core/facets/kernel/returning.rb +1 -1
- data/lib/core/facets/kernel/silence.rb +4 -4
- data/lib/core/facets/kernel/try.rb +5 -3
- data/lib/core/facets/matchdata/match.rb +1 -1
- data/lib/core/facets/matchdata/matchset.rb +2 -2
- data/lib/core/facets/metaid.rb +5 -5
- data/lib/core/facets/module/abstract.rb +1 -1
- data/lib/core/facets/module/alias_accessor.rb +3 -3
- data/lib/core/facets/module/alias_method_chain.rb +1 -2
- data/lib/core/facets/module/alias_module_function.rb +1 -1
- data/lib/core/facets/module/ancestor.rb +1 -1
- data/lib/core/facets/module/basename.rb +1 -1
- data/lib/core/facets/module/conflict.rb +1 -2
- data/lib/core/facets/module/include_function_module.rb +1 -1
- data/lib/core/facets/module/instance_methods.rb +4 -6
- data/lib/core/facets/module/is.rb +2 -2
- data/lib/core/facets/module/modspace.rb +1 -1
- data/lib/core/facets/module/module_load.rb +2 -2
- data/lib/core/facets/module/nesting.rb +1 -1
- data/lib/core/facets/module/op.rb +3 -6
- data/lib/core/facets/module/prepend.rb +1 -1
- data/lib/core/facets/module/redefine_method.rb +1 -1
- data/lib/core/facets/module/rename_method.rb +1 -1
- data/lib/core/facets/module/revise.rb +2 -2
- data/lib/core/facets/module/spacename.rb +1 -1
- data/lib/core/facets/module/wrap_method.rb +1 -1
- data/lib/core/facets/nilclass/to_f.rb +1 -1
- data/lib/core/facets/numeric/approx.rb +1 -1
- data/lib/core/facets/numeric/distance.rb +1 -1
- data/lib/core/facets/numeric/round.rb +3 -6
- data/lib/core/facets/objectspace.rb +6 -0
- data/lib/core/facets/objectspace/classes.rb +11 -0
- data/lib/core/facets/proc/bind.rb +1 -1
- data/lib/core/facets/proc/compose.rb +2 -2
- data/lib/core/facets/proc/to_method.rb +1 -1
- data/lib/core/facets/proc/update.rb +1 -1
- data/lib/core/facets/range/combine.rb +2 -2
- data/lib/core/facets/range/overlap.rb +1 -2
- data/lib/core/facets/range/within.rb +2 -4
- data/lib/core/facets/regexp/arity.rb +1 -1
- data/lib/core/facets/string/align.rb +3 -3
- data/lib/core/facets/string/bracket.rb +6 -6
- data/lib/core/facets/string/camelcase.rb +1 -1
- data/lib/core/facets/string/capitalized.rb +3 -3
- data/lib/core/facets/string/chars.rb +1 -1
- data/lib/core/facets/string/chomp.rb +2 -2
- data/lib/core/facets/string/cleave.rb +1 -1
- data/lib/core/facets/string/compress_lines.rb +17 -0
- data/lib/core/facets/string/contains.rb +7 -0
- data/lib/core/facets/string/divide.rb +1 -1
- data/lib/core/facets/string/expand_tab.rb +35 -0
- data/lib/core/facets/string/fold.rb +1 -1
- data/lib/core/facets/string/indent.rb +25 -0
- data/lib/core/facets/string/interpolate.rb +1 -1
- data/lib/core/facets/string/line_wrap.rb +1 -1
- data/lib/core/facets/string/lines.rb +1 -2
- data/lib/core/facets/string/margin.rb +30 -0
- data/lib/core/facets/string/methodize.rb +1 -1
- data/lib/core/facets/string/mscan.rb +1 -1
- data/lib/core/facets/string/natcmp.rb +1 -2
- data/lib/core/facets/string/nchar.rb +0 -2
- data/lib/core/facets/string/op_sub.rb +1 -1
- data/lib/core/facets/string/outdent.rb +1 -0
- data/lib/core/facets/string/range.rb +4 -5
- data/lib/core/facets/string/rewrite.rb +1 -1
- data/lib/core/facets/string/shatter.rb +1 -1
- data/lib/core/facets/string/snakecase.rb +1 -1
- data/lib/core/facets/string/splice.rb +2 -2
- data/lib/core/facets/string/start_with.rb +2 -4
- data/lib/core/facets/string/tab.rb +9 -92
- data/lib/core/facets/string/tabto.rb +19 -0
- data/lib/core/facets/string/titlecase.rb +1 -1
- data/lib/core/facets/string/to_re.rb +2 -2
- data/lib/core/facets/string/word_wrap.rb +2 -4
- data/lib/core/facets/struct.rb +6 -0
- data/lib/core/facets/struct/attributes.rb +11 -0
- data/lib/core/facets/symbol/chomp.rb +2 -2
- data/lib/core/facets/symbol/generate.rb +1 -1
- data/lib/core/facets/symbol/not.rb +2 -2
- data/lib/core/facets/symbol/succ.rb +1 -1
- data/lib/core/facets/symbol/to_proc.rb +2 -3
- data/lib/core/facets/time/advance.rb +2 -1
- data/lib/core/facets/time/elapse.rb +1 -1
- data/lib/core/facets/time/hence.rb +16 -13
- data/lib/core/facets/time/stamp.rb +2 -2
- data/lib/core/facets/to_hash.rb +1 -1
- data/lib/core/facets/unboundmethod/arguments.rb +1 -1
- data/lib/core/facets/unboundmethod/name.rb +1 -1
- data/lib/lore/facets/date.rb +2 -2
- data/lib/lore/facets/enumerator.rb +67 -0
- data/lib/lore/facets/ostruct.rb +3 -7
- data/lib/more/facets/attr.rb +10 -9
- data/lib/more/facets/consoleutils.rb +1 -15
- data/lib/more/facets/dependency.rb +1 -1
- data/lib/more/facets/duration.rb +271 -525
- data/lib/more/facets/filter.rb +121 -0
- data/lib/more/facets/inheritor.rb +37 -58
- data/lib/more/facets/iteration.rb +1 -1
- data/lib/more/facets/kernel/meta.rb +1 -1
- data/lib/more/facets/{dictionarymatcher.rb → matcher.rb} +15 -11
- data/lib/more/facets/memoize.rb +9 -12
- data/lib/more/facets/memoizer.rb +74 -0
- data/lib/more/facets/multipliers.rb +54 -66
- data/lib/more/facets/nilstatus.rb +3 -2
- data/lib/more/facets/openmodule.rb +15 -0
- data/lib/more/facets/opesc.rb +1 -1
- data/lib/more/facets/ostructable.rb +212 -0
- data/lib/more/facets/pathlist.rb +1 -0
- data/lib/more/facets/sparse_array.rb +809 -0
- data/lib/more/facets/stash.rb +66 -0
- data/lib/more/facets/string/words.rb +8 -11
- data/lib/more/facets/succ.rb +3 -3
- data/lib/more/facets/thread.rb +2 -2
- data/lib/more/facets/ziputils.rb +238 -97
- data/test/core/array/test_index.rb +17 -0
- data/test/core/class/test_cattr.rb +1 -1
- data/test/core/class/test_to_proc.rb +13 -0
- data/test/core/comparable/test_cap.rb +25 -0
- data/test/core/comparable/{test_bound.rb → test_clip.rb} +1 -20
- data/test/core/file/test_split_all.rb +32 -0
- data/test/core/hash/test_op_mul.rb +1 -1
- data/test/core/hash/test_op_push.rb +7 -0
- data/test/core/hash/test_replace_each.rb +14 -0
- data/test/core/hash/test_update_each.rb +13 -0
- data/test/core/hash/test_update_keys.rb +18 -0
- data/test/core/hash/test_update_values.rb +12 -0
- data/test/core/kernel/test_callstack.rb +1 -1
- data/test/core/string/test_indent.rb +13 -0
- data/test/core/string/test_margin.rb +100 -0
- data/test/core/string/test_outdent.rb +65 -0
- data/test/core/string/test_tab.rb +1 -162
- data/test/core/string/test_tabto.rb +13 -0
- data/test/{more → core}/test_metaid.rb +8 -8
- data/test/core/time/test_hence.rb +118 -4
- data/test/core/unboundmethod/test_name.rb +1 -1
- data/test/more/{test_arguments.rb → test_argvector.rb} +8 -12
- data/test/more/test_filter.rb +87 -0
- data/test/more/test_memoize.rb +11 -9
- data/test/more/test_sparsearray.rb +279 -0
- metadata +741 -725
- data/demo/bench/bench_load.rb +0 -56
- data/demo/bench/enumerable/bench_collect.rb +0 -84
- data/demo/bench/enumerable/bench_count.rb +0 -58
- data/demo/bench/general/bench_calls.rb +0 -74
- data/demo/bench/general/bench_includes.rb +0 -25
- data/demo/bench/general/bench_methods.rb +0 -17
- data/demo/bench/general/bench_pathname.rb +0 -24
- data/demo/bench/general/bench_range.rb +0 -64
- data/demo/bench/general/bench_return.rb +0 -56
- data/demo/bench/general/bench_yeild.rb +0 -75
- data/demo/bench/general/comment_loading/bench.rb +0 -46
- data/demo/bench/general/comment_loading/comments_begin.rb +0 -109
- data/demo/bench/general/comment_loading/comments_end.rb +0 -127
- data/demo/bench/general/comment_loading/comments_none.rb +0 -1
- data/demo/bench/general/comment_loading/comments_sharp.rb +0 -125
- data/demo/bench/integer/bench_factorial.rb +0 -31
- data/demo/sample/annotations/annotations1.rb +0 -22
- data/demo/sample/ansicolor/cdiff.rb +0 -20
- data/demo/sample/ansicolor/example.rb +0 -82
- data/doc/book/notes.rdoc +0 -9
- data/doc/rdoc/more/classes/BigDuration.html +0 -323
- data/doc/rdoc/more/classes/CLI/Arguments.html +0 -488
- data/doc/rdoc/more/classes/CLI/Command.html +0 -316
- data/doc/rdoc/more/classes/Chain.html +0 -206
- data/doc/rdoc/more/classes/FileShell.html +0 -743
- data/doc/rdoc/more/classes/TagIterator.html +0 -581
- data/doc/rdoc/more/classes/UploadUtils.html +0 -497
- data/doc/rdoc/more/classes/Weekdays.html +0 -218
- data/doc/rdoc/more/files/lib/more/facets/annotations_rb.html +0 -180
- data/doc/rdoc/more/files/lib/more/facets/arguments_rb.html +0 -142
- data/doc/rdoc/more/files/lib/more/facets/cattr_rb.html +0 -125
- data/doc/rdoc/more/files/lib/more/facets/chain_rb.html +0 -114
- data/doc/rdoc/more/files/lib/more/facets/command_rb.html +0 -170
- data/doc/rdoc/more/files/lib/more/facets/eventhook_rb.html +0 -141
- data/doc/rdoc/more/files/lib/more/facets/tagiterator_rb.html +0 -111
- data/doc/rdoc/more/files/lib/more/facets/times_rb.html +0 -163
- data/doc/rdoc/more/files/lib/more/facets/uploadutils_rb.html +0 -176
- data/lib/more/facets/annotations.rb +0 -302
- data/lib/more/facets/arguments.rb +0 -365
- data/lib/more/facets/bytes.rb +0 -175
- data/lib/more/facets/cachedecorator.rb +0 -117
- data/lib/more/facets/chain.rb +0 -58
- data/lib/more/facets/command.rb +0 -439
- data/lib/more/facets/eventhook.rb +0 -132
- data/lib/more/facets/fileshell.rb +0 -202
- data/lib/more/facets/hash/symbolize_keys.rb +0 -94
- data/lib/more/facets/tagiter.rb +0 -366
- data/lib/more/facets/times.rb +0 -431
- data/lib/more/facets/uploadutils.rb +0 -464
- data/test/core/hash/test_update.rb +0 -46
- data/test/more/test_annotations.rb +0 -120
- data/test/more/test_bytes.rb +0 -71
- data/test/more/test_command.rb +0 -69
- data/test/more/test_times.rb +0 -89
@@ -1,302 +0,0 @@
|
|
1
|
-
# = Annotation
|
2
|
-
#
|
3
|
-
# Annotations allows you to annontate objects, including methods with arbitrary
|
4
|
-
# "metadata". These annotations don't do anything in themselves. They are
|
5
|
-
# merely comments. But you can put them to use. For instance an attribute
|
6
|
-
# validator might check for an annotation called :valid and test against it.
|
7
|
-
#
|
8
|
-
# Annotation is an OpenObject, and is used across the board for keeping annotations.
|
9
|
-
#
|
10
|
-
# Annotation class serves for both simple and inherited cases depending on whether
|
11
|
-
# a base class is given.
|
12
|
-
#
|
13
|
-
# class X
|
14
|
-
# attr :a
|
15
|
-
# ann :@a, :valid => lambda{ |x| x.is_a?(Integer) }
|
16
|
-
#
|
17
|
-
# def validate
|
18
|
-
# instance_variables.each { |iv|
|
19
|
-
# if validator = self.class.ann(iv)[:valid]
|
20
|
-
# value = instance_variable_get(iv)
|
21
|
-
# unless validator.call(vale)
|
22
|
-
# raise "Invalid value #{value} for #{iv}"
|
23
|
-
# end
|
24
|
-
# end
|
25
|
-
# }
|
26
|
-
# end
|
27
|
-
#
|
28
|
-
# end
|
29
|
-
#
|
30
|
-
# == Authors
|
31
|
-
#
|
32
|
-
# * Thomas Sawyer
|
33
|
-
# * George Moschovitis
|
34
|
-
#
|
35
|
-
# == History
|
36
|
-
#
|
37
|
-
# * 2006-11-07 trans Created this ultra-concise version of annotations.
|
38
|
-
#
|
39
|
-
# == Todo
|
40
|
-
#
|
41
|
-
# * Might be nice to have a default object of annotation, eg. the next
|
42
|
-
# method defined, like how +desc+ annotates a rake +task+.
|
43
|
-
# * The ann(x).name notation is kind of nice. Would like to add that
|
44
|
-
# back-in if reasonable. Basically this require heritage to be an OpenObject
|
45
|
-
# rather than just a hash.
|
46
|
-
#
|
47
|
-
# == Copying
|
48
|
-
#
|
49
|
-
# Copyright (c) 2005 Thomas Sawyer, George Moschovitis
|
50
|
-
#
|
51
|
-
# Ruby License
|
52
|
-
#
|
53
|
-
# This module is free software. You may use, modify, and/or redistribute this
|
54
|
-
# software under the same terms as Ruby.
|
55
|
-
#
|
56
|
-
# This program is distributed in the hope that it will be useful, but WITHOUT
|
57
|
-
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
58
|
-
# FOR A PARTICULAR PURPOSE.
|
59
|
-
|
60
|
-
warn "Libary facets/annotations.rb will be deprecated and spun spun off as new project."
|
61
|
-
|
62
|
-
require 'facets/hash/to_h'
|
63
|
-
require 'facets/hash/rekey'
|
64
|
-
require 'facets/hash/op'
|
65
|
-
|
66
|
-
# = Annotation
|
67
|
-
#
|
68
|
-
# Annotations allows you to annontate objects, including methods with arbitrary
|
69
|
-
# "metadata". These annotations don't do anything in themselves. They are
|
70
|
-
# merely comments. But you can put them to use. For instance an attribute
|
71
|
-
# validator might check for an annotation called :valid and test against it.
|
72
|
-
#
|
73
|
-
# Annotation is an OpenObject, and is used across the board for keeping annotations.
|
74
|
-
#
|
75
|
-
# Annotation class serves for both simple and inherited cases depending on whether
|
76
|
-
# a base class is given.
|
77
|
-
#
|
78
|
-
# == Synopsis
|
79
|
-
#
|
80
|
-
# class X
|
81
|
-
# attr :a
|
82
|
-
# ann :@a, :valid => lambda{ |x| x.is_a?(Integer) }
|
83
|
-
#
|
84
|
-
# def validate
|
85
|
-
# instance_variables.each { |iv|
|
86
|
-
# if validator = self.class.ann(iv)[:valid]
|
87
|
-
# value = instance_variable_get(iv)
|
88
|
-
# unless validator.call(vale)
|
89
|
-
# raise "Invalid value #{value} for #{iv}"
|
90
|
-
# end
|
91
|
-
# end
|
92
|
-
# }
|
93
|
-
# end
|
94
|
-
#
|
95
|
-
# end
|
96
|
-
|
97
|
-
#--
|
98
|
-
# By using a global veriable rather the definining a class instance variable
|
99
|
-
# for each class/module, it is possible to quicky scan all annotations for the
|
100
|
-
# entire system. To do the same without this would require scanning through
|
101
|
-
# the ObjectSpace. (Still which is better?)
|
102
|
-
#
|
103
|
-
#$annotations = Hash.new { |h,k| h[k] = {} }
|
104
|
-
#++
|
105
|
-
|
106
|
-
class Module
|
107
|
-
|
108
|
-
def annotations
|
109
|
-
#$annotations[self]
|
110
|
-
@annotations ||= {}
|
111
|
-
end
|
112
|
-
|
113
|
-
def heritage(ref)
|
114
|
-
ref = ref.to_sym
|
115
|
-
ancestors.inject({}) { |memo, ancestor|
|
116
|
-
ancestor.annotations[ref] ||= {}
|
117
|
-
ancestor.annotations[ref] + memo
|
118
|
-
}
|
119
|
-
end
|
120
|
-
|
121
|
-
# Set or read annotations.
|
122
|
-
|
123
|
-
def ann( ref, keys_or_class=nil, keys=nil )
|
124
|
-
return heritage(ref) unless keys_or_class or keys
|
125
|
-
|
126
|
-
if Class === keys_or_class
|
127
|
-
keys ||= {}
|
128
|
-
keys[:class] = keys_or_class
|
129
|
-
else
|
130
|
-
keys = keys_or_class
|
131
|
-
end
|
132
|
-
|
133
|
-
if Hash === keys
|
134
|
-
ref = ref.to_sym
|
135
|
-
annotations[ref] ||= {}
|
136
|
-
annotations[ref].update(keys.rekey)
|
137
|
-
else
|
138
|
-
key = keys.to_sym
|
139
|
-
heritage(ref)[key]
|
140
|
-
end
|
141
|
-
end
|
142
|
-
|
143
|
-
# To change an annotation's value in place for a given class or module
|
144
|
-
# it first must be duplicated, otherwise the change may effect annotations
|
145
|
-
# in the class or module's ancestors.
|
146
|
-
|
147
|
-
def ann!( ref, keys_or_class=nil, keys=nil )
|
148
|
-
#return heritage(ref) unless keys_or_class or keys
|
149
|
-
return annotations[ref] unless keys_or_class or keys
|
150
|
-
|
151
|
-
if Class === keys_or_class
|
152
|
-
keys ||= {}
|
153
|
-
keys[:class] = keys_or_class
|
154
|
-
else
|
155
|
-
keys = keys_or_class
|
156
|
-
end
|
157
|
-
|
158
|
-
if Hash === keys
|
159
|
-
ref = ref.to_sym
|
160
|
-
annotations[ref] ||= {}
|
161
|
-
annotations[ref].update(keys.rekey)
|
162
|
-
else
|
163
|
-
key = keys.to_sym
|
164
|
-
annotations[ref][key] = heritage(ref)[key].dup
|
165
|
-
end
|
166
|
-
end
|
167
|
-
|
168
|
-
end
|
169
|
-
|
170
|
-
# TITLE
|
171
|
-
#
|
172
|
-
# Annotated Attributes
|
173
|
-
#
|
174
|
-
# DESCRIPTION:
|
175
|
-
#
|
176
|
-
# This framework modifies the attr_* methods to allow easy
|
177
|
-
# addition of annotations.
|
178
|
-
#
|
179
|
-
# COPYRIGHT:
|
180
|
-
#
|
181
|
-
# Copyright (c) 2005 Thomas Sawyer
|
182
|
-
#
|
183
|
-
# LICENSE:
|
184
|
-
#
|
185
|
-
# Ruby License
|
186
|
-
#
|
187
|
-
# This module is free software. You may use, modify, and/or redistribute this
|
188
|
-
# software under the same terms as Ruby.
|
189
|
-
#
|
190
|
-
# This program is distributed in the hope that it will be useful, but WITHOUT
|
191
|
-
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
192
|
-
# FOR A PARTICULAR PURPOSE.
|
193
|
-
#
|
194
|
-
# AUTHORS:
|
195
|
-
#
|
196
|
-
# - Thomas Sawyer
|
197
|
-
# - George Moschovitis
|
198
|
-
|
199
|
-
require 'facets/annotations.rb'
|
200
|
-
require 'facets/inheritor.rb'
|
201
|
-
|
202
|
-
# = Annotated Attributes
|
203
|
-
#
|
204
|
-
# This framework modifies the attr_* methods to allow easy addition of annotations.
|
205
|
-
# It the built in attribute methods (attr, attr_reader, attr_writer and attr_accessor),
|
206
|
-
# to allow annotations to added to them directly rather than requireing a separate
|
207
|
-
# #ann statement.
|
208
|
-
#
|
209
|
-
# class X
|
210
|
-
# attr :a, :valid => lambda{ |x| x.is_a?(Integer) }
|
211
|
-
# end
|
212
|
-
#
|
213
|
-
# See annotation.rb for more information.
|
214
|
-
#
|
215
|
-
# NOTE This library was designed to be backward compatible with the
|
216
|
-
# standard versions of the same methods.
|
217
|
-
|
218
|
-
class ::Module
|
219
|
-
|
220
|
-
inheritor :instance_attributes, [], :|
|
221
|
-
|
222
|
-
def attr( *args )
|
223
|
-
args.flatten!
|
224
|
-
case args.last
|
225
|
-
when TrueClass
|
226
|
-
args.pop
|
227
|
-
attr_accessor( *args )
|
228
|
-
when FalseClass
|
229
|
-
args.pop
|
230
|
-
attr_reader( *args )
|
231
|
-
else
|
232
|
-
attr_reader( *args )
|
233
|
-
end
|
234
|
-
end
|
235
|
-
|
236
|
-
alias :plain_reader :attr_reader
|
237
|
-
alias :plain_writer :attr_writer
|
238
|
-
alias :plain_accessor :attr_accessor
|
239
|
-
|
240
|
-
code = ''
|
241
|
-
|
242
|
-
[ :_reader, :_writer, :_accessor].each do |m|
|
243
|
-
|
244
|
-
code << %{
|
245
|
-
def attr#{m}(*args)
|
246
|
-
args.flatten!
|
247
|
-
|
248
|
-
harg={}; while args.last.is_a?(Hash)
|
249
|
-
harg.update(args.pop)
|
250
|
-
end
|
251
|
-
|
252
|
-
raise ArgumentError if args.empty? and harg.empty?
|
253
|
-
|
254
|
-
if args.empty? # hash mode
|
255
|
-
harg.each { |a,h| attr#{m}(a,h) }
|
256
|
-
else
|
257
|
-
klass = harg[:class] = args.pop if args.last.is_a?(Class)
|
258
|
-
|
259
|
-
args.each { |a|
|
260
|
-
plain#{m} a
|
261
|
-
a = a.to_sym
|
262
|
-
ann(a,harg)
|
263
|
-
}
|
264
|
-
instance_attributes!.concat( args ) #merge!
|
265
|
-
|
266
|
-
# Use this callback to customize for your needs.
|
267
|
-
if respond_to?(:attr_callback)
|
268
|
-
attr_callback(self, args, harg)
|
269
|
-
end
|
270
|
-
|
271
|
-
# return the names of the attributes created
|
272
|
-
return args
|
273
|
-
end
|
274
|
-
end
|
275
|
-
}
|
276
|
-
|
277
|
-
end
|
278
|
-
|
279
|
-
class_eval( code )
|
280
|
-
|
281
|
-
# TODO Should attribute alias be kept?
|
282
|
-
alias_method :attribute, :attr_accessor
|
283
|
-
|
284
|
-
# Return list of attributes that have a :class annotation.
|
285
|
-
#
|
286
|
-
# class MyClass
|
287
|
-
# attr_accessor :test
|
288
|
-
# attr_accessor :name, String, :doc => 'Hello'
|
289
|
-
# attr_accessor :age, Fixnum
|
290
|
-
# end
|
291
|
-
#
|
292
|
-
# MyClass.instance_attributes # => [:test, :name, :age, :body]
|
293
|
-
# MyClass.classified_attributes # => [:name, :age]
|
294
|
-
|
295
|
-
def classified_attributes
|
296
|
-
instance_attributes.find_all do |a|
|
297
|
-
self.ann(a, :class)
|
298
|
-
end
|
299
|
-
end
|
300
|
-
|
301
|
-
end
|
302
|
-
|
@@ -1,365 +0,0 @@
|
|
1
|
-
# = ArgVector
|
2
|
-
#
|
3
|
-
# == Synopsis
|
4
|
-
#
|
5
|
-
# ArgVector provides a very simple means of parsing
|
6
|
-
# command line arguments.
|
7
|
-
#
|
8
|
-
# Unlike other more complex libs this provides only
|
9
|
-
# the most basic and standard parsing functionality.
|
10
|
-
# In many cases that's all one really needs.
|
11
|
-
#
|
12
|
-
# Usage is straight foward. Simply instantiate the
|
13
|
-
# class and query it for the particular "views" of
|
14
|
-
# the command line you want.
|
15
|
-
#
|
16
|
-
# cargs = ArgVector.new("-a foo -b=2")
|
17
|
-
#
|
18
|
-
# cargs.parameters #=> [['foo'],{'a'=>true,'b'=>'2'}]
|
19
|
-
# cargs.flags #=> ['a']
|
20
|
-
# cargs.preoptions #=> {'a'=>true}
|
21
|
-
# cargs.preflags #=> ['a']
|
22
|
-
# cargs.subcommand #=> ['foo',{'b'=>'2'}]
|
23
|
-
#
|
24
|
-
# == Authors
|
25
|
-
#
|
26
|
-
# * Thomas Sawyer
|
27
|
-
#
|
28
|
-
# == Copying
|
29
|
-
#
|
30
|
-
# Copyright (c) 2006 Thomas Sawyer
|
31
|
-
#
|
32
|
-
# Ruby License
|
33
|
-
#
|
34
|
-
# This module is free software. You may use, modify, and/or
|
35
|
-
# redistribute this software under the same terms as Ruby.
|
36
|
-
#
|
37
|
-
# This program is distributed in the hope that it will be
|
38
|
-
# useful, but WITHOUT ANY WARRANTY; without even the implied
|
39
|
-
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
40
|
-
# PURPOSE.
|
41
|
-
|
42
|
-
warn 'please use argvector.rb for future versions'
|
43
|
-
|
44
|
-
require 'shellwords'
|
45
|
-
|
46
|
-
module CLI
|
47
|
-
|
48
|
-
# = CLI::Arguments
|
49
|
-
#
|
50
|
-
# CLI::Arguments provides a very simple means of parsing
|
51
|
-
# command line arguments.
|
52
|
-
#
|
53
|
-
# Unlike other more complex libs this provides only
|
54
|
-
# the most basic and standard parsing functionality.
|
55
|
-
# In many cases that's all one really needs.
|
56
|
-
#
|
57
|
-
# Usage is straight foward. Simply instantiate the
|
58
|
-
# class and query it for the particular "views" of
|
59
|
-
# the command line you want.
|
60
|
-
#
|
61
|
-
# cargs = CLI::Arguments.new("-a foo -b=2")
|
62
|
-
#
|
63
|
-
# cargs.parameters #=> [['foo'],{'a'=>true,'b'=>'2'}]
|
64
|
-
# cargs.flags #=> ['a']
|
65
|
-
# cargs.preoptions #=> {'a'=>true}
|
66
|
-
# cargs.preflags #=> ['a']
|
67
|
-
# cargs.subcommand #=> ['foo',{'b'=>'2'}]
|
68
|
-
#
|
69
|
-
class Arguments
|
70
|
-
|
71
|
-
def self.parameters(*args)
|
72
|
-
new.parameters(*args)
|
73
|
-
end
|
74
|
-
|
75
|
-
attr :line
|
76
|
-
attr :argv
|
77
|
-
attr :arity
|
78
|
-
#attr :opts
|
79
|
-
|
80
|
-
#alias :flags :options
|
81
|
-
|
82
|
-
# Takes the command line string (or array) and options.
|
83
|
-
# Options have flags and end with a hash of option arity.
|
84
|
-
#
|
85
|
-
def initialize(line=nil, arity=nil)
|
86
|
-
@line, @argv = parse_line(line)
|
87
|
-
@arity = parse_arity(arity||{})
|
88
|
-
parse
|
89
|
-
end
|
90
|
-
|
91
|
-
public
|
92
|
-
|
93
|
-
# Returns operand array.
|
94
|
-
|
95
|
-
def operands
|
96
|
-
@operands
|
97
|
-
end
|
98
|
-
|
99
|
-
# deprecate alias ?
|
100
|
-
alias arguments operands
|
101
|
-
|
102
|
-
# Returns options hash.
|
103
|
-
|
104
|
-
def options
|
105
|
-
@options
|
106
|
-
end
|
107
|
-
|
108
|
-
# Returns [operands, options], which is good for plugging
|
109
|
-
# directly into a method.
|
110
|
-
|
111
|
-
def parameters
|
112
|
-
return @operands, @options
|
113
|
-
end
|
114
|
-
|
115
|
-
# Return flags, which are true options.
|
116
|
-
|
117
|
-
def flags
|
118
|
-
f = []
|
119
|
-
@options.each do |k, v|
|
120
|
-
if TrueClass===v or FalseClass===v # not that it's ever false
|
121
|
-
f << k
|
122
|
-
end
|
123
|
-
end
|
124
|
-
return f
|
125
|
-
end
|
126
|
-
|
127
|
-
# Assumes the first operand is a "subcommand" and
|
128
|
-
# returns it and the argments following it as
|
129
|
-
# parameters.
|
130
|
-
|
131
|
-
def subcommand_with_parameters
|
132
|
-
opts, args = *parse_preoptions(argv)
|
133
|
-
cmd = args.shift
|
134
|
-
subargs = self.class.new(args, @arity)
|
135
|
-
return [cmd, *subargs.parameters]
|
136
|
-
end
|
137
|
-
|
138
|
-
alias subcommand subcommand_with_parameters
|
139
|
-
|
140
|
-
#
|
141
|
-
def subcommand_with_preoptions
|
142
|
-
pre, args = *parse_preoptions(argv)
|
143
|
-
cmd = args.shift
|
144
|
-
subargs = self.class.new(args, @arity)
|
145
|
-
args, opts = *subargs.parameters
|
146
|
-
return [cmd, args, pre.merge(opts)]
|
147
|
-
end
|
148
|
-
|
149
|
-
# Assumes the first operand is a "subcommand" and
|
150
|
-
# returns it and the argments following it as
|
151
|
-
# another Arguments object.
|
152
|
-
#
|
153
|
-
# TODO: This probably should be called 'subcommand'.
|
154
|
-
#
|
155
|
-
def subcommand_with_arguments
|
156
|
-
opts, args = *parse_preoptions(argv)
|
157
|
-
cmd = args.shift
|
158
|
-
subargs = self.class.new(args, @arity)
|
159
|
-
return cmd, subargs
|
160
|
-
end
|
161
|
-
|
162
|
-
# Returns a hash of options that occur before
|
163
|
-
# the first operand. This works well with
|
164
|
-
# subcommand to get the main command's options.
|
165
|
-
#
|
166
|
-
# line = "--trace stamp --file VERSION"
|
167
|
-
# cargs = CLI::Arguments.new(line)
|
168
|
-
# opts = cargs.preoptions
|
169
|
-
# opts #=> {"trace"=>true}
|
170
|
-
|
171
|
-
def preoptions
|
172
|
-
preopts, remainder = *parse_preoptions(argv)
|
173
|
-
return preopts
|
174
|
-
end
|
175
|
-
|
176
|
-
# Same as +flags+ but only returns flags in the
|
177
|
-
# preoptions.
|
178
|
-
|
179
|
-
def preflags
|
180
|
-
preopts, remainder = *parse_preoptions(argv)
|
181
|
-
f = []
|
182
|
-
preopts.each do |k, v|
|
183
|
-
if TrueClass===v or FalseClass===v # not that it's ever false
|
184
|
-
f << k
|
185
|
-
end
|
186
|
-
end
|
187
|
-
return f
|
188
|
-
end
|
189
|
-
|
190
|
-
# Like parameters but without allowing for duplicate options.
|
191
|
-
|
192
|
-
def parameters_without_duplicates
|
193
|
-
opts = {}
|
194
|
-
@options.each do |k,v|
|
195
|
-
if Array===v
|
196
|
-
opts[k] = v[0]
|
197
|
-
else
|
198
|
-
opts[k] = v
|
199
|
-
end
|
200
|
-
end
|
201
|
-
return @operands, opts
|
202
|
-
end
|
203
|
-
|
204
|
-
private # ------------------
|
205
|
-
|
206
|
-
# Basic parser partitions the command line into options and
|
207
|
-
# operands. Options are converted to a hash and the two
|
208
|
-
# parts are returned.
|
209
|
-
#
|
210
|
-
# line = "--trace stamp --file=VERSION"
|
211
|
-
#
|
212
|
-
# args, keys = *parse_command(line)
|
213
|
-
#
|
214
|
-
# args #=> ["stamp"]
|
215
|
-
# keys #=> {"trace"=>true, "file"=>"VERSION"}
|
216
|
-
#
|
217
|
-
def parse
|
218
|
-
args = assoc_options(argv) #, *opts_arity)
|
219
|
-
|
220
|
-
opts, opds = args.partition{ |a| Array === a }
|
221
|
-
|
222
|
-
@operands = opds
|
223
|
-
@options = format_options(opts)
|
224
|
-
|
225
|
-
return @operands, @options
|
226
|
-
end
|
227
|
-
|
228
|
-
# First pass parser to split the command line into an
|
229
|
-
# array using Shellwords, if not already so divided.
|
230
|
-
|
231
|
-
def parse_line(line=nil)
|
232
|
-
if line
|
233
|
-
case line
|
234
|
-
when String
|
235
|
-
argv = Shellwords.shellwords(line)
|
236
|
-
else
|
237
|
-
argv = line.to_ary.dup
|
238
|
-
line = argv.join(' ')
|
239
|
-
end
|
240
|
-
else
|
241
|
-
argv = ARGV.dup
|
242
|
-
line = argv.join(' ')
|
243
|
-
end
|
244
|
-
return line, argv
|
245
|
-
end
|
246
|
-
|
247
|
-
# Ensure opts are a uniform.
|
248
|
-
#
|
249
|
-
#def clean_opts( opts )
|
250
|
-
# opts2 = opts.collect{ |o| o.to_sym }
|
251
|
-
# opts2 = opts2 & [:simple, :repeat] # valid options only
|
252
|
-
# return opts2
|
253
|
-
#end
|
254
|
-
|
255
|
-
# Ensure arity is uniform.
|
256
|
-
|
257
|
-
def parse_arity(arity)
|
258
|
-
arity2 = {}
|
259
|
-
arity.each{ |k,v| arity2[k.to_s] = v.to_i }
|
260
|
-
return arity2
|
261
|
-
end
|
262
|
-
|
263
|
-
# Parse preoptions. A "preoption" is one that
|
264
|
-
# occurs before the first operans (if any).
|
265
|
-
|
266
|
-
def parse_preoptions(args)
|
267
|
-
#args = args.dup
|
268
|
-
args = multi_flag(args) #unless opts.include?(:simple)
|
269
|
-
|
270
|
-
flags = []
|
271
|
-
while args.first =~ /^-/
|
272
|
-
key = args.shift
|
273
|
-
key.sub!(/^-{1,2}/,'')
|
274
|
-
if key.index('=')
|
275
|
-
key, val = key.split('=')
|
276
|
-
elsif a = arity[key]
|
277
|
-
val = args.slice!(0,a)
|
278
|
-
val = val.first if a == 1
|
279
|
-
else
|
280
|
-
val = true
|
281
|
-
end
|
282
|
-
flags << [key, val]
|
283
|
-
end
|
284
|
-
|
285
|
-
flags = format_options(flags)
|
286
|
-
|
287
|
-
return flags, args
|
288
|
-
end
|
289
|
-
|
290
|
-
# Parse flags takes the command line and
|
291
|
-
# transforms it such that flags (eg. -x and --x)
|
292
|
-
# are elemental associative arrays.
|
293
|
-
#
|
294
|
-
# line = "--foo hello --try=this"
|
295
|
-
#
|
296
|
-
# parse_flags(line) #=> [ [foo,true], hello, ["try","this"] ]
|
297
|
-
#
|
298
|
-
def assoc_options(args)
|
299
|
-
#args = args.dup
|
300
|
-
args = multi_flag(args) #unless opts.include?(:simple)
|
301
|
-
|
302
|
-
i = 0
|
303
|
-
while i < args.size
|
304
|
-
arg = args[i]
|
305
|
-
case arg
|
306
|
-
when /^-/
|
307
|
-
arg = arg.sub(/^-{1,2}/,'')
|
308
|
-
if arg.index('=')
|
309
|
-
key, val = arg.split('=')
|
310
|
-
args[i] = [key, val||true]
|
311
|
-
elsif arity.key?(arg)
|
312
|
-
cnt = arity[arg]
|
313
|
-
key = arg
|
314
|
-
val = args[i+1,cnt]
|
315
|
-
args[i,cnt+1] = [[key, *val]]
|
316
|
-
i += (cnt - 1)
|
317
|
-
else
|
318
|
-
key = arg
|
319
|
-
args[i] = [key,true]
|
320
|
-
end
|
321
|
-
end
|
322
|
-
i += 1
|
323
|
-
end
|
324
|
-
return args
|
325
|
-
end
|
326
|
-
|
327
|
-
# Split single letter option groupings into separate options.
|
328
|
-
# ie. -xyz => -x -y -z
|
329
|
-
|
330
|
-
def multi_flag(args=nil)
|
331
|
-
args ||= argv
|
332
|
-
args.collect { |arg|
|
333
|
-
if md = /^-(\w{2,})/.match( arg )
|
334
|
-
md[1].split(//).collect { |c| "-#{c}" }
|
335
|
-
else
|
336
|
-
arg.dup
|
337
|
-
end
|
338
|
-
}.flatten
|
339
|
-
end
|
340
|
-
|
341
|
-
# Format flag options. This converts the associative array of
|
342
|
-
# options/flags into a hash. Repeat options will be placed in arrays.
|
343
|
-
|
344
|
-
def format_options(assoc_options)
|
345
|
-
opts = {}
|
346
|
-
assoc_options.each do |k,v|
|
347
|
-
if opts.key?(k)
|
348
|
-
opts[k] = [opts[k]].flatten << v
|
349
|
-
else
|
350
|
-
opts[k] = v
|
351
|
-
end
|
352
|
-
end
|
353
|
-
return opts
|
354
|
-
end
|
355
|
-
|
356
|
-
end
|
357
|
-
|
358
|
-
end
|
359
|
-
|
360
|
-
# For backward compatibiltiy
|
361
|
-
module Console #:nodoc:
|
362
|
-
Arguments = CLI::Arguments
|
363
|
-
end
|
364
|
-
|
365
|
-
|