facets 2.9.3 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.index +76 -0
- data/CONTRIBUTE.md +78 -0
- data/HISTORY.md +2459 -0
- data/{RUBY.txt → LICENSE.txt} +0 -0
- data/README.rdoc +29 -7
- data/demo/applique/assertion_framework.rb +1 -0
- data/{qed → demo}/applique/file_helpers.rb +0 -0
- data/{qed → demo}/core/array/combination.rdoc +0 -0
- data/{qed → demo}/core/array/delete.rdoc +0 -0
- data/{qed → demo}/core/array/index.rdoc +0 -0
- data/{qed → demo}/core/array/merge.rdoc +0 -0
- data/{qed → demo}/core/array/only.rdoc +0 -0
- data/{qed → demo}/core/array/pad.rdoc +0 -0
- data/{qed → demo}/core/array/permutation.rdoc +0 -0
- data/{qed → demo}/core/array/product.rdoc +0 -0
- data/{qed → demo}/core/array/recursively.rdoc +0 -0
- data/{qed → demo}/core/array/rotate.rdoc +0 -0
- data/{qed → demo}/core/array/select.rdoc +0 -0
- data/{qed → demo}/core/array/uniq_by.rdoc +0 -0
- data/{qed → demo}/core/binding/caller.rdoc +0 -0
- data/{qed → demo}/core/binding/defined.rdoc +0 -0
- data/{qed → demo}/core/binding/eval.rdoc +0 -0
- data/{qed → demo}/core/binding/local_variables.rdoc +0 -0
- data/{qed → demo}/core/binding/opvars.rdoc +0 -0
- data/{qed → demo}/core/binding/self.rdoc +0 -0
- data/{qed → demo}/core/class/descendants.rdoc +0 -0
- data/{qed → demo}/core/class/to_proc.rdoc +0 -0
- data/{qed → demo}/core/comparable/cap.rdoc +0 -0
- data/{qed → demo}/core/comparable/clip.rdoc +0 -0
- data/{qed → demo}/core/comparable/cmp.rdoc +0 -0
- data/{qed → demo}/core/comparable/op_get.rdoc +0 -0
- data/{qed → demo}/core/dir/ascend.rdoc +0 -0
- data/{qed → demo}/core/dir/descend.rdoc +0 -0
- data/{qed → demo}/core/dir/multiglob.rdoc +0 -0
- data/{qed → demo}/core/dir/parent.rdoc +0 -0
- data/{qed → demo}/core/dir/recurse.rdoc +0 -0
- data/{qed → demo}/core/exception/detail.rdoc +0 -0
- data/{qed → demo}/core/facets.rdoc +0 -0
- data/{qed → demo}/core/filetest/root.rdoc +0 -0
- data/{qed → demo}/core/hash/recursively.rdoc +0 -0
- data/{qed → demo}/core/indexable.rdoc +0 -0
- data/{qed → demo}/core/integer/bitmask.rdoc +0 -0
- data/{qed → demo}/core/integer/even.rdoc +0 -0
- data/{qed → demo}/core/integer/factorial.rdoc +0 -0
- data/{qed → demo}/core/integer/length.rdoc +0 -0
- data/{qed → demo}/core/integer/multiple.rdoc +0 -0
- data/{qed → demo}/core/integer/odd.rdoc +0 -0
- data/{qed → demo}/core/integer/of.rdoc +0 -0
- data/{qed → demo}/core/integer/ordinal.rdoc +0 -0
- data/{qed → demo}/core/matchdata/match.rdoc +0 -0
- data/{qed → demo}/core/matchdata/matchset.rdoc +0 -0
- data/{qed → demo}/core/module/cattr.rdoc +0 -0
- data/{qed → demo}/core/module/class_extend.rdoc +0 -0
- data/{qed → demo}/core/module/class_inheritor.rdoc +0 -0
- data/{qed → demo}/core/module/copy_inheritor.rdoc +0 -0
- data/{qed → demo}/core/module/method_space.rdoc +0 -0
- data/{qed → demo}/core/string/align.rdoc +0 -0
- data/{qed → demo}/core/string/bracket.rdoc +0 -0
- data/{qed → demo}/core/string/bytes.rdoc +0 -0
- data/{qed → demo}/core/string/camelcase.rdoc +0 -0
- data/{qed → demo}/core/string/capitalized.rdoc +0 -0
- data/{qed → demo}/core/string/characters.rdoc +0 -0
- data/{qed → demo}/core/string/cleanlines.rdoc +0 -0
- data/{qed → demo}/core/string/cleave.rdoc +0 -0
- data/{qed → demo}/core/string/divide.rdoc +0 -0
- data/{qed → demo}/core/string/each_char.rdoc +0 -0
- data/{qed → demo}/core/string/each_word.rdoc +0 -0
- data/{qed → demo}/core/string/end_with.rdoc +0 -0
- data/{qed → demo}/core/string/expand_tabs.rdoc +0 -0
- data/{qed → demo}/core/string/fold.rdoc +0 -0
- data/{qed → demo}/core/string/indent.rdoc +0 -0
- data/{qed → demo}/core/string/interpolate.rdoc +0 -0
- data/{qed → demo}/core/string/lchomp.rdoc +0 -0
- data/{qed → demo}/core/string/line_wrap.rdoc +0 -0
- data/{qed → demo}/core/string/lines.rdoc +0 -0
- data/{qed → demo}/core/string/margin.rdoc +0 -0
- data/{qed → demo}/core/string/methodize.rdoc +0 -0
- data/{qed → demo}/core/string/modulize.rdoc +0 -0
- data/{qed → demo}/core/string/mscan.rdoc +0 -0
- data/{qed → demo}/core/string/natcmp.rdoc +0 -0
- data/{qed → demo}/core/string/nchar.rdoc +0 -0
- data/{qed → demo}/core/string/newlines.rdoc +0 -0
- data/{qed → demo}/core/string/op_sub.rdoc +0 -0
- data/{qed → demo}/core/string/pathize.rdoc +0 -0
- data/{qed → demo}/core/string/quote.rdoc +0 -0
- data/{qed → demo}/core/string/range.rdoc +0 -0
- data/{qed → demo}/core/string/rewrite.rdoc +0 -0
- data/{qed → demo}/core/string/shatter.rdoc +0 -0
- data/{qed → demo}/core/string/snakecase.rdoc +0 -0
- data/{qed → demo}/core/string/splice.rdoc +0 -0
- data/{qed → demo}/core/string/start_with.rdoc +0 -0
- data/{qed → demo}/core/string/subtract.rdoc +0 -0
- data/{qed → demo}/core/string/tab.rdoc +0 -0
- data/{qed → demo}/core/string/tabto.rdoc +0 -0
- data/{qed → demo}/core/string/titlecase.rdoc +0 -0
- data/{qed → demo}/core/string/to_re.rdoc +0 -0
- data/{qed → demo}/core/string/unfold.rdoc +0 -0
- data/{qed → demo}/core/string/unindent.rdoc +0 -0
- data/{qed → demo}/core/string/unquote.rdoc +0 -0
- data/{qed → demo}/core/string/variablize.rdoc +0 -0
- data/{qed → demo}/core/string/word_wrap.rdoc +0 -0
- data/{qed → demo}/core/string/words.rdoc +0 -0
- data/{qed → demo}/core/string/xor.rdoc +0 -0
- data/{qed → demo}/standard/02_cloneable.rdoc +0 -0
- data/{qed → demo}/standard/03_enumargs.rdoc +0 -0
- data/{qed → demo}/standard/04_equitable.rdoc +0 -0
- data/{qed → demo}/standard/05_instantiable.rdoc +0 -0
- data/{qed → demo}/standard/basic_object.rdoc +0 -0
- data/{qed → demo}/standard/memoizable.rdoc +0 -0
- data/{qed → demo}/standard/mulititon.rdoc +0 -0
- data/lib/core/facets.rb +1 -2
- data/lib/core/facets.yml +61 -42
- data/lib/core/facets/array.rb +8 -28
- data/lib/core/facets/array/arrange.rb +42 -0
- data/lib/core/facets/array/before.rb +2 -0
- data/lib/core/facets/array/collapse.rb +2 -0
- data/lib/core/facets/array/commonality.rb +24 -12
- data/lib/core/facets/array/duplicates.rb +22 -1
- data/lib/core/facets/array/each_overlap.rb +25 -0
- data/lib/core/facets/array/intersection.rb +25 -0
- data/lib/core/facets/array/missing.rb +29 -0
- data/lib/core/facets/array/nonuniq.rb +7 -53
- data/lib/core/facets/array/occur.rb +38 -0
- data/lib/core/facets/array/occurrence.rb +28 -0
- data/lib/core/facets/array/only.rb +12 -1
- data/lib/core/facets/array/recursively.rb +11 -5
- data/lib/core/facets/array/reject_values.rb +21 -0
- data/lib/core/facets/array/splice.rb +5 -1
- data/lib/core/facets/array/split.rb +5 -2
- data/lib/core/facets/array/squeeze.rb +23 -0
- data/lib/core/facets/array/step.rb +31 -0
- data/lib/core/facets/array/store.rb +4 -0
- data/lib/core/facets/array/to_h.rb +22 -0
- data/lib/core/facets/array/traverse.rb +11 -5
- data/lib/core/facets/array/uniq_by.rb +5 -1
- data/lib/core/facets/array/unique_permutation.rb +29 -0
- data/lib/core/facets/array/zip.rb +21 -0
- data/lib/core/facets/binding.rb +0 -3
- data/lib/core/facets/binding/call_stack.rb +1 -1
- data/lib/core/facets/binding/caller.rb +1 -3
- data/lib/core/facets/binding/callstack.rb +1 -1
- data/lib/core/facets/binding/defined.rb +0 -2
- data/lib/core/facets/binding/local_variables.rb +0 -2
- data/lib/core/facets/binding/op_get.rb +0 -2
- data/lib/core/facets/binding/self.rb +1 -3
- data/lib/core/facets/cattr.rb +1 -0
- data/lib/core/facets/class.rb +0 -2
- data/lib/core/facets/class/cattr.rb +1 -0
- data/lib/core/facets/class/singleton.rb +1 -13
- data/lib/core/facets/class/singleton_class.rb +16 -0
- data/lib/core/facets/comparable.rb +0 -2
- data/lib/core/facets/dir.rb +0 -2
- data/lib/core/facets/dir/ascend.rb +2 -2
- data/lib/core/facets/dir/lookup.rb +20 -0
- data/lib/core/facets/enumerable.rb +10 -9
- data/lib/core/facets/enumerable/accumulate.rb +18 -16
- data/lib/core/facets/enumerable/apply.rb +20 -0
- data/lib/core/facets/enumerable/associate.rb +6 -0
- data/lib/core/facets/enumerable/cluster.rb +24 -0
- data/lib/core/facets/enumerable/every.rb +1 -1
- data/lib/core/facets/enumerable/ewise.rb +2 -0
- data/lib/core/facets/enumerable/graph.rb +0 -3
- data/lib/core/facets/enumerable/hashify.rb +222 -19
- data/lib/core/facets/enumerable/hinge.rb +18 -0
- data/lib/core/facets/enumerable/key_by.rb +27 -0
- data/lib/core/facets/enumerable/map_to.rb +13 -0
- data/lib/core/facets/enumerable/mash.rb +34 -1
- data/lib/core/facets/enumerable/occur.rb +12 -9
- data/lib/core/facets/enumerable/only.rb +56 -0
- data/lib/core/facets/enumerable/{cluster_by.rb → organize_by.rb} +5 -4
- data/lib/core/facets/enumerable/pair.rb +20 -0
- data/lib/core/facets/enumerable/per.rb +27 -35
- data/lib/core/facets/enumerable/recursively.rb +3 -3
- data/lib/core/facets/enumerable/squeeze.rb +36 -0
- data/lib/core/facets/enumerable/sum.rb +18 -6
- data/lib/core/facets/enumerable/unassociate.rb +23 -0
- data/lib/core/facets/enumerable/value_by.rb +25 -0
- data/lib/core/facets/enumerator/fx.rb +16 -25
- data/lib/core/facets/enumerator/lazy/squeeze.rb +33 -0
- data/lib/core/facets/essentials.rb +65 -0
- data/lib/core/facets/exception.rb +0 -2
- data/lib/core/facets/exception/set_message.rb +10 -0
- data/lib/core/facets/file.rb +1 -2
- data/lib/core/facets/file/common_path.rb +17 -0
- data/lib/core/facets/file/rootname.rb +1 -1
- data/lib/core/facets/filetest.rb +0 -2
- data/lib/core/facets/filetest/relative.rb +1 -1
- data/lib/core/facets/filetest/safe.rb +14 -10
- data/lib/core/facets/float.rb +1 -3
- data/lib/core/facets/float/round_to.rb +1 -0
- data/lib/core/facets/functor.rb +8 -10
- data/lib/core/facets/hash.rb +2 -5
- data/lib/core/facets/hash/collate.rb +22 -8
- data/lib/core/facets/hash/count.rb +8 -4
- data/lib/core/facets/hash/data.rb +5 -2
- data/lib/core/facets/hash/dearray_values.rb +1 -1
- data/lib/core/facets/hash/deep_rekey.rb +54 -0
- data/lib/core/facets/hash/each_with_key.rb +12 -0
- data/lib/core/facets/hash/fetch_nested.rb +20 -0
- data/lib/core/facets/hash/keys.rb +4 -13
- data/lib/core/facets/hash/only_keys.rb +1 -0
- data/lib/core/facets/hash/op_push.rb +9 -1
- data/lib/core/facets/hash/op_sub.rb +1 -1
- data/lib/core/facets/hash/recursively.rb +6 -6
- data/lib/core/facets/hash/rekey.rb +26 -34
- data/lib/core/facets/hash/revalue.rb +61 -0
- data/lib/core/facets/hash/slice.rb +16 -3
- data/lib/core/facets/hash/subset.rb +11 -8
- data/lib/core/facets/hash/update_each.rb +1 -1
- data/lib/core/facets/hash/weave.rb +1 -1
- data/lib/core/facets/indexable.rb +6 -6
- data/lib/core/facets/integer.rb +0 -4
- data/lib/core/facets/kernel.rb +4 -7
- data/lib/core/facets/kernel/__dir__.rb +2 -0
- data/lib/core/facets/kernel/as.rb +2 -1
- data/lib/core/facets/kernel/call_stack.rb +1 -56
- data/lib/core/facets/kernel/callstack.rb +56 -1
- data/lib/core/facets/kernel/constant.rb +2 -0
- data/lib/core/facets/kernel/deep_clone.rb +27 -1
- data/lib/core/facets/kernel/deep_copy.rb +0 -24
- data/lib/core/facets/kernel/eigen.rb +2 -33
- data/lib/core/facets/kernel/eigenclass.rb +1 -1
- data/lib/core/facets/kernel/ergo.rb +1 -1
- data/lib/core/facets/kernel/extend.rb +4 -6
- data/lib/core/facets/kernel/instance_assign.rb +8 -6
- data/lib/core/facets/kernel/instance_extract.rb +22 -0
- data/lib/core/facets/kernel/instance_replace.rb +40 -0
- data/lib/core/facets/kernel/{equate.rb → like.rb} +7 -4
- data/lib/core/facets/kernel/load_relative.rb +25 -1
- data/lib/core/facets/kernel/meta.rb +35 -0
- data/lib/core/facets/kernel/meta_def.rb +4 -0
- data/lib/core/facets/kernel/object_send.rb +11 -14
- data/lib/core/facets/kernel/respond.rb +3 -13
- data/lib/core/facets/kernel/tap.rb +27 -39
- data/lib/core/facets/load_path.rb +1 -0
- data/lib/core/facets/load_path/search.rb +16 -0
- data/lib/core/facets/matchdata.rb +0 -2
- data/lib/core/facets/method.rb +0 -2
- data/lib/core/facets/method/composition.rb +32 -16
- data/lib/core/facets/method/curry.rb +13 -0
- data/lib/core/facets/method/partial.rb +10 -0
- data/lib/core/facets/method/public.rb +33 -0
- data/lib/core/facets/module.rb +0 -2
- data/lib/core/facets/module/alias_class_method.rb +11 -0
- data/lib/core/facets/module/basename.rb +1 -31
- data/lib/core/facets/module/cattr.rb +1 -0
- data/lib/core/facets/module/lastname.rb +30 -0
- data/lib/core/facets/module/mattr.rb +4 -4
- data/lib/core/facets/nilclass.rb +0 -3
- data/lib/core/facets/numeric.rb +0 -4
- data/lib/core/facets/numeric/approx.rb +3 -2
- data/lib/core/facets/numeric/range.rb +12 -0
- data/lib/core/facets/numeric/round_to.rb +32 -1
- data/lib/core/facets/object.rb +2 -3
- data/lib/core/facets/object/itself.rb +16 -0
- data/lib/core/facets/objectspace.rb +0 -3
- data/lib/core/facets/proc.rb +0 -3
- data/lib/core/facets/proc/bind_to.rb +3 -3
- data/lib/core/facets/proc/wrap.rb +17 -0
- data/lib/core/facets/process.rb +0 -2
- data/lib/core/facets/range.rb +4 -4
- data/lib/core/facets/range/op_add.rb +15 -0
- data/lib/core/facets/range/op_sub.rb +45 -0
- data/lib/core/facets/range/{to_r.rb → to_rng.rb} +1 -1
- data/lib/core/facets/regexp.rb +0 -2
- data/lib/core/facets/regexp/to_proc.rb +13 -0
- data/lib/core/facets/string.rb +8 -9
- data/lib/core/facets/string/ascii_only.rb +52 -0
- data/lib/core/facets/string/each_match.rb +1 -0
- data/lib/core/facets/string/ends_with.rb +1 -0
- data/lib/core/facets/string/file.rb +6 -20
- data/lib/core/facets/string/fold.rb +5 -5
- data/lib/core/facets/string/indent.rb +37 -20
- data/lib/core/facets/string/indexable.rb +7 -0
- data/lib/core/facets/string/interpolate.rb +6 -2
- data/lib/core/facets/string/linear.rb +19 -0
- data/lib/core/facets/string/margin.rb +47 -19
- data/lib/core/facets/string/mscan.rb +3 -0
- data/lib/core/facets/string/number.rb +14 -0
- data/lib/core/facets/string/op_sub.rb +1 -14
- data/lib/core/facets/string/random.rb +34 -0
- data/lib/core/facets/string/remove.rb +30 -0
- data/lib/core/facets/string/rotate.rb +24 -0
- data/lib/core/facets/string/similarity.rb +2 -2
- data/lib/core/facets/string/starts_with.rb +5 -0
- data/lib/core/facets/string/tab.rb +2 -17
- data/lib/core/facets/string/tabto.rb +2 -19
- data/lib/core/facets/string/to_rx.rb +1 -0
- data/lib/core/facets/string/trim.rb +45 -0
- data/lib/core/facets/string/unfold.rb +7 -2
- data/lib/core/facets/struct.rb +1 -2
- data/lib/core/facets/struct/replace.rb +8 -0
- data/lib/core/facets/symbol.rb +1 -3
- data/lib/core/facets/symbol/as_s.rb +3 -1
- data/lib/core/facets/symbol/call.rb +29 -0
- data/lib/core/facets/symbol/thrown.rb +9 -5
- data/lib/core/facets/time.rb +0 -2
- data/lib/core/facets/time/future.rb +6 -4
- data/lib/core/facets/unboundmethod.rb +0 -3
- data/lib/core/facets/version.rb +5 -5
- data/lib/standard/facets/against.rb +53 -0
- data/lib/standard/facets/binding/block_exec.rb +44 -0
- data/lib/standard/facets/cgi.rb +2 -40
- data/lib/standard/facets/cgi/esc.rb +11 -0
- data/lib/standard/facets/cgi/escape_html.rb +63 -0
- data/lib/standard/facets/cgi/marshal.rb +20 -0
- data/lib/standard/facets/cli.rb +54 -0
- data/lib/standard/facets/cloneable.rb +12 -9
- data/lib/standard/facets/enumargs.rb +159 -168
- data/lib/standard/facets/find.rb +1 -15
- data/lib/standard/facets/find/select.rb +16 -0
- data/lib/standard/facets/gem/search.rb +18 -0
- data/lib/standard/facets/gem/specification/current_specs.rb +21 -0
- data/lib/standard/facets/gem/specification/find_requireable_file.rb +21 -0
- data/lib/standard/facets/hash_builder.rb +46 -0
- data/lib/standard/facets/load_monitor.rb +26 -0
- data/lib/standard/facets/math.rb +57 -57
- data/lib/standard/facets/math/acosec.rb +1 -0
- data/lib/standard/facets/math/acsc.rb +6 -1
- data/lib/standard/facets/math/beta.rb +8 -3
- data/lib/standard/facets/math/cosec.rb +1 -0
- data/lib/standard/facets/math/cosech.rb +1 -0
- data/lib/standard/facets/math/csc.rb +6 -1
- data/lib/standard/facets/math/csch.rb +6 -1
- data/lib/standard/facets/math/distance.rb +19 -0
- data/lib/standard/facets/math/ec.rb +5 -0
- data/lib/standard/facets/math/lgamma.rb +21 -21
- data/lib/standard/facets/math/lngamma.rb +18 -0
- data/lib/standard/facets/math/pow.rb +6 -1
- data/lib/standard/facets/math/root.rb +1 -1
- data/lib/standard/facets/math/sign.rb +15 -4
- data/lib/standard/facets/math/tau.rb +5 -0
- data/lib/standard/facets/math/tgamma.rb +1 -1
- data/lib/standard/facets/memoizer.rb +63 -0
- data/lib/standard/facets/ostruct.rb +37 -156
- data/lib/standard/facets/ostruct/each.rb +11 -0
- data/lib/standard/facets/ostruct/initialize.rb +48 -0
- data/lib/standard/facets/ostruct/merge.rb +21 -0
- data/lib/standard/facets/ostruct/op_fetch.rb +29 -0
- data/lib/standard/facets/ostruct/op_store.rb +1 -0
- data/lib/standard/facets/ostruct/to_h.rb +10 -0
- data/lib/standard/facets/ostruct/to_ostruct.rb +65 -0
- data/lib/standard/facets/pathname.rb +18 -215
- data/lib/standard/facets/pathname/chdir.rb +15 -0
- data/lib/standard/facets/pathname/empty.rb +10 -0
- data/lib/standard/facets/pathname/exists.rb +6 -0
- data/lib/standard/facets/pathname/glob.rb +57 -0
- data/lib/standard/facets/pathname/home.rb +12 -0
- data/lib/standard/facets/pathname/null.rb +20 -0
- data/lib/standard/facets/pathname/op_div.rb +15 -0
- data/lib/standard/facets/pathname/op_fetch.rb +13 -0
- data/lib/standard/facets/pathname/outofdate.rb +13 -0
- data/lib/standard/facets/pathname/readline.rb +13 -0
- data/lib/standard/facets/pathname/root.rb +10 -0
- data/lib/standard/facets/pathname/rootname.rb +10 -0
- data/lib/standard/facets/pathname/safe.rb +15 -0
- data/lib/standard/facets/pathname/split_root.rb +9 -0
- data/lib/standard/facets/pathname/to_path.rb +28 -0
- data/lib/standard/facets/pathname/to_str.rb +8 -0
- data/lib/standard/facets/pathname/uptodate.rb +11 -0
- data/lib/standard/facets/pathname/visit.rb +38 -0
- data/lib/standard/facets/pathname/work.rb +10 -0
- data/lib/standard/facets/platform.rb +2 -2
- data/lib/standard/facets/random.rb +32 -2
- data/lib/standard/facets/shellwords.rb +5 -2
- data/lib/standard/facets/thread.rb +2 -2
- data/lib/standard/facets/uri.rb +7 -178
- data/lib/standard/facets/uri/cgi_escape.rb +46 -0
- data/lib/standard/facets/uri/cgi_parse.rb +1 -0
- data/lib/standard/facets/uri/cgi_unescape.rb +1 -0
- data/lib/standard/facets/uri/decode.rb +32 -0
- data/lib/standard/facets/uri/parameters.rb +63 -0
- data/lib/standard/facets/uri/query.rb +148 -0
- data/lib/standard/facets/yaml.rb +3 -56
- data/lib/standard/facets/yaml/file.rb +41 -0
- data/lib/standard/facets/yaml/kernel.rb +29 -0
- data/lib/standard/facets/yaml/read.rb +12 -0
- data/test/core/array/test_arrange.rb +37 -0
- data/test/core/array/test_each_overlap.rb +31 -0
- data/test/core/array/test_intersection.rb +19 -0
- data/test/core/array/test_missing.rb +12 -0
- data/test/core/array/test_occur.rb +52 -0
- data/test/core/array/test_occurrence.rb +20 -0
- data/test/core/array/test_reject_values.rb +17 -0
- data/test/core/array/test_squeeze.rb +22 -0
- data/test/core/array/test_step.rb +28 -0
- data/test/core/array/test_unique_permutation.rb +23 -0
- data/test/core/enumerable/test_key_by.rb +22 -0
- data/test/core/enumerable/test_occur.rb +18 -5
- data/test/core/enumerable/test_only.rb +40 -0
- data/test/core/enumerable/test_squeeze.rb +35 -0
- data/test/core/enumerable/test_sum.rb +8 -3
- data/test/core/enumerator/lazy/test_squeeze.rb +33 -0
- data/test/core/hash/test_count.rb +10 -1
- data/test/core/hash/test_deep_rekey.rb +131 -0
- data/test/core/hash/test_each_with_key.rb +16 -0
- data/test/core/hash/test_fetch_nested.rb +24 -0
- data/test/core/hash/test_keys.rb +0 -11
- data/test/core/hash/test_rekey.rb +41 -1
- data/test/core/hash/test_revalue.rb +98 -0
- data/test/core/hash/test_slice.rb +12 -1
- data/test/core/kernel/test_deep_clone.rb +31 -0
- data/test/core/kernel/test_deep_copy.rb +2 -28
- data/test/core/kernel/test_instance_extract.rb +28 -0
- data/test/core/method/test_composition.rb +42 -0
- data/test/core/range/test_op_add.rb +24 -0
- data/test/core/range/test_op_sub.rb +34 -0
- data/test/core/string/test_ascii_only.rb +30 -0
- data/test/core/string/test_margin.rb +4 -104
- data/test/core/string/test_number.rb +44 -0
- data/test/core/string/test_remove.rb +36 -0
- data/test/core/string/test_rotate.rb +31 -0
- data/test/core/string/test_trim.rb +116 -0
- data/test/core/symbol/test_thrown.rb +22 -0
- data/test/standard/binding/test_block_exec.rb +21 -0
- data/test/standard/math/test_acot.rb +23 -0
- data/test/standard/math/test_acoth.rb +22 -0
- data/test/standard/math/test_beta.rb +19 -0
- data/test/standard/math/test_ceil.rb +22 -0
- data/test/standard/math/test_cosec.rb +19 -0
- data/test/standard/math/test_cosech.rb +19 -0
- data/test/standard/math/test_cot.rb +13 -0
- data/test/standard/math/test_coth.rb +13 -0
- data/test/standard/math/test_distance.rb +16 -0
- data/test/standard/math/test_exp10.rb +14 -0
- data/test/standard/math/test_exp2.rb +14 -0
- data/test/standard/math/test_factorial.rb +13 -0
- data/test/standard/math/test_floor.rb +23 -0
- data/test/standard/math/test_gcd.rb +18 -0
- data/test/standard/math/test_lcm.rb +13 -0
- data/test/standard/math/test_pow.rb +30 -0
- data/test/standard/math/test_root.rb +15 -0
- data/test/standard/math/test_sec.rb +19 -0
- data/test/standard/math/test_sech.rb +19 -0
- data/test/standard/math/test_sign.rb +6 -0
- data/test/standard/math/test_sinc.rb +15 -0
- data/test/standard/math/test_srq.rb +20 -0
- data/test/standard/pathname/test_chdir.rb +16 -0
- data/test/standard/pathname/test_readline.rb +23 -0
- data/test/standard/test_enumargs.rb +1 -1
- data/test/standard/test_math.rb +3 -0
- data/test/standard/test_ostruct.rb +26 -21
- data/test/standard/test_uri.rb +9 -0
- metadata +802 -183
- data/.ruby +0 -54
- data/HISTORY.rdoc +0 -2386
- data/lib/core/facets/array/combination.rb +0 -43
- data/lib/core/facets/array/index.rb +0 -23
- data/lib/core/facets/array/occurent.rb +0 -1
- data/lib/core/facets/array/permutation.rb +0 -32
- data/lib/core/facets/array/product.rb +0 -30
- data/lib/core/facets/array/rotate.rb +0 -48
- data/lib/core/facets/array/select.rb +0 -20
- data/lib/core/facets/binding/eval.rb +0 -14
- data/lib/core/facets/enumerable/count.rb +0 -53
- data/lib/core/facets/enumerable/each_with_object.rb +0 -38
- data/lib/core/facets/enumerable/group_by.rb +0 -33
- data/lib/core/facets/enumerable/none.rb +0 -32
- data/lib/core/facets/enumerable/one.rb +0 -39
- data/lib/core/facets/enumerable/take.rb +0 -16
- data/lib/core/facets/float/round.rb +0 -2
- data/lib/core/facets/hash/select.rb +0 -17
- data/lib/core/facets/hash/to_h.rb +0 -1
- data/lib/core/facets/hash/url_params.rb +0 -21
- data/lib/core/facets/instance.rb +0 -157
- data/lib/core/facets/integer/even.rb +0 -1
- data/lib/core/facets/integer/odd.rb +0 -37
- data/lib/core/facets/kernel/__callee__.rb +0 -1
- data/lib/core/facets/kernel/__method__.rb +0 -48
- data/lib/core/facets/kernel/require_relative.rb +0 -52
- data/lib/core/facets/kernel/source_location.rb +0 -13
- data/lib/core/facets/nilclass/to_f.rb +0 -17
- data/lib/core/facets/numeric/round.rb +0 -69
- data/lib/core/facets/numeric/round_at.rb +0 -1
- data/lib/core/facets/object/replace.rb +0 -43
- data/lib/core/facets/objectspace/reflect.rb +0 -62
- data/lib/core/facets/proc/curry.rb +0 -32
- data/lib/core/facets/string/bytes.rb +0 -21
- data/lib/core/facets/string/each_char.rb +0 -31
- data/lib/core/facets/string/end_with.rb +0 -1
- data/lib/core/facets/string/lines.rb +0 -19
- data/lib/core/facets/string/random_binary.rb +0 -10
- data/lib/core/facets/string/start_with.rb +0 -60
- data/lib/core/facets/symbol/to_proc.rb +0 -33
- data/lib/core/facets/to_hash.rb +0 -336
- data/lib/core/facets/unboundmethod/name.rb +0 -28
- data/lib/standard/facets/math/gamma.rb +0 -12
- data/test/core/array/test_occurent.rb +0 -33
- data/test/core/kernel/test_source_location.rb +0 -25
- data/test/core/string/test_tabto.rb +0 -16
@@ -1,8 +1,13 @@
|
|
1
1
|
class String
|
2
2
|
|
3
|
-
# Unfold
|
3
|
+
# Unfold paragraphs such that new lines are removed from between
|
4
|
+
# sentences of the same paragraph.
|
4
5
|
#
|
5
|
-
#
|
6
|
+
# Note that #rstrip is called on the final result, but this may
|
7
|
+
# change in the future.
|
8
|
+
#
|
9
|
+
# FIXME: Sometimes adds one too many blank lines, which is why we are
|
10
|
+
# using rstrip. Fix and probably remove the rstrip.
|
6
11
|
#
|
7
12
|
def unfold
|
8
13
|
blank = false
|
data/lib/core/facets/struct.rb
CHANGED
data/lib/core/facets/symbol.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
|
-
require 'facets/kernel/require_relative'
|
2
|
-
|
3
1
|
require_relative 'symbol/as_s.rb'
|
4
2
|
require_relative 'symbol/bang.rb'
|
3
|
+
require_relative 'symbol/call.rb'
|
5
4
|
require_relative 'symbol/chomp.rb'
|
6
5
|
require_relative 'symbol/generate.rb'
|
7
6
|
require_relative 'symbol/not.rb'
|
@@ -11,6 +10,5 @@ require_relative 'symbol/query.rb'
|
|
11
10
|
require_relative 'symbol/setter.rb'
|
12
11
|
require_relative 'symbol/succ.rb'
|
13
12
|
require_relative 'symbol/thrown.rb'
|
14
|
-
require_relative 'symbol/to_proc.rb'
|
15
13
|
require_relative 'symbol/variablize.rb'
|
16
14
|
|
@@ -2,10 +2,12 @@ require 'facets/functor'
|
|
2
2
|
|
3
3
|
class Symbol
|
4
4
|
|
5
|
+
# TODO: Should Symbol#as_s be moved to functor gem?
|
6
|
+
|
5
7
|
# Convert symbol to string, apply string method and convert
|
6
8
|
# back to symbol via a fluent interface.
|
7
9
|
#
|
8
|
-
# :HELLO.as_s.
|
10
|
+
# :HELLO.as_s.chomp('O') #=> :HELL
|
9
11
|
#
|
10
12
|
def as_s
|
11
13
|
Functor.new do |op, *a|
|
@@ -0,0 +1,29 @@
|
|
1
|
+
class Symbol
|
2
|
+
|
3
|
+
# Useful extension for &:symbol which makes it possible
|
4
|
+
# to pass arguments for method in block
|
5
|
+
#
|
6
|
+
# ['abc','','','def','ghi'].tap(&:delete.(''))
|
7
|
+
# #=> ['abc','def','ghi']
|
8
|
+
#
|
9
|
+
# [1,2,3].map(&:to_s.(2))
|
10
|
+
# #=> ['1','10','11']
|
11
|
+
#
|
12
|
+
# ['abc','cdef','xy','z','wwww'].select(&:size.() == 4)
|
13
|
+
# #=> ['cdef', 'wwww']
|
14
|
+
#
|
15
|
+
# ['abc','aaA','AaA','z'].count(&:upcase.().succ == 'AAB')
|
16
|
+
# #=> 2
|
17
|
+
#
|
18
|
+
# [%w{1 2 3 4 5},%w{6 7 8 9}].map(&:join.().length)
|
19
|
+
# #=> [5,4]
|
20
|
+
#
|
21
|
+
# CREDIT: Ilya Vorontsov, Nobuyoshi Nakada
|
22
|
+
|
23
|
+
def call(*args, &block)
|
24
|
+
proc do |recv|
|
25
|
+
recv.__send__(self, *args, &block)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
@@ -1,18 +1,22 @@
|
|
1
1
|
class Symbol
|
2
2
|
|
3
|
-
#
|
4
|
-
#
|
3
|
+
# Returns truew if the given block throws the symbol, otherwise false.
|
4
|
+
# Note that +throw+ inside the block must be used in one-argument form.
|
5
|
+
#
|
6
|
+
# @return [true,false]
|
5
7
|
def thrown?
|
8
|
+
thrown = true
|
6
9
|
catch(self) do
|
7
10
|
begin
|
8
11
|
yield
|
9
|
-
|
12
|
+
thrown = false
|
10
13
|
rescue ArgumentError => err # 1.9 exception
|
11
|
-
|
14
|
+
thrown = false if err.message.index('uncaught throw')
|
12
15
|
rescue NameError => err # 1.8 exception
|
13
|
-
|
16
|
+
thrown = false if err.message.index('uncaught throw')
|
14
17
|
end
|
15
18
|
end
|
19
|
+
thrown
|
16
20
|
end
|
17
21
|
|
18
22
|
end
|
data/lib/core/facets/time.rb
CHANGED
@@ -1,13 +1,15 @@
|
|
1
1
|
class Time
|
2
2
|
|
3
|
-
|
3
|
+
def self.current
|
4
|
+
now
|
5
|
+
end
|
6
|
+
|
4
7
|
def past?(other=nil)
|
5
|
-
self < (other ||
|
8
|
+
self < (other || self.class.current)
|
6
9
|
end
|
7
10
|
|
8
|
-
#
|
9
11
|
def future?(other=nil)
|
10
|
-
self > (other ||
|
12
|
+
self > (other || self.class.current)
|
11
13
|
end
|
12
14
|
|
13
15
|
end
|
data/lib/core/facets/version.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module Facets
|
2
2
|
#
|
3
|
-
def self.
|
4
|
-
@
|
3
|
+
def self.index
|
4
|
+
@index ||= (
|
5
5
|
require 'yaml'
|
6
6
|
YAML.load(File.new(File.dirname(__FILE__) + '/facets.yml'))
|
7
7
|
)
|
@@ -10,10 +10,10 @@ module Facets
|
|
10
10
|
#
|
11
11
|
def self.const_missing(name)
|
12
12
|
key = name.to_s.downcase
|
13
|
-
|
13
|
+
index[key] || super(name)
|
14
14
|
end
|
15
15
|
|
16
|
-
#
|
17
|
-
VERSION = '
|
16
|
+
# deprecate
|
17
|
+
VERSION = '3.0.0'
|
18
18
|
end
|
19
19
|
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'facets/functor'
|
2
|
+
|
3
|
+
class Object
|
4
|
+
|
5
|
+
# Objectified message or block application. Only a message
|
6
|
+
# or a block can be given, not both.
|
7
|
+
#
|
8
|
+
# msg - method and arguments [Array]
|
9
|
+
# blk - procedure block [Proc]
|
10
|
+
#
|
11
|
+
# Examples
|
12
|
+
#
|
13
|
+
# a = [1,2,3,4,5]
|
14
|
+
# c = a.against(:>, 2)
|
15
|
+
# c.select #=> [3,4,5]
|
16
|
+
#
|
17
|
+
# a = [1,2,3,4,5]
|
18
|
+
# c = a.against(:>)
|
19
|
+
# c.select(2) #=> [3,4,5]
|
20
|
+
#
|
21
|
+
# Returns [Functor]
|
22
|
+
#
|
23
|
+
# TODO: Better name for this method?
|
24
|
+
|
25
|
+
def against(*msg, &blk)
|
26
|
+
raise ArgumentError, "too many arguments" if blk && !msg.empty?
|
27
|
+
|
28
|
+
this = self
|
29
|
+
|
30
|
+
blk = ::Proc.new{ |x,*a| x.__send__(*msg, *a) } unless blk
|
31
|
+
|
32
|
+
#if blk
|
33
|
+
Functor.new do |m, *a, &b|
|
34
|
+
if b
|
35
|
+
b2 = ::Proc.new{ |*x| blk.call(*b.call(*x), *a) }
|
36
|
+
else
|
37
|
+
b2 = blk
|
38
|
+
end
|
39
|
+
this.__send__(m, &b2)
|
40
|
+
end
|
41
|
+
#else
|
42
|
+
# Functor.new do |m, *a, &b|
|
43
|
+
# if b
|
44
|
+
# b2 = ::Proc.new{ |*x| b.call(*x).__send__(*msg, *a) }
|
45
|
+
# else
|
46
|
+
# b2 = ::Proc.new{ |x| x.__send__(*msg, *a) }
|
47
|
+
# end
|
48
|
+
# this.__send__(m, &b2)
|
49
|
+
# end
|
50
|
+
#end
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
class Binding
|
2
|
+
|
3
|
+
# Allows the evaluation of blocks by a Binding in the same way that strings
|
4
|
+
# can be evaluated.
|
5
|
+
#
|
6
|
+
# x = 5
|
7
|
+
# $my_binding = binding
|
8
|
+
#
|
9
|
+
# class Test # just here to provide a scope gate
|
10
|
+
# $my_binding.block_exec { x }
|
11
|
+
# end
|
12
|
+
#
|
13
|
+
# # => 5
|
14
|
+
#
|
15
|
+
# NOTE: The implementation of this method uses a method_missing trick.
|
16
|
+
# Consequently it is a bit of a hack.
|
17
|
+
#
|
18
|
+
def block_exec(*args, &block)
|
19
|
+
BlockEnvironment.new(self, *args, &block).call
|
20
|
+
end
|
21
|
+
|
22
|
+
# This class is used for evaluating blocks in a particular context.
|
23
|
+
# It is not really meant to be used independently; instead it is used
|
24
|
+
# with Binding#block_exec method.
|
25
|
+
|
26
|
+
class BlockEnvironment < BasicObject
|
27
|
+
|
28
|
+
def initialize(context, *args, &block)
|
29
|
+
@context = context
|
30
|
+
@args = args
|
31
|
+
@block = block
|
32
|
+
end
|
33
|
+
|
34
|
+
def call
|
35
|
+
instance_exec(*@args, &@block)
|
36
|
+
end
|
37
|
+
|
38
|
+
def method_missing(name)
|
39
|
+
eval(name.to_s, @context) rescue super
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
data/lib/standard/facets/cgi.rb
CHANGED
@@ -1,44 +1,6 @@
|
|
1
1
|
require 'cgi'
|
2
2
|
|
3
|
-
|
3
|
+
require 'facets/cgi/marshal'
|
4
|
+
require 'facets/cgi/escape_html'
|
4
5
|
|
5
|
-
# Create an hidden input field through which an object can can be marshalled.
|
6
|
-
# This makes it very easy to pass from data betwenn requests.
|
7
|
-
def marshal_to_cgi(name, iobj)
|
8
|
-
data = CGI.escape(Marshal.dump(iobj))
|
9
|
-
return %Q{<input type="hidden" name="__#{name}__" value="#{data}"/>\n}
|
10
|
-
end
|
11
6
|
|
12
|
-
# Create an hidden input field through which an object can can be marshalled.
|
13
|
-
# This makes it very easy to pass from data between requests.
|
14
|
-
def marshal_from_cgi(name)
|
15
|
-
if self.params.has_key?("__#{name}__")
|
16
|
-
return Marshal.load(CGI.unescape(self["__#{name}__"][0]))
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
# TODO: Rename CGI#esc ?
|
21
|
-
|
22
|
-
# TODO: Are these two good enough to replace CGI.escape?
|
23
|
-
|
24
|
-
# Return an html "safe" version of the string,
|
25
|
-
# where every &, < and > are replaced with appropriate entities.
|
26
|
-
def esc(str)
|
27
|
-
str.gsub(/&/,'&').gsub(/</,'<').gsub(/>/,'>')
|
28
|
-
end
|
29
|
-
|
30
|
-
# Calls #esc, and then further replaces carriage returns and quote characters with entities.
|
31
|
-
def escformat(str)
|
32
|
-
esc(str).gsub(/[\r\n]+/,' ').gsub(%r|"|,'"').gsub(%r|'|,''')
|
33
|
-
end
|
34
|
-
|
35
|
-
class << self
|
36
|
-
alias :escape_html :escapeHTML
|
37
|
-
alias :unescape_html :unescapeHTML
|
38
|
-
alias :escape_element :escapeElement
|
39
|
-
alias :unescape_element :unescapeElement
|
40
|
-
end
|
41
|
-
|
42
|
-
end
|
43
|
-
|
44
|
-
# Copyright (c) 2005 Thomas Sawyer (Ruby License)
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require 'cgi'
|
2
|
+
|
3
|
+
class CGI
|
4
|
+
|
5
|
+
# Extends `#escape_html` to support escape modes. By default all strings
|
6
|
+
# are escaped on `&`, `>` and `<`. Add the `:nonstandard` mode to omit
|
7
|
+
# this conversion.
|
8
|
+
#
|
9
|
+
# If no mode is given then the `:default` mode is used.
|
10
|
+
#
|
11
|
+
# Available modes include:
|
12
|
+
# * `:quote` - escapes single and double quotes
|
13
|
+
# * `:newlines` - escapes newline characters (\r and \n)
|
14
|
+
# * `:ampersand` - escapes the ampersand sign
|
15
|
+
# * `:brackets` - escapes less-than and greater-than signs
|
16
|
+
# * `:default` - escapes double quotes
|
17
|
+
#
|
18
|
+
# @example
|
19
|
+
# escape_html("<tag>") #=> "<tag>"
|
20
|
+
# escape_html("Example\nString", :newlines) #=> "Example String"
|
21
|
+
# escape_html("\"QUOTE\"", false) #=> "\"QUOTE\""
|
22
|
+
#
|
23
|
+
def self.escape_html(string, *modes)
|
24
|
+
modes << :defualt if modes.empty?
|
25
|
+
|
26
|
+
unless modes.include?(:nonstandard)
|
27
|
+
string = string.gsub(/&/, '&').gsub(/>/, '>').gsub(/</, '<')
|
28
|
+
end
|
29
|
+
|
30
|
+
modes.each do |mode|
|
31
|
+
string = \
|
32
|
+
case mode
|
33
|
+
when :quote, :quotes
|
34
|
+
string.gsub(%r|"|,'"').gsub(%r|'|,''')
|
35
|
+
when :newlines, :newlines
|
36
|
+
string.gsub(/[\r\n]+/,' ')
|
37
|
+
when :ampersand
|
38
|
+
string.gsub(/&/, '&')
|
39
|
+
when :bracket, :brackets
|
40
|
+
string.gsub(/>/, '>').gsub(/</, '<')
|
41
|
+
when :default, true
|
42
|
+
string.gsub(/\"/, '"')
|
43
|
+
when false
|
44
|
+
else
|
45
|
+
raise ArgumentError, "unrecognized HTML escape mode -- #{node}"
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
class << self
|
51
|
+
# @deprecated
|
52
|
+
alias :escapeHTML :escape_html
|
53
|
+
end
|
54
|
+
|
55
|
+
if RUBY_VERSION < '1.9'
|
56
|
+
class << self
|
57
|
+
alias :unescape_html :unescapeHTML
|
58
|
+
alias :escape_element :escapeElement
|
59
|
+
alias :unescape_element :unescapeElement
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'cgi'
|
2
|
+
|
3
|
+
class CGI
|
4
|
+
|
5
|
+
# Create an hidden input field through which an object can can be marshalled.
|
6
|
+
# This makes it very easy to pass form data betwenn requests.
|
7
|
+
def marshal_to_cgi(name, iobj)
|
8
|
+
data = CGI.escape(Marshal.dump(iobj))
|
9
|
+
return %Q{<input type="hidden" name="__#{name}__" value="#{data}"/>\n}
|
10
|
+
end
|
11
|
+
|
12
|
+
# Create an hidden input field through which an object can can be marshalled.
|
13
|
+
# This makes it very easy to pass form data between requests.
|
14
|
+
def marshal_from_cgi(name)
|
15
|
+
if self.params.has_key?("__#{name}__")
|
16
|
+
return Marshal.load(CGI.unescape(self["__#{name}__"][0]))
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
module Kernel
|
2
|
+
private
|
3
|
+
#
|
4
|
+
# CLI is based on Clap library
|
5
|
+
# Copyright (c) 2010 Michel Martens
|
6
|
+
#
|
7
|
+
def cli(*args)
|
8
|
+
opts = args.pop
|
9
|
+
argv = (args.first || ARGV).dup
|
10
|
+
args = []
|
11
|
+
|
12
|
+
# Split option aliases.
|
13
|
+
opts = opts.inject({}) do |h,(k,v)|
|
14
|
+
k.to_s.split(/\s+/).each{|o| h[o]=v}; h
|
15
|
+
end
|
16
|
+
|
17
|
+
# Convert single dash flags into multiple flags.
|
18
|
+
argv = argv.inject([]) do |a, v|
|
19
|
+
if v[0,1] == '-' && v[1,1] != '-'
|
20
|
+
a.concat(v[1..-1].chars.map{|c| "-#{c}"})
|
21
|
+
else
|
22
|
+
a << v
|
23
|
+
end
|
24
|
+
a
|
25
|
+
end
|
26
|
+
|
27
|
+
while argv.any?
|
28
|
+
item = argv.shift
|
29
|
+
flag = opts[item]
|
30
|
+
|
31
|
+
if flag
|
32
|
+
# Work around lambda semantics in 1.8.7.
|
33
|
+
arity = [flag.arity, 0].max
|
34
|
+
|
35
|
+
# Raise if there are not enough parameters
|
36
|
+
# available for the flag.
|
37
|
+
if argv.size < arity
|
38
|
+
raise ArgumentError
|
39
|
+
end
|
40
|
+
|
41
|
+
# Call the lambda with N items from argv,
|
42
|
+
# where N is the lambda's arity.
|
43
|
+
flag.call(*argv.shift(arity))
|
44
|
+
else
|
45
|
+
|
46
|
+
# Collect the items that don't correspond to
|
47
|
+
# flags.
|
48
|
+
args << item
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
args
|
53
|
+
end
|
54
|
+
end
|