mack-facets 0.8.1 → 0.8.2
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/lib/gems.rb +25 -0
- data/lib/gems/english-0.3.1/VERSION +1 -0
- data/lib/gems/english-0.3.1/lib/english/array.rb +48 -0
- data/lib/gems/english-0.3.1/lib/english/censor.rb +76 -0
- data/lib/gems/english-0.3.1/lib/english/double_metaphone.rb +353 -0
- data/lib/gems/english-0.3.1/lib/english/dresner.rb +47 -0
- data/lib/gems/english-0.3.1/lib/english/inflect.rb +299 -0
- data/lib/gems/english-0.3.1/lib/english/jumble.rb +37 -0
- data/lib/gems/english-0.3.1/lib/english/levenshtein.rb +78 -0
- data/lib/gems/english-0.3.1/lib/english/metaphone.rb +110 -0
- data/lib/gems/english-0.3.1/lib/english/numerals.rb +71 -0
- data/lib/gems/english-0.3.1/lib/english/patterns.rb +49 -0
- data/lib/gems/english-0.3.1/lib/english/porter_stemming.rb +188 -0
- data/lib/gems/english-0.3.1/lib/english/roman.rb +174 -0
- data/lib/gems/english-0.3.1/lib/english/similarity.rb +103 -0
- data/lib/gems/english-0.3.1/lib/english/soundex.rb +70 -0
- data/lib/gems/english-0.3.1/lib/english/string.rb +210 -0
- data/lib/gems/english-0.3.1/lib/english/style.rb +294 -0
- data/lib/gems/english-0.3.1/lib/english/style_orm.rb +143 -0
- data/lib/gems/english-0.3.1/lib/english/textfilter.rb +91 -0
- data/lib/gems/extlib-0.9.8/lib/extlib.rb +56 -0
- data/lib/gems/extlib-0.9.8/lib/extlib/assertions.rb +8 -0
- data/lib/gems/extlib-0.9.8/lib/extlib/blank.rb +59 -0
- data/lib/gems/extlib-0.9.8/lib/extlib/boolean.rb +11 -0
- data/lib/gems/extlib-0.9.8/lib/extlib/class.rb +175 -0
- data/lib/gems/extlib-0.9.8/lib/extlib/datetime.rb +9 -0
- data/lib/gems/extlib-0.9.8/lib/extlib/dictionary.rb +433 -0
- data/lib/gems/extlib-0.9.8/lib/extlib/hash.rb +419 -0
- data/lib/gems/extlib-0.9.8/lib/extlib/hook.rb +366 -0
- data/lib/gems/extlib-0.9.8/lib/extlib/inflection.rb +435 -0
- data/lib/gems/extlib-0.9.8/lib/extlib/lazy_array.rb +106 -0
- data/lib/gems/extlib-0.9.8/lib/extlib/logger.rb +202 -0
- data/lib/gems/extlib-0.9.8/lib/extlib/mash.rb +148 -0
- data/lib/gems/extlib-0.9.8/lib/extlib/module.rb +41 -0
- data/lib/gems/extlib-0.9.8/lib/extlib/nil.rb +5 -0
- data/lib/gems/extlib-0.9.8/lib/extlib/numeric.rb +5 -0
- data/lib/gems/extlib-0.9.8/lib/extlib/object.rb +175 -0
- data/lib/gems/extlib-0.9.8/lib/extlib/object_space.rb +13 -0
- data/lib/gems/extlib-0.9.8/lib/extlib/pathname.rb +5 -0
- data/lib/gems/extlib-0.9.8/lib/extlib/pooling.rb +239 -0
- data/lib/gems/extlib-0.9.8/lib/extlib/rubygems.rb +38 -0
- data/lib/gems/extlib-0.9.8/lib/extlib/simple_set.rb +39 -0
- data/lib/gems/extlib-0.9.8/lib/extlib/string.rb +132 -0
- data/lib/gems/extlib-0.9.8/lib/extlib/struct.rb +8 -0
- data/lib/gems/extlib-0.9.8/lib/extlib/symbol.rb +17 -0
- data/lib/gems/extlib-0.9.8/lib/extlib/tasks/release.rb +15 -0
- data/lib/gems/extlib-0.9.8/lib/extlib/time.rb +19 -0
- data/lib/gems/extlib-0.9.8/lib/extlib/version.rb +3 -0
- data/lib/gems/extlib-0.9.8/lib/extlib/virtual_file.rb +10 -0
- data/lib/gems/facets-2.4.5/VERSION +1 -0
- data/lib/gems/facets-2.4.5/lib/core/facets-live.rb +17 -0
- data/lib/gems/facets-2.4.5/lib/core/facets-load.rb +12 -0
- data/lib/gems/facets-2.4.5/lib/core/facets.rb +11 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/array.rb +6 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/array/combination.rb +59 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/array/conjoin.rb +58 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/array/delete.rb +61 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/array/index.rb +48 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/array/indexable.rb +73 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/array/merge.rb +21 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/array/not_empty.rb +13 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/array/only.rb +21 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/array/pad.rb +41 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/array/permutation.rb +30 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/array/product.rb +57 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/array/recursively.rb +30 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/array/rotate.rb +42 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/array/select.rb +16 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/array/splice.rb +30 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/array/stackable.rb +33 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/array/traverse.rb +22 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/binding.rb +6 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/binding/caller.rb +54 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/binding/defined.rb +13 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/binding/eval.rb +18 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/binding/local_variables.rb +15 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/binding/self.rb +12 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/bitmask.rb +104 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/blank.rb +60 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/boolean.rb +156 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/callstack.rb +52 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/cattr.rb +2 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/class.rb +6 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/class/cattr.rb +115 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/class/cattr_accessor.rb +1 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/class/cattr_reader.rb +1 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/class/cattr_writer.rb +1 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/class/descendents.rb +36 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/class/methodize.rb +14 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/class/pathize.rb +14 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/class/prepend.rb +50 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/class/subclasses.rb +2 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/class/to_proc.rb +42 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/comparable.rb +6 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/comparable/bound.rb +65 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/comparable/cmp.rb +38 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/comparable/comparable.rb +42 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/dir.rb +6 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/dir/ascend.rb +59 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/dir/descend.rb +1 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/dir/multiglob.rb +92 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/dir/parent.rb +13 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/dir/recurse.rb +29 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/enumerable.rb +6 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/enumerable/accumulate.rb +21 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/enumerable/cluster_by.rb +21 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/enumerable/collect.rb +54 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/enumerable/commonality.rb +33 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/enumerable/count.rb +26 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/enumerable/divide.rb +33 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/enumerable/duplicates.rb +38 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/enumerable/each_by.rb +33 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/enumerable/entropy.rb +37 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/enumerable/frequency.rb +18 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/enumerable/group_by.rb +27 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/enumerable/inject.rb +31 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/enumerable/map_send.rb +12 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/enumerable/mash.rb +32 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/enumerable/mode.rb +16 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/enumerable/modulate.rb +22 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/enumerable/none.rb +31 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/enumerable/occur.rb +38 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/enumerable/one.rb +38 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/enumerable/probability.rb +36 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/enumerable/split.rb +27 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/enumerable/sum.rb +16 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/enumerable/uniq_by.rb +18 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/exception.rb +6 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/exception/detail.rb +19 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/exception/suppress.rb +21 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/file.rb +6 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/file/append.rb +14 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/file/create.rb +21 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/file/null.rb +21 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/file/read.rb +41 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/file/rewrite.rb +88 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/file/rootname.rb +33 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/file/split_root.rb +10 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/file/write.rb +22 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/file/writelines.rb +24 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/filetest.rb +6 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/filetest/root.rb +17 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/float.rb +6 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/float/round.rb +2 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/functor.rb +77 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/hash.rb +6 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/hash/alias.rb +31 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/hash/argumentize.rb +22 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/hash/at.rb +8 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/hash/autonew.rb +42 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/hash/collate.rb +45 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/hash/delete.rb +47 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/hash/diff.rb +11 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/hash/except.rb +27 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/hash/insert.rb +19 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/hash/inverse.rb +27 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/hash/join.rb +14 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/hash/keys.rb +45 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/hash/mash.rb +18 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/hash/merge.rb +30 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/hash/op.rb +7 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/hash/op_add.rb +12 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/hash/op_and.rb +33 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/hash/op_mul.rb +18 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/hash/op_or.rb +12 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/hash/op_push.rb +17 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/hash/op_sub.rb +26 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/hash/recursive_merge.rb +33 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/hash/recursively.rb +29 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/hash/rekey.rb +59 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/hash/select.rb +14 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/hash/slice.rb +33 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/hash/swap.rb +17 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/hash/to_h.rb +1 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/hash/to_proc.rb +41 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/hash/to_struct.rb +17 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/hash/traverse.rb +41 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/hash/update.rb +81 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/hash/weave.rb +81 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/hash/zipnew.rb +2 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/indexable.rb +251 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/integer.rb +6 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/integer/even.rb +1 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/integer/factorial.rb +30 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/integer/multiple.rb +15 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/integer/odd.rb +35 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/integer/of.rb +18 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/integer/ordinal.rb +24 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/kernel.rb +6 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/kernel/__callee__.rb +1 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/kernel/__class__.rb +9 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/kernel/__dir__.rb +12 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/kernel/__get__.rb +10 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/kernel/__method__.rb +36 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/kernel/__set__.rb +1 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/kernel/as.rb +100 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/kernel/ask.rb +27 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/kernel/attr_singleton.rb +62 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/kernel/complete.rb +18 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/kernel/constant.rb +24 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/kernel/d.rb +26 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/kernel/deep_copy.rb +13 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/kernel/demo.rb +23 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/kernel/ergo.rb +42 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/kernel/here.rb +12 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/kernel/in.rb +13 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/kernel/instance.rb +19 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/kernel/instance_assign.rb +41 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/kernel/instance_class.rb +24 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/kernel/instance_exec.rb +40 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/kernel/instance_send.rb +7 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/kernel/instance_variables.rb +99 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/kernel/maybe.rb +18 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/kernel/not_nil.rb +17 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/kernel/object_class.rb +10 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/kernel/object_hexid.rb +12 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/kernel/object_send.rb +32 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/kernel/p.rb +24 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/kernel/populate.rb +73 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/kernel/qua_class.rb +19 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/kernel/require_all.rb +21 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/kernel/require_local.rb +24 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/kernel/resc.rb +16 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/kernel/respond.rb +23 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/kernel/returning.rb +23 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/kernel/silence.rb +75 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/kernel/singleton_class.rb +19 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/kernel/tap.rb +32 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/kernel/try.rb +23 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/kernel/val.rb +19 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/kernel/with.rb +20 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/lazy.rb +238 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/matchdata.rb +6 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/matchdata/match.rb +15 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/matchdata/matchset.rb +44 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/metaid.rb +94 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/module.rb +6 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/module/abstract.rb +21 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/module/alias_accessor.rb +45 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/module/alias_method_chain.rb +50 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/module/alias_module_function.rb +30 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/module/ancestor.rb +16 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/module/basename.rb +31 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/module/can.rb +14 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/module/class.rb +12 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/module/conflict.rb +63 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/module/include_function_module.rb +25 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/module/instance_methods.rb +40 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/module/integrate.rb +2 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/module/is.rb +57 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/module/methodize.rb +14 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/module/modspace.rb +22 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/module/module_load.rb +56 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/module/nesting.rb +18 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/module/op.rb +95 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/module/pathize.rb +22 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/module/prepend.rb +26 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/module/redefine_method.rb +35 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/module/redirect_method.rb +45 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/module/rename_method.rb +20 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/module/revise.rb +62 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/module/spacename.rb +25 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/module/wrap_method.rb +28 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/nilclass.rb +6 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/nilclass/ergo.rb +1 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/nilclass/to_f.rb +17 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/numeric.rb +6 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/numeric/approx.rb +15 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/numeric/distance.rb +14 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/numeric/round.rb +72 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/proc.rb +6 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/proc/bind.rb +22 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/proc/compose.rb +42 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/proc/curry.rb +31 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/proc/to_method.rb +33 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/proc/update.rb +9 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/range.rb +6 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/range/combine.rb +47 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/range/overlap.rb +13 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/range/to_r.rb +26 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/range/umbrella.rb +1 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/range/within.rb +66 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/regexp.rb +6 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/regexp/arity.rb +17 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/regexp/to_re.rb +28 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/stackable.rb +86 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/string.rb +6 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/string/align.rb +106 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/string/bracket.rb +105 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/string/bytes.rb +15 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/string/camelcase.rb +26 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/string/capitalized.rb +46 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/string/chars.rb +16 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/string/chomp.rb +33 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/string/cleave.rb +36 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/string/divide.rb +21 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/string/each_char.rb +29 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/string/each_word.rb +13 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/string/end_with.rb +1 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/string/fold.rb +39 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/string/interpolate.rb +20 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/string/line_wrap.rb +21 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/string/lines.rb +16 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/string/methodize.rb +17 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/string/modulize.rb +21 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/string/mscan.rb +19 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/string/natcmp.rb +88 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/string/nchar.rb +28 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/string/op_sub.rb +14 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/string/pathize.rb +16 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/string/range.rb +77 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/string/rewrite.rb +28 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/string/shatter.rb +22 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/string/snakecase.rb +21 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/string/splice.rb +37 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/string/start_with.rb +32 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/string/subtract.rb +4 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/string/tab.rb +103 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/string/titlecase.rb +15 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/string/to_re.rb +26 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/string/variablize.rb +13 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/string/word_wrap.rb +34 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/string/words.rb +12 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/string/xor.rb +22 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/symbol.rb +6 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/symbol/chomp.rb +24 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/symbol/generate.rb +24 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/symbol/not.rb +29 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/symbol/plain.rb +17 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/symbol/query.rb +1 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/symbol/re_s.rb +18 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/symbol/setter.rb +1 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/symbol/succ.rb +19 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/symbol/to_proc.rb +38 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/symbol/variablize.rb +12 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/time.rb +6 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/time/advance.rb +17 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/time/ago.rb +1 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/time/change.rb +41 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/time/elapse.rb +16 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/time/hence.rb +94 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/time/round.rb +17 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/time/set.rb +21 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/time/stamp.rb +44 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/time/to_time.rb +21 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/time/trunc.rb +15 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/to_hash.rb +87 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/unboundmethod.rb +6 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/unboundmethod/arguments.rb +44 -0
- data/lib/gems/facets-2.4.5/lib/core/facets/unboundmethod/name.rb +25 -0
- data/lib/gems/facets-2.4.5/lib/lore/facets/basicobject.rb +14 -0
- data/lib/gems/facets-2.4.5/lib/lore/facets/cgi.rb +50 -0
- data/lib/gems/facets-2.4.5/lib/lore/facets/continuation.rb +57 -0
- data/lib/gems/facets-2.4.5/lib/lore/facets/date.rb +396 -0
- data/lib/gems/facets-2.4.5/lib/lore/facets/fileutils.rb +27 -0
- data/lib/gems/facets-2.4.5/lib/lore/facets/fileutils/head.rb +1 -0
- data/lib/gems/facets-2.4.5/lib/lore/facets/fileutils/safe_ln.rb +28 -0
- data/lib/gems/facets-2.4.5/lib/lore/facets/fileutils/slice.rb +141 -0
- data/lib/gems/facets-2.4.5/lib/lore/facets/fileutils/tail.rb +1 -0
- data/lib/gems/facets-2.4.5/lib/lore/facets/fileutils/wc.rb +114 -0
- data/lib/gems/facets-2.4.5/lib/lore/facets/fileutils/whereis.rb +64 -0
- data/lib/gems/facets-2.4.5/lib/lore/facets/fileutils/which.rb +101 -0
- data/lib/gems/facets-2.4.5/lib/lore/facets/getoptlong.rb +71 -0
- data/lib/gems/facets-2.4.5/lib/lore/facets/logger.rb +291 -0
- data/lib/gems/facets-2.4.5/lib/lore/facets/ostruct.rb +238 -0
- data/lib/gems/facets-2.4.5/lib/lore/facets/pathname.rb +172 -0
- data/lib/gems/facets-2.4.5/lib/lore/facets/rbconfig.rb +45 -0
- data/lib/gems/facets-2.4.5/lib/lore/facets/set.rb +27 -0
- data/lib/gems/facets-2.4.5/lib/lore/facets/shellwords.rb +89 -0
- data/lib/gems/facets-2.4.5/lib/lore/facets/uri.rb +249 -0
- data/lib/gems/facets-2.4.5/lib/lore/facets/yaml.rb +75 -0
- data/lib/gems/facets-2.4.5/lib/lore/facets/zlib.rb +38 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/1stclassmethod.rb +140 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/advisable.rb +162 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/annotations.rb +302 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/ansicode.rb +315 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/arguments.rb +365 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/argvector.rb +353 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/association.rb +194 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/attr.rb +208 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/autoarray.rb +62 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/autoreload.rb +150 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/basex.rb +37 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/bbcode.rb +397 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/bicrypt.rb +265 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/binding/opvars.rb +24 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/binreadable.rb +221 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/blankslate.rb +66 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/buildable.rb +344 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/bytes.rb +175 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/cachedecorator.rb +117 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/capsule.rb +258 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/chain.rb +58 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/class_extension.rb +114 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/classmethods.rb +199 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/cloneable.rb +76 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/command.rb +439 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/consoleutils.rb +113 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/coroutine.rb +159 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/crypt.rb +166 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/cssfilter.rb +254 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/daemonize.rb +44 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/dependency.rb +151 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/dictionary.rb +478 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/dictionarymatcher.rb +136 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/downloader.rb +281 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/duplicable.rb +43 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/duration.rb +540 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/elementor.rb +133 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/elementwise.rb +61 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/enumerablepass.rb +217 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/equatable.rb +120 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/eventhook.rb +132 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/expirable.rb +82 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/fileable.rb +162 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/filelist.rb +497 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/fileshell.rb +202 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/hash/stringify_keys.rb +1 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/hash/symbolize_keys.rb +94 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/heap.rb +22 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/htmlfilter.rb +595 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/infinity.rb +193 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/inheritor.rb +130 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/ini.rb +264 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/instantiable.rb +47 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/instantise.rb +1 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/instantize.rb +95 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/interval.rb +282 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/ioredirect.rb +130 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/iteration.rb +65 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/kernel/meta.rb +32 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/linkedlist.rb +222 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/lrucache.rb +157 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/main.rb +70 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/memoize.rb +116 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/methodspace.rb +141 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/minitar.rb +1063 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/multipliers.rb +109 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/multiton.rb +386 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/nackclass.rb +41 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/net/smtp_tls.rb +131 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/nilstatus.rb +47 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/nullclass.rb +74 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/opencascade.rb +94 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/opencollection.rb +43 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/openhash.rb +39 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/openobject.rb +267 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/opesc.rb +60 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/orderedhash.rb +37 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/overload.rb +94 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/paramix.rb +202 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/partial.rb +37 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/pathlist.rb +112 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/platform.rb +192 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/pool.rb +91 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/pqueue.rb +449 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/progressbar.rb +253 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/prototype.rb +88 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/random.rb +451 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/rbsystem.rb +222 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/recorder.rb +109 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/reference.rb +99 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/reflection.rb +145 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/registerable.rb +35 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/rwdelegator.rb +74 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/semaphore.rb +92 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/settings.rb +248 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/snapshot.rb +209 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/string/mask.rb +278 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/string/words.rb +173 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/succ.rb +44 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/syncarray.rb +114 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/synchash.rb +157 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/tagiter.rb +366 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/thread.rb +51 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/timer.rb +274 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/times.rb +431 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/tracepoint.rb +209 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/tuple.rb +325 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/typecast.rb +261 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/uninheritable.rb +50 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/uploadutils.rb +464 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/version.rb +136 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/xmlhash.rb +112 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/xoxo.rb +259 -0
- data/lib/gems/facets-2.4.5/lib/more/facets/ziputils.rb +349 -0
- data/lib/mack-facets.rb +4 -2
- data/lib/mack-facets/english_extensions/inflect.rb +50 -50
- data/lib/mack-facets/extensions/string.rb +10 -1
- data/lib/mack-facets/utils/inflections.rb +50 -47
- data/lib/mack-facets/utils/inflector.rb +19 -19
- metadata +547 -36
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
# = ANSICode
|
|
2
|
+
#
|
|
3
|
+
# Module which makes it very easy to use ANSI codes.
|
|
4
|
+
# These are esspecially nice for beautifying shell output.
|
|
5
|
+
#
|
|
6
|
+
# include ANSICode
|
|
7
|
+
#
|
|
8
|
+
# p red, "Hello", blue, "World"
|
|
9
|
+
# => "\e[31mHello\e[34mWorld"
|
|
10
|
+
#
|
|
11
|
+
# p red { "Hello" } + blue { "World" }
|
|
12
|
+
# => "\e[31mHello\e[0m\e[34mWorld\e[0m"
|
|
13
|
+
#
|
|
14
|
+
# == Supported ANSI Comands
|
|
15
|
+
#
|
|
16
|
+
# The following is a list of supported codes.
|
|
17
|
+
#
|
|
18
|
+
# save
|
|
19
|
+
# restore
|
|
20
|
+
# clear_screen
|
|
21
|
+
# cls # synonym for :clear_screen
|
|
22
|
+
# clear_line
|
|
23
|
+
# clr # synonym for :clear_line
|
|
24
|
+
# move
|
|
25
|
+
# up
|
|
26
|
+
# down
|
|
27
|
+
# left
|
|
28
|
+
# right
|
|
29
|
+
# display
|
|
30
|
+
#
|
|
31
|
+
# clear
|
|
32
|
+
# reset # synonym for :clear
|
|
33
|
+
# bold
|
|
34
|
+
# dark
|
|
35
|
+
# italic # not widely implemented
|
|
36
|
+
# underline
|
|
37
|
+
# underscore # synonym for :underline
|
|
38
|
+
# blink
|
|
39
|
+
# rapid_blink # not widely implemented
|
|
40
|
+
# negative # no reverse because of String#reverse
|
|
41
|
+
# concealed
|
|
42
|
+
# strikethrough # not widely implemented
|
|
43
|
+
#
|
|
44
|
+
# black
|
|
45
|
+
# red
|
|
46
|
+
# green
|
|
47
|
+
# yellow
|
|
48
|
+
# blue
|
|
49
|
+
# magenta
|
|
50
|
+
# cyan
|
|
51
|
+
# white
|
|
52
|
+
#
|
|
53
|
+
# on_black
|
|
54
|
+
# on_red
|
|
55
|
+
# on_green
|
|
56
|
+
# on_yellow
|
|
57
|
+
# on_blue
|
|
58
|
+
# on_magenta
|
|
59
|
+
# on_cyan
|
|
60
|
+
# on_white
|
|
61
|
+
#
|
|
62
|
+
# == Authors
|
|
63
|
+
#
|
|
64
|
+
# * Florian Frank
|
|
65
|
+
# * Thomas Sawyer
|
|
66
|
+
#
|
|
67
|
+
# == Speical Thanks
|
|
68
|
+
#
|
|
69
|
+
# Special thanks to Florian Frank. ANSICode is a partial adaptation
|
|
70
|
+
# of ANSIColor, Copyright (c) 2002 Florian Frank, LGPL.
|
|
71
|
+
#
|
|
72
|
+
# == Todo
|
|
73
|
+
#
|
|
74
|
+
# * Need to add rest of ANSI codes. Include modes?
|
|
75
|
+
# * Re-evaluate how color/yielding methods are defined.
|
|
76
|
+
# * Maybe up, down, right, left should have yielding methods too?
|
|
77
|
+
#
|
|
78
|
+
# == Copying
|
|
79
|
+
#
|
|
80
|
+
# Copyright (c) 2004 Florian Frank, Thomas Sawyer
|
|
81
|
+
#
|
|
82
|
+
# Ruby License
|
|
83
|
+
#
|
|
84
|
+
# This module is free software. You may use, modify, and/or redistribute this
|
|
85
|
+
# software under the same terms as Ruby.
|
|
86
|
+
#
|
|
87
|
+
# This program is distributed in the hope that it will be useful, but WITHOUT
|
|
88
|
+
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
89
|
+
# FOR A PARTICULAR PURPOSE.
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
# = ANSICode
|
|
93
|
+
#
|
|
94
|
+
# Module which makes it very easy to use ANSI codes.
|
|
95
|
+
# These are esspecially nice for beautifying shell output.
|
|
96
|
+
#
|
|
97
|
+
# include ANSICode
|
|
98
|
+
#
|
|
99
|
+
# p red, "Hello", blue, "World"
|
|
100
|
+
# => "\e[31mHello\e[34mWorld"
|
|
101
|
+
#
|
|
102
|
+
# p red { "Hello" } + blue { "World" }
|
|
103
|
+
# => "\e[31mHello\e[0m\e[34mWorld\e[0m"
|
|
104
|
+
#
|
|
105
|
+
# == Supported ANSI Comands
|
|
106
|
+
#
|
|
107
|
+
# The following is a list of supported codes.
|
|
108
|
+
#
|
|
109
|
+
# save
|
|
110
|
+
# restore
|
|
111
|
+
# clear_screen
|
|
112
|
+
# cls # synonym for :clear_screen
|
|
113
|
+
# clear_line
|
|
114
|
+
# clr # synonym for :clear_line
|
|
115
|
+
# move
|
|
116
|
+
# up
|
|
117
|
+
# down
|
|
118
|
+
# left
|
|
119
|
+
# right
|
|
120
|
+
# display
|
|
121
|
+
#
|
|
122
|
+
# clear
|
|
123
|
+
# reset # synonym for :clear
|
|
124
|
+
# bold
|
|
125
|
+
# dark
|
|
126
|
+
# italic # not widely implemented
|
|
127
|
+
# underline
|
|
128
|
+
# underscore # synonym for :underline
|
|
129
|
+
# blink
|
|
130
|
+
# rapid_blink # not widely implemented
|
|
131
|
+
# negative # no reverse because of String#reverse
|
|
132
|
+
# concealed
|
|
133
|
+
# strikethrough # not widely implemented
|
|
134
|
+
#
|
|
135
|
+
# black
|
|
136
|
+
# red
|
|
137
|
+
# green
|
|
138
|
+
# yellow
|
|
139
|
+
# blue
|
|
140
|
+
# magenta
|
|
141
|
+
# cyan
|
|
142
|
+
# white
|
|
143
|
+
#
|
|
144
|
+
# on_black
|
|
145
|
+
# on_red
|
|
146
|
+
# on_green
|
|
147
|
+
# on_yellow
|
|
148
|
+
# on_blue
|
|
149
|
+
# on_magenta
|
|
150
|
+
# on_cyan
|
|
151
|
+
# on_white
|
|
152
|
+
#
|
|
153
|
+
module ANSICode
|
|
154
|
+
|
|
155
|
+
extend self
|
|
156
|
+
|
|
157
|
+
# Save current cursor positon.
|
|
158
|
+
|
|
159
|
+
def save
|
|
160
|
+
"\e[s"
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
# Restore saved cursor positon.
|
|
164
|
+
|
|
165
|
+
def restore
|
|
166
|
+
"\e[u"
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
# Clear the screen and move cursor to home.
|
|
170
|
+
|
|
171
|
+
def clear_screen
|
|
172
|
+
"\e[2J"
|
|
173
|
+
end
|
|
174
|
+
alias_method :cls, :clear_screen
|
|
175
|
+
|
|
176
|
+
# Clear to the end of the current line.
|
|
177
|
+
|
|
178
|
+
def clear_line
|
|
179
|
+
"\e[K"
|
|
180
|
+
end
|
|
181
|
+
alias_method :clr, :clear_line
|
|
182
|
+
|
|
183
|
+
#--
|
|
184
|
+
#def position
|
|
185
|
+
# "\e[#;#R"
|
|
186
|
+
#end
|
|
187
|
+
#++
|
|
188
|
+
|
|
189
|
+
# Move curose to line and column.
|
|
190
|
+
|
|
191
|
+
def move( line, column=0 )
|
|
192
|
+
"\e[#{line.to_i};#{column.to_i}H"
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
# Move cursor up a specificed number of spaces.
|
|
196
|
+
|
|
197
|
+
def up( spaces=1 )
|
|
198
|
+
"\e[#{spaces.to_i}A"
|
|
199
|
+
end
|
|
200
|
+
|
|
201
|
+
# Move cursor down a specificed number of spaces.
|
|
202
|
+
|
|
203
|
+
def down( spaces=1 )
|
|
204
|
+
"\e[#{spaces.to_i}B"
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
# Move cursor left a specificed number of spaces.
|
|
208
|
+
|
|
209
|
+
def left( spaces=1 )
|
|
210
|
+
"\e[#{spaces.to_i}D"
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
# Move cursor right a specificed number of spaces.
|
|
214
|
+
|
|
215
|
+
def right( spaces=1 )
|
|
216
|
+
"\e[#{spaces.to_i}C"
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
# Like +move+ but returns to original positon
|
|
220
|
+
# after yielding block or adding string argument.
|
|
221
|
+
|
|
222
|
+
def display( line, column=0, string=nil ) #:yield:
|
|
223
|
+
result = "\e[s"
|
|
224
|
+
result << "\e[#{line.to_i};#{column.to_i}H"
|
|
225
|
+
if block_given?
|
|
226
|
+
result << yield
|
|
227
|
+
result << "\e[u"
|
|
228
|
+
elsif string
|
|
229
|
+
result << string
|
|
230
|
+
result << "\e[u"
|
|
231
|
+
elsif respond_to?(:to_str)
|
|
232
|
+
result << self
|
|
233
|
+
result << "\e[u"
|
|
234
|
+
end
|
|
235
|
+
return result
|
|
236
|
+
end
|
|
237
|
+
|
|
238
|
+
# Define color codes.
|
|
239
|
+
|
|
240
|
+
def self.define_ansicolor_method(name,code)
|
|
241
|
+
class_eval <<-HERE
|
|
242
|
+
def #{name.to_s}(string = nil)
|
|
243
|
+
result = "\e[#{code}m"
|
|
244
|
+
if block_given?
|
|
245
|
+
result << yield
|
|
246
|
+
result << "\e[0m"
|
|
247
|
+
elsif string
|
|
248
|
+
result << string
|
|
249
|
+
result << "\e[0m"
|
|
250
|
+
elsif respond_to?(:to_str)
|
|
251
|
+
result << self
|
|
252
|
+
result << "\e[0m"
|
|
253
|
+
end
|
|
254
|
+
return result
|
|
255
|
+
end
|
|
256
|
+
HERE
|
|
257
|
+
end
|
|
258
|
+
|
|
259
|
+
@@colors = [
|
|
260
|
+
[ :clear , 0 ],
|
|
261
|
+
[ :reset , 0 ], # synonym for :clear
|
|
262
|
+
[ :bold , 1 ],
|
|
263
|
+
[ :dark , 2 ],
|
|
264
|
+
[ :italic , 3 ], # not widely implemented
|
|
265
|
+
[ :underline , 4 ],
|
|
266
|
+
[ :underscore , 4 ], # synonym for :underline
|
|
267
|
+
[ :blink , 5 ],
|
|
268
|
+
[ :rapid_blink , 6 ], # not widely implemented
|
|
269
|
+
[ :negative , 7 ], # no reverse because of String#reverse
|
|
270
|
+
[ :concealed , 8 ],
|
|
271
|
+
[ :strikethrough, 9 ], # not widely implemented
|
|
272
|
+
[ :black , 30 ],
|
|
273
|
+
[ :red , 31 ],
|
|
274
|
+
[ :green , 32 ],
|
|
275
|
+
[ :yellow , 33 ],
|
|
276
|
+
[ :blue , 34 ],
|
|
277
|
+
[ :magenta , 35 ],
|
|
278
|
+
[ :cyan , 36 ],
|
|
279
|
+
[ :white , 37 ],
|
|
280
|
+
[ :on_black , 40 ],
|
|
281
|
+
[ :on_red , 41 ],
|
|
282
|
+
[ :on_green , 42 ],
|
|
283
|
+
[ :on_yellow , 43 ],
|
|
284
|
+
[ :on_blue , 44 ],
|
|
285
|
+
[ :on_magenta , 45 ],
|
|
286
|
+
[ :on_cyan , 46 ],
|
|
287
|
+
[ :on_white , 47 ],
|
|
288
|
+
]
|
|
289
|
+
|
|
290
|
+
@@colors.each do |c, v|
|
|
291
|
+
define_ansicolor_method(c, v)
|
|
292
|
+
end
|
|
293
|
+
|
|
294
|
+
ColoredRegexp = /\e\[([34][0-7]|[0-9])m/
|
|
295
|
+
|
|
296
|
+
def uncolored(string = nil)
|
|
297
|
+
if block_given?
|
|
298
|
+
yield.gsub(ColoredRegexp, '')
|
|
299
|
+
elsif string
|
|
300
|
+
string.gsub(ColoredRegexp, '')
|
|
301
|
+
elsif respond_to?(:to_str)
|
|
302
|
+
gsub(ColoredRegexp, '')
|
|
303
|
+
else
|
|
304
|
+
''
|
|
305
|
+
end
|
|
306
|
+
end
|
|
307
|
+
|
|
308
|
+
module_function
|
|
309
|
+
|
|
310
|
+
def colors
|
|
311
|
+
@@colors.map { |c| c[0] }
|
|
312
|
+
end
|
|
313
|
+
|
|
314
|
+
end
|
|
315
|
+
|
|
@@ -0,0 +1,365 @@
|
|
|
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
|
+
|