facets 1.7.46 → 1.8.0
Sign up to get free protection for your applications and to get access to all the features.
- data/PROJECT +41 -23
- data/Rakefile +164 -0
- data/VERSION +1 -1
- data/demo/cuts/benchmark.rb +71 -0
- data/demo/cuts/override.rb +33 -0
- data/doc/AUTHORS +1 -0
- data/doc/{CHANGELOG.1 → HISTORY.1} +0 -0
- data/doc/HISTORY.txt +798 -0
- data/doc/LATEST +240 -0
- data/lib/facet/ann.rb +1 -0
- data/lib/facet/ann_attr.rb +1 -0
- data/lib/facet/arguments.rb +1 -0
- data/lib/facet/array/index.rb +1 -0
- data/lib/facet/array/to_path.rb +1 -0
- data/lib/facet/autoscript.rb +1 -0
- data/lib/facet/autovivify.rb +1 -0
- data/lib/facet/behvior.rb +1 -0
- data/lib/facet/buildingblock.rb +1 -0
- data/lib/facet/class/class_load.rb +1 -0
- data/lib/facet/class/class_require.rb +1 -0
- data/lib/facet/config/inspect.rb +1 -0
- data/lib/facet/consoleutils.rb +1 -0
- data/lib/facet/dependency.rb +1 -0
- data/lib/facet/dir/self/multiglob.rb +1 -0
- data/lib/facet/dir/self/multiglob_recurse.rb +1 -0
- data/lib/facet/dir/self/multiglob_sum.rb +1 -0
- data/lib/facet/enumerable/injecting.rb +1 -0
- data/lib/facet/file/self/yaml.rb +1 -0
- data/lib/facet/fileutils/compress.rb +1 -0
- data/lib/facet/fileutils/stage.rb +1 -0
- data/lib/facet/fileutils/staged.rb +1 -0
- data/lib/facet/hash/insert.rb +1 -0
- data/lib/facet/hash/op_add.rb +1 -0
- data/lib/facet/hash/op_and.rb +1 -0
- data/lib/facet/hash/op_mul.rb +1 -0
- data/lib/facet/hash/op_or.rb +1 -0
- data/lib/facet/hash/op_sub.rb +1 -0
- data/lib/facet/hash/pairs_at.rb +1 -0
- data/lib/facet/hash/rekey.rb +1 -0
- data/lib/facet/htmlfilter.rb +1 -0
- data/lib/facet/integer/to_roman.rb +1 -0
- data/lib/facet/kernel/ask.rb +1 -0
- data/lib/facet/kernel/class_def.rb +1 -0
- data/lib/facet/kernel/daemonize.rb +1 -0
- data/lib/facet/kernel/enable_warnings.rb +1 -0
- data/lib/facet/kernel/instance_class.rb +1 -0
- data/lib/facet/kernel/instance_values.rb +1 -0
- data/lib/facet/kernel/meta_alias.rb +1 -0
- data/lib/facet/kernel/meta_class.rb +1 -0
- data/lib/facet/kernel/meta_def.rb +1 -0
- data/lib/facet/kernel/meta_eval.rb +1 -0
- data/lib/facet/kernel/object_send.rb +1 -0
- data/lib/facet/kernel/populate.rb +1 -0
- data/lib/facet/kernel/qua_class.rb +1 -0
- data/lib/facet/kernel/silence_stream.rb +1 -0
- data/lib/facet/kernel/super_at.rb +1 -0
- data/lib/facet/kernel/supress.rb +1 -0
- data/lib/facet/kernel/with.rb +1 -0
- data/lib/facet/kernel/yaml.rb +1 -0
- data/lib/facet/minitar.rb +1 -0
- data/lib/facet/module/alias_accessor.rb +1 -0
- data/lib/facet/module/include_and_extend.rb +1 -0
- data/lib/facet/module/include_function_module.rb +1 -0
- data/lib/facet/module/module_load.rb +1 -0
- data/lib/facet/module/module_method.rb +1 -0
- data/lib/facet/module/module_require.rb +1 -0
- data/lib/facet/module/new.rb +1 -0
- data/lib/facet/module/prepend.rb +1 -0
- data/lib/facet/openhash.rb +1 -0
- data/lib/facet/ostruct/instance_delegate.rb +1 -0
- data/lib/facet/populate.rb +1 -0
- data/lib/facet/proc/bind.rb +1 -0
- data/lib/facet/proc/to_h.rb +1 -0
- data/lib/facet/proc/update.rb +1 -0
- data/lib/facet/script.rb +1 -0
- data/lib/facet/string/rewrite.rb +1 -0
- data/lib/facet/symbol/chomp.rb +1 -0
- data/lib/facet/uploadutils.rb +1 -0
- data/lib/facet/version_number.rb +1 -0
- data/lib/facets.rb +3 -207
- data/lib/facets/automatic.rb +29 -0
- data/lib/facets/core/all.rb +1 -1
- data/lib/facets/core/array/index.rb +15 -0
- data/lib/facets/core/array/to_path.rb +11 -0
- data/lib/facets/core/class/class_load.rb +3 -0
- data/lib/facets/core/class/class_require.rb +3 -0
- data/lib/facets/core/config/inspect.rb +9 -0
- data/lib/facets/core/dir/self/multiglob.rb +32 -0
- data/lib/facets/core/dir/self/multiglob_recurse.rb +5 -0
- data/lib/facets/core/dir/self/multiglob_sum.rb +40 -0
- data/lib/facets/core/enumerable/each_slice.rb +1 -0
- data/lib/facets/core/enumerable/every.rb +2 -2
- data/lib/facets/core/enumerable/injecting.rb +22 -0
- data/lib/facets/core/enumerable/partition_by.rb +10 -8
- data/lib/facets/core/file/self/yaml.rb +16 -0
- data/lib/facets/core/fileutils/compress.rb +154 -0
- data/lib/facets/core/fileutils/stage.rb +230 -0
- data/lib/facets/core/fileutils/staged.rb +3 -0
- data/lib/facets/core/hash/insert.rb +20 -0
- data/lib/facets/core/hash/op_add.rb +29 -0
- data/lib/facets/core/hash/op_and.rb +37 -0
- data/lib/facets/core/hash/op_mul.rb +17 -0
- data/lib/facets/core/hash/op_or.rb +2 -0
- data/lib/facets/core/hash/op_sub.rb +2 -0
- data/lib/facets/core/hash/pairs_at.rb +17 -0
- data/lib/facets/core/hash/rekey.rb +89 -0
- data/lib/facets/core/hash/reverse_merge.rb +6 -3
- data/lib/facets/core/inflect.rb +5 -14
- data/lib/facets/core/integer/to_roman.rb +20 -0
- data/lib/facets/core/kernel/as.rb +46 -29
- data/lib/facets/core/kernel/ask.rb +14 -0
- data/lib/facets/core/kernel/class_def.rb +10 -0
- data/lib/facets/core/kernel/daemonize.rb +21 -0
- data/lib/facets/core/kernel/enable_warnings.rb +14 -0
- data/lib/facets/core/kernel/{quaclass.rb → instance_class.rb} +7 -6
- data/lib/facets/core/kernel/instance_exec.rb +12 -10
- data/lib/facets/core/kernel/instance_values.rb +12 -0
- data/lib/facets/core/kernel/meta_alias.rb +14 -0
- data/lib/facets/core/kernel/meta_class.rb +38 -0
- data/lib/facets/core/kernel/meta_def.rb +14 -0
- data/lib/facets/core/kernel/meta_eval.rb +16 -0
- data/lib/facets/core/kernel/metaclass.rb +8 -12
- data/lib/facets/core/kernel/object_send.rb +21 -0
- data/lib/facets/core/kernel/populate.rb +39 -0
- data/lib/facets/core/kernel/qua_class.rb +41 -0
- data/lib/facets/core/kernel/returning.rb +7 -47
- data/lib/facets/core/kernel/send_as.rb +10 -4
- data/lib/facets/core/kernel/set_with.rb +25 -7
- data/lib/facets/core/kernel/silence_stream.rb +22 -0
- data/lib/facets/core/kernel/singleton.rb +1 -2
- data/lib/facets/core/kernel/{superior.rb → super_at.rb} +4 -1
- data/lib/facets/core/kernel/supermethod.rb +1 -1
- data/lib/facets/core/kernel/supress.rb +15 -0
- data/lib/facets/core/kernel/with.rb +57 -0
- data/lib/facets/core/kernel/yaml.rb +7 -0
- data/lib/facets/core/module/alias_accessor.rb +19 -0
- data/lib/facets/core/module/alias_method_chain.rb +33 -0
- data/lib/facets/core/module/class_extension.rb +1 -1
- data/lib/facets/core/module/include_and_extend.rb +10 -0
- data/lib/facets/core/module/include_as.rb +17 -16
- data/lib/facets/core/module/include_function_module.rb +13 -0
- data/lib/facets/core/module/inject.rb +1 -0
- data/lib/facets/core/module/memoize.rb +4 -3
- data/lib/facets/core/module/module_load.rb +51 -0
- data/lib/facets/core/module/module_method.rb +13 -0
- data/lib/facets/core/module/module_require.rb +3 -0
- data/lib/facets/core/module/namespace.rb +96 -36
- data/lib/facets/core/module/new.rb +37 -0
- data/lib/facets/core/module/prepend.rb +63 -0
- data/lib/facets/core/module/self/op_add.rb +16 -0
- data/lib/facets/core/ostruct.rb +6 -4
- data/lib/facets/core/ostruct/__merge__.rb +3 -50
- data/lib/facets/core/ostruct/__table__.rb +3 -10
- data/lib/facets/core/ostruct/__update__.rb +29 -0
- data/lib/facets/core/ostruct/instance_delegate.rb +58 -0
- data/lib/facets/core/ostruct/op_fetch.rb +18 -0
- data/lib/facets/core/ostruct/op_store.rb +3 -40
- data/lib/facets/core/proc/bind.rb +35 -0
- data/lib/facets/core/proc/to_h.rb +27 -0
- data/lib/facets/core/proc/to_method.rb +15 -29
- data/lib/facets/core/proc/update.rb +11 -0
- data/lib/facets/core/string/dresner.rb +1 -1
- data/lib/facets/core/string/rewrite.rb +34 -0
- data/lib/facets/core/symbol/chomp.rb +9 -0
- data/lib/facets/core/time/stamp.rb +32 -16
- data/lib/facets/more/ann.rb +249 -0
- data/lib/facets/more/ann_attr.rb +164 -0
- data/lib/facets/more/arguments.rb +479 -0
- data/lib/facets/more/autoscript.rb +34 -0
- data/lib/facets/more/autovivify.rb +16 -0
- data/lib/facets/more/basicobject.rb +67 -54
- data/lib/facets/more/behvior.rb +59 -0
- data/lib/facets/more/buildingblock.rb +192 -0
- data/lib/facets/more/command.rb +332 -146
- data/lib/facets/more/consoleutils.rb +45 -0
- data/lib/facets/more/cookie.rb +5 -2
- data/lib/facets/more/dependency.rb +199 -0
- data/lib/facets/more/dictionary.rb +49 -11
- data/lib/facets/more/functor.rb +33 -27
- data/lib/facets/more/htmlbuilder.rb +8 -18
- data/lib/facets/more/htmlfilter.rb +566 -0
- data/lib/facets/more/htmlhelper.rb +3 -8
- data/lib/facets/more/http.rb +0 -1
- data/lib/facets/more/httpaccess.rb +1 -1
- data/lib/facets/more/instance_intercept.rb +1 -1
- data/lib/facets/more/main_as_module.rb +2 -0
- data/lib/facets/more/methodfilter.rb +4 -0
- data/lib/facets/more/minitar.rb +979 -0
- data/lib/facets/more/multiton.rb +43 -24
- data/lib/facets/more/opencascade.rb +3 -3
- data/lib/facets/more/openhash.rb +350 -0
- data/lib/facets/more/openobject.rb +9 -306
- data/lib/facets/more/populate.rb +37 -0
- data/lib/facets/more/script.rb +157 -0
- data/lib/facets/more/uploadutils.rb +207 -0
- data/lib/facets/more/version_number.rb +98 -0
- data/lib/facets/more/xmlbuilder.rb +26 -21
- data/lib/facets/more/xmlhelper.rb +1 -1
- data/lib/facets/sys.rb +212 -0
- data/lib/facets/{more → yore}/annattr.rb +1 -1
- data/lib/facets/{more → yore}/annotation.rb +38 -32
- data/lib/facets/yore/builderobject.rb +222 -0
- data/lib/facets/{core → yore}/kernel/own.rb +0 -0
- data/lib/facets/{core → yore}/kernel/require_facet.rb +0 -0
- data/lib/facets/yore/module/inject.rb +9 -0
- data/lib/facets/yore/module/namespace.rb +62 -0
- data/setup.rb +2 -2
- data/test/special/main_as_module.rb +14 -0
- data/work/README +42 -0
- data/work/TODO +73 -0
- data/work/bin/minitar +3 -0
- data/work/bin/minitar.rb +814 -0
- data/work/core/array/at_rand.rb +95 -0
- data/work/core/array/each_slice.rb +23 -0
- data/work/core/array/pick_values.rb +32 -0
- data/work/core/array/rand_indexes.rb +33 -0
- data/work/core/binding/class.rb +11 -0
- data/work/core/binding/delegate-binding.rb +19 -0
- data/work/core/binding/delegate.rb +15 -0
- data/work/core/binding/proc.rb +6 -0
- data/work/core/class/to_module.rb +3 -0
- data/work/core/enumerable/op_fetch.rb +30 -0
- data/work/core/fileutils/cptouch.rb +20 -0
- data/work/core/fileutils/nl_convert.rb +133 -0
- data/work/core/io/expect.rb +127 -0
- data/work/core/join_with.rb +13 -0
- data/work/core/kernel/call_line.rb +15 -0
- data/work/core/kernel/does.rb +7 -0
- data/work/core/kernel/message.rb +6 -0
- data/work/core/kernel/query.rb +15 -0
- data/work/core/kernel/taint.rb +10 -0
- data/work/core/logger/clean_logger.rb +10 -0
- data/work/core/module/attr-old.rb +308 -0
- data/work/core/module/attr.rb +98 -0
- data/work/core/module/attr_xxx.rb +22 -0
- data/work/core/module/by_regexp.rb +21 -0
- data/work/core/module/cast.rb +64 -0
- data/work/core/module/class_attribute_accessors.rb +57 -0
- data/work/core/module/inherit.rb +99 -0
- data/work/core/module/inherit0.rb +59 -0
- data/work/core/module/let.rb +51 -0
- data/work/core/module/meta_attr.rb +60 -0
- data/work/core/module/module_attribute_accessors.rb +57 -0
- data/work/core/module/permissions.rb +32 -0
- data/work/core/module/preserved.rb +108 -0
- data/work/core/module/sattr_accessor.rb +1 -0
- data/work/core/module/sattr_reader.rb +1 -0
- data/work/core/module/sattr_setter.rb +1 -0
- data/work/core/module/sattr_tester.rb +1 -0
- data/work/core/module/sattr_writer.rb +1 -0
- data/work/core/module/tc_attr.rb +107 -0
- data/work/core/module/to_module.rb +37 -0
- data/work/core/module/version.rb +23 -0
- data/work/core/string/frequency.rb +40 -0
- data/work/core/string/op_add.rb +24 -0
- data/work/core/string/op_div.rb +15 -0
- data/work/core/string/pred.rb +217 -0
- data/work/core/string/probability.rb +35 -0
- data/work/core/string/succ_distance.rb +112 -0
- data/work/core/string/to_arr.rb +57 -0
- data/work/core/string/to_ary.rb +12 -0
- data/work/core/string/word_wrap.rb +62 -0
- data/work/misc/calibre/ProjectInfo.annotation +46 -0
- data/work/misc/calibre/ProjectInfo.ansicode +33 -0
- data/work/misc/calibre/ProjectInfo.association +34 -0
- data/work/misc/calibre/ProjectInfo.basicobject +36 -0
- data/work/misc/calibre/ProjectInfo.bbcode +34 -0
- data/work/misc/calibre/ProjectInfo.binaryreader +35 -0
- data/work/misc/calibre/ProjectInfo.bitmask +33 -0
- data/work/misc/calibre/ProjectInfo.classinherit +36 -0
- data/work/misc/calibre/ProjectInfo.classmethods +36 -0
- data/work/misc/calibre/ProjectInfo.cloneable +33 -0
- data/work/misc/calibre/ProjectInfo.consoleapp +35 -0
- data/work/misc/calibre/ProjectInfo.coroutine +37 -0
- data/work/misc/calibre/ProjectInfo.crypt +33 -0
- data/work/misc/calibre/ProjectInfo.dictionary +40 -0
- data/work/misc/calibre/ProjectInfo.downloader +39 -0
- data/work/misc/calibre/ProjectInfo.enumerablepass +35 -0
- data/work/misc/calibre/ProjectInfo.expirable +37 -0
- data/work/misc/calibre/ProjectInfo.floatstring +35 -0
- data/work/misc/calibre/ProjectInfo.functor +40 -0
- data/work/misc/calibre/ProjectInfo.heap +33 -0
- data/work/misc/calibre/ProjectInfo.inheritor +36 -0
- data/work/misc/calibre/ProjectInfo.interval +36 -0
- data/work/misc/calibre/ProjectInfo.lisp +38 -0
- data/work/misc/calibre/ProjectInfo.lrucache +34 -0
- data/work/misc/calibre/ProjectInfo.mathconstants +41 -0
- data/work/misc/calibre/ProjectInfo.methodprobe +38 -0
- data/work/misc/calibre/ProjectInfo.mock +34 -0
- data/work/misc/calibre/ProjectInfo.multiton +36 -0
- data/work/misc/calibre/ProjectInfo.nackclass +33 -0
- data/work/misc/calibre/ProjectInfo.nilcomparable +35 -0
- data/work/misc/calibre/ProjectInfo.nullclass +35 -0
- data/work/misc/calibre/ProjectInfo.one +37 -0
- data/work/misc/calibre/ProjectInfo.openobject +39 -0
- data/work/misc/calibre/ProjectInfo.paramix +38 -0
- data/work/misc/calibre/ProjectInfo.pool +33 -0
- data/work/misc/calibre/ProjectInfo.progressbar +37 -0
- data/work/misc/calibre/ProjectInfo.reference +36 -0
- data/work/misc/calibre/ProjectInfo.semaphore +36 -0
- data/work/misc/calibre/ProjectInfo.stateparser +39 -0
- data/work/misc/calibre/ProjectInfo.statichash +33 -0
- data/work/misc/calibre/ProjectInfo.system +34 -0
- data/work/misc/calibre/ProjectInfo.tagiterator +36 -0
- data/work/misc/calibre/ProjectInfo.timer +35 -0
- data/work/misc/calibre/ProjectInfo.tracepoint +37 -0
- data/work/misc/calibre/ProjectInfo.tuple +36 -0
- data/work/misc/calibre/ProjectInfo.uniheritable +34 -0
- data/work/misc/calibre/ProjectInfo.units +34 -0
- data/work/misc/calibre/ProjectInfo.yamlstruct +34 -0
- data/work/more/annotation-rw.rb +217 -0
- data/work/more/aobject.rb +132 -0
- data/work/more/autohash.rb +67 -0
- data/work/more/cache.rb +189 -0
- data/work/more/class_inheritable_attributes.rb +120 -0
- data/work/more/commandrunner.rb +101 -0
- data/work/more/daemon.rb +70 -0
- data/work/more/debugger.rb +167 -0
- data/work/more/detach.rb +423 -0
- data/work/more/enumtype.rb +115 -0
- data/work/more/ioreactor.rb +671 -0
- data/work/more/logger_sing.rb +207 -0
- data/work/more/must.rb +37 -0
- data/work/more/old-tkxml.rb +189 -0
- data/work/more/pairhash.rb +55 -0
- data/work/more/password.rb +80 -0
- data/work/more/print_exception.rb +35 -0
- data/work/more/rand.rb +412 -0
- data/work/more/range.rb +383 -0
- data/work/more/sanitize.rb +48 -0
- data/work/more/superstruct.rb +735 -0
- data/work/more/tag.rb +31 -0
- data/work/more/timer.rb +164 -0
- data/work/op_rshift.rb +87 -0
- data/work/pore/autorequire.rb +83 -0
- data/work/pore/basefactory.rb +40 -0
- data/work/pore/hash/each.rb +76 -0
- data/work/pore/merge3.rb +765 -0
- data/work/pore/superann.rb +134 -0
- data/work/pore/sys.rb +186 -0
- data/work/pore/utils.rb +518 -0
- data/work/yore/HashAquisition.rb +36 -0
- data/work/yore/Rakefile.old +181 -0
- data/work/yore/Reapfile +63 -0
- data/work/yore/annotation.rb +489 -0
- data/{test/lib/facets/more/test_annotation.rb → work/yore/annotation2.rb} +166 -18
- data/work/yore/commandutils.rb +379 -0
- data/work/yore/openobject.rb +298 -0
- data/work/yore/reap.rb +184 -0
- data/work/yore/reap.yml +47 -0
- data/work/yore/taskable-old.rb +519 -0
- data/{lib/facets/more → work/yore}/taskable.rb +176 -17
- metadata +1164 -1427
- data/doc/CHANGELOG +0 -146
- data/lib/facet/annattr.rb +0 -1
- data/lib/facet/annotation.rb +0 -1
- data/lib/facet/builderobject.rb +0 -1
- data/lib/facet/kernel/own.rb +0 -1
- data/lib/facet/kernel/quaclass.rb +0 -1
- data/lib/facet/kernel/require_facet.rb +0 -1
- data/lib/facet/kernel/superior.rb +0 -1
- data/lib/facet/one.rb +0 -1
- data/lib/facet/ostruct/instance.rb +0 -1
- data/lib/facet/predicate.rb +0 -1
- data/lib/facet/taskable.rb +0 -1
- data/lib/facets/core/ostruct/instance.rb +0 -37
- data/lib/facets/more/builderobject.rb +0 -97
- data/lib/facets/more/one.rb +0 -153
- data/lib/facets/more/predicate.rb +0 -184
- data/test/lib/facets/core/array/test_at_rand.rb +0 -34
- data/test/lib/facets/core/array/test_delete_unless.rb +0 -28
- data/test/lib/facets/core/array/test_delete_values.rb +0 -28
- data/test/lib/facets/core/array/test_delete_values_at.rb +0 -31
- data/test/lib/facets/core/array/test_first.rb +0 -46
- data/test/lib/facets/core/array/test_head.rb +0 -42
- data/test/lib/facets/core/array/test_last_index.rb +0 -26
- data/test/lib/facets/core/array/test_merge.rb +0 -35
- data/test/lib/facets/core/array/test_mid.rb +0 -33
- data/test/lib/facets/core/array/test_middle.rb +0 -29
- data/test/lib/facets/core/array/test_op_fetch.rb +0 -35
- data/test/lib/facets/core/array/test_pick.rb +0 -40
- data/test/lib/facets/core/array/test_pos.rb +0 -28
- data/test/lib/facets/core/array/test_pot.rb +0 -28
- data/test/lib/facets/core/array/test_pull.rb +0 -28
- data/test/lib/facets/core/array/test_rand_index.rb +0 -29
- data/test/lib/facets/core/array/test_rand_subset.rb +0 -29
- data/test/lib/facets/core/array/test_range.rb +0 -32
- data/test/lib/facets/core/array/test_rotate.rb +0 -36
- data/test/lib/facets/core/array/test_select.rb +0 -28
- data/test/lib/facets/core/array/test_shuffle.rb +0 -35
- data/test/lib/facets/core/array/test_thru.rb +0 -27
- data/test/lib/facets/core/array/test_to_b.rb +0 -27
- data/test/lib/facets/core/array/test_to_h.rb +0 -33
- data/test/lib/facets/core/array/test_to_hash.rb +0 -27
- data/test/lib/facets/core/binding/self/test_of_caller.rb +0 -35
- data/test/lib/facets/core/binding/test___LINE__.rb +0 -43
- data/test/lib/facets/core/binding/test_call_stack.rb +0 -34
- data/test/lib/facets/core/binding/test_called.rb +0 -30
- data/test/lib/facets/core/binding/test_caller.rb +0 -35
- data/test/lib/facets/core/binding/test_defined.rb +0 -34
- data/test/lib/facets/core/binding/test_eval.rb +0 -34
- data/test/lib/facets/core/binding/test_local_variables.rb +0 -34
- data/test/lib/facets/core/binding/test_method_name.rb +0 -34
- data/test/lib/facets/core/binding/test_op_fetch.rb +0 -34
- data/test/lib/facets/core/binding/test_op_store.rb +0 -35
- data/test/lib/facets/core/binding/test_self.rb +0 -34
- data/test/lib/facets/core/class/test_cattr.rb +0 -63
- data/test/lib/facets/core/class/test_descendents.rb +0 -30
- data/test/lib/facets/core/class/test_method_name.rb +0 -26
- data/test/lib/facets/core/class/test_remove_descendents.rb +0 -32
- data/test/lib/facets/core/class/test_unix_path.rb +0 -26
- data/test/lib/facets/core/comparable/test_at_least.rb +0 -34
- data/test/lib/facets/core/comparable/test_clip.rb +0 -44
- data/test/lib/facets/core/comparable/test_cmp.rb +0 -28
- data/test/lib/facets/core/continuation/self/test_create.rb +0 -26
- data/test/lib/facets/core/date/test_days_in_month.rb +0 -30
- data/test/lib/facets/core/date/test_days_of_month.rb +0 -30
- data/test/lib/facets/core/date/test_stamp.rb +0 -38
- data/test/lib/facets/core/date/test_to_date.rb +0 -30
- data/test/lib/facets/core/date/test_to_s.rb +0 -30
- data/test/lib/facets/core/date/test_to_time.rb +0 -30
- data/test/lib/facets/core/dir/self/test_ancestor.rb +0 -26
- data/test/lib/facets/core/dir/self/test_ascend.rb +0 -41
- data/test/lib/facets/core/enumerable/self/test_combinations.rb +0 -46
- data/test/lib/facets/core/enumerable/self/test_cross.rb +0 -31
- data/test/lib/facets/core/enumerable/test_collect_with_index.rb +0 -27
- data/test/lib/facets/core/enumerable/test_commonality.rb +0 -31
- data/test/lib/facets/core/enumerable/test_compact_collect.rb +0 -27
- data/test/lib/facets/core/enumerable/test_count.rb +0 -38
- data/test/lib/facets/core/enumerable/test_cross.rb +0 -30
- data/test/lib/facets/core/enumerable/test_each_by.rb +0 -71
- data/test/lib/facets/core/enumerable/test_each_combination.rb +0 -29
- data/test/lib/facets/core/enumerable/test_each_pair.rb +0 -29
- data/test/lib/facets/core/enumerable/test_each_slice.rb +0 -57
- data/test/lib/facets/core/enumerable/test_each_unique_pair.rb +0 -29
- data/test/lib/facets/core/enumerable/test_eachn.rb +0 -34
- data/test/lib/facets/core/enumerable/test_entropy.rb +0 -26
- data/test/lib/facets/core/enumerable/test_every.rb +0 -35
- data/test/lib/facets/core/enumerable/test_ew.rb +0 -31
- data/test/lib/facets/core/enumerable/test_filter_collect.rb +0 -31
- data/test/lib/facets/core/enumerable/test_find_collisions.rb +0 -30
- data/test/lib/facets/core/enumerable/test_frequency.rb +0 -27
- data/test/lib/facets/core/enumerable/test_graph.rb +0 -30
- data/test/lib/facets/core/enumerable/test_ideal_entropy.rb +0 -27
- data/test/lib/facets/core/enumerable/test_none.rb +0 -33
- data/test/lib/facets/core/enumerable/test_occur.rb +0 -30
- data/test/lib/facets/core/enumerable/test_one.rb +0 -35
- data/test/lib/facets/core/enumerable/test_op_pow.rb +0 -27
- data/test/lib/facets/core/enumerable/test_partition_by.rb +0 -31
- data/test/lib/facets/core/enumerable/test_permutation.rb +0 -29
- data/test/lib/facets/core/enumerable/test_permute.rb +0 -29
- data/test/lib/facets/core/enumerable/test_probability.rb +0 -27
- data/test/lib/facets/core/enumerable/test_to_h.rb +0 -27
- data/test/lib/facets/core/enumerable/test_uniq_by.rb +0 -28
- data/test/lib/facets/core/file/self/test_create.rb +0 -44
- data/test/lib/facets/core/file/self/test_open_as_string.rb +0 -50
- data/test/lib/facets/core/file/self/test_read_list.rb +0 -40
- data/test/lib/facets/core/file/self/test_sanitize.rb +0 -46
- data/test/lib/facets/core/file/self/test_split_all.rb +0 -27
- data/test/lib/facets/core/float/test_round_at.rb +0 -46
- data/test/lib/facets/core/float/test_round_to.rb +0 -46
- data/test/lib/facets/core/hash/self/test_zipnew.rb +0 -28
- data/test/lib/facets/core/hash/test_alias.rb +0 -31
- data/test/lib/facets/core/hash/test_assert_has_keys.rb +0 -27
- data/test/lib/facets/core/hash/test_assert_has_only_keys.rb +0 -27
- data/test/lib/facets/core/hash/test_at.rb +0 -28
- data/test/lib/facets/core/hash/test_collate.rb +0 -35
- data/test/lib/facets/core/hash/test_each_with_index.rb +0 -29
- data/test/lib/facets/core/hash/test_each_with_key.rb +0 -29
- data/test/lib/facets/core/hash/test_graph.rb +0 -28
- data/test/lib/facets/core/hash/test_has_keys.rb +0 -27
- data/test/lib/facets/core/hash/test_has_only_keys.rb +0 -27
- data/test/lib/facets/core/hash/test_inverse.rb +0 -30
- data/test/lib/facets/core/hash/test_normalize_keys.rb +0 -34
- data/test/lib/facets/core/hash/test_op_fetch.rb +0 -111
- data/test/lib/facets/core/hash/test_op_lshift.rb +0 -29
- data/test/lib/facets/core/hash/test_rand_key.rb +0 -27
- data/test/lib/facets/core/hash/test_rand_pair.rb +0 -27
- data/test/lib/facets/core/hash/test_rand_value.rb +0 -27
- data/test/lib/facets/core/hash/test_replace_each.rb +0 -29
- data/test/lib/facets/core/hash/test_shuffle.rb +0 -32
- data/test/lib/facets/core/hash/test_slice.rb +0 -27
- data/test/lib/facets/core/hash/test_stringify_keys.rb +0 -34
- data/test/lib/facets/core/hash/test_swap.rb +0 -27
- data/test/lib/facets/core/hash/test_swapkey.rb +0 -29
- data/test/lib/facets/core/hash/test_symbolize_keys.rb +0 -34
- data/test/lib/facets/core/hash/test_to_h.rb +0 -27
- data/test/lib/facets/core/hash/test_to_ostruct.rb +0 -30
- data/test/lib/facets/core/hash/test_to_ostruct_recurse.rb +0 -44
- data/test/lib/facets/core/hash/test_traverse.rb +0 -37
- data/test/lib/facets/core/hash/test_update_each.rb +0 -29
- data/test/lib/facets/core/hash/test_update_keys.rb +0 -28
- data/test/lib/facets/core/hash/test_update_values.rb +0 -28
- data/test/lib/facets/core/hash/test_weave.rb +0 -29
- data/test/lib/facets/core/integer/test_factorial.rb +0 -30
- data/test/lib/facets/core/integer/test_multiple.rb +0 -43
- data/test/lib/facets/core/integer/test_of.rb +0 -28
- data/test/lib/facets/core/integer/test_ordinal.rb +0 -29
- data/test/lib/facets/core/integer/test_times_collect.rb +0 -28
- data/test/lib/facets/core/kernel/test___class__.rb +0 -26
- data/test/lib/facets/core/kernel/test_as.rb +0 -42
- data/test/lib/facets/core/kernel/test_assign_from.rb +0 -31
- data/test/lib/facets/core/kernel/test_assign_with.rb +0 -31
- data/test/lib/facets/core/kernel/test_bool.rb +0 -41
- data/test/lib/facets/core/kernel/test_bug.rb +0 -26
- data/test/lib/facets/core/kernel/test_call_stack.rb +0 -26
- data/test/lib/facets/core/kernel/test_called.rb +0 -26
- data/test/lib/facets/core/kernel/test_callee.rb +0 -26
- data/test/lib/facets/core/kernel/test_constant.rb +0 -33
- data/test/lib/facets/core/kernel/test_copy.rb +0 -40
- data/test/lib/facets/core/kernel/test_deep_copy.rb +0 -40
- data/test/lib/facets/core/kernel/test_demo.rb +0 -28
- data/test/lib/facets/core/kernel/test_fn.rb +0 -26
- data/test/lib/facets/core/kernel/test_get_by_id.rb +0 -28
- data/test/lib/facets/core/kernel/test_here.rb +0 -26
- data/test/lib/facets/core/kernel/test_in.rb +0 -27
- data/test/lib/facets/core/kernel/test_instance_exec.rb +0 -52
- data/test/lib/facets/core/kernel/test_maybe.rb +0 -26
- data/test/lib/facets/core/kernel/test_metaclass.rb +0 -34
- data/test/lib/facets/core/kernel/test_method.rb +0 -32
- data/test/lib/facets/core/kernel/test_methods.rb +0 -50
- data/test/lib/facets/core/kernel/test_new.rb +0 -30
- data/test/lib/facets/core/kernel/test_object_class.rb +0 -26
- data/test/lib/facets/core/kernel/test_object_hexid.rb +0 -27
- data/test/lib/facets/core/kernel/test_quaclass.rb +0 -27
- data/test/lib/facets/core/kernel/test_require_all.rb +0 -26
- data/test/lib/facets/core/kernel/test_require_esc.rb +0 -27
- data/test/lib/facets/core/kernel/test_require_facet.rb +0 -27
- data/test/lib/facets/core/kernel/test_resc.rb +0 -27
- data/test/lib/facets/core/kernel/test_returning.rb +0 -30
- data/test/lib/facets/core/kernel/test_send_as.rb +0 -26
- data/test/lib/facets/core/kernel/test_set_from.rb +0 -33
- data/test/lib/facets/core/kernel/test_set_with.rb +0 -33
- data/test/lib/facets/core/kernel/test_silently.rb +0 -28
- data/test/lib/facets/core/kernel/test_singleton.rb +0 -40
- data/test/lib/facets/core/kernel/test_singleton_class.rb +0 -27
- data/test/lib/facets/core/kernel/test_superior.rb +0 -30
- data/test/lib/facets/core/kernel/test_supermethod.rb +0 -33
- data/test/lib/facets/core/kernel/test_this.rb +0 -26
- data/test/lib/facets/core/kernel/test_to_b.rb +0 -28
- data/test/lib/facets/core/kernel/test_to_bool.rb +0 -28
- data/test/lib/facets/core/kernel/test_to_data.rb +0 -59
- data/test/lib/facets/core/kernel/test_uri.rb +0 -30
- data/test/lib/facets/core/kernel/test_val.rb +0 -43
- data/test/lib/facets/core/kernel/test_with_accessor.rb +0 -51
- data/test/lib/facets/core/matchdata/test_match.rb +0 -29
- data/test/lib/facets/core/matchdata/test_matchtree.rb +0 -37
- data/test/lib/facets/core/module/self/test_op_add.rb +0 -48
- data/test/lib/facets/core/module/test_abstract.rb +0 -36
- data/test/lib/facets/core/module/test_alias_module_function.rb +0 -34
- data/test/lib/facets/core/module/test_ancestor.rb +0 -26
- data/test/lib/facets/core/module/test_basename.rb +0 -26
- data/test/lib/facets/core/module/test_by_name.rb +0 -29
- data/test/lib/facets/core/module/test_class_extension.rb +0 -70
- data/test/lib/facets/core/module/test_clone_using.rb +0 -55
- data/test/lib/facets/core/module/test_dirname.rb +0 -26
- data/test/lib/facets/core/module/test_equate_on.rb +0 -37
- data/test/lib/facets/core/module/test_include_as.rb +0 -35
- data/test/lib/facets/core/module/test_initializer.rb +0 -32
- data/test/lib/facets/core/module/test_instance_methods.rb +0 -59
- data/test/lib/facets/core/module/test_integrate.rb +0 -35
- data/test/lib/facets/core/module/test_memoize.rb +0 -50
- data/test/lib/facets/core/module/test_modspace.rb +0 -27
- data/test/lib/facets/core/module/test_namespace.rb +0 -33
- data/test/lib/facets/core/module/test_nesting.rb +0 -36
- data/test/lib/facets/core/module/test_nodef.rb +0 -30
- data/test/lib/facets/core/module/test_on_included.rb +0 -36
- data/test/lib/facets/core/module/test_redef.rb +0 -30
- data/test/lib/facets/core/module/test_redefine_method.rb +0 -30
- data/test/lib/facets/core/module/test_redirect.rb +0 -30
- data/test/lib/facets/core/module/test_redirect_method.rb +0 -30
- data/test/lib/facets/core/module/test_remove.rb +0 -30
- data/test/lib/facets/core/module/test_rename.rb +0 -31
- data/test/lib/facets/core/module/test_rename_method.rb +0 -31
- data/test/lib/facets/core/module/test_revisal.rb +0 -35
- data/test/lib/facets/core/module/test_shadow_method.rb +0 -30
- data/test/lib/facets/core/module/test_sort_on.rb +0 -42
- data/test/lib/facets/core/module/test_this.rb +0 -31
- data/test/lib/facets/core/module/test_wrap.rb +0 -30
- data/test/lib/facets/core/module/test_wrap_method.rb +0 -30
- data/test/lib/facets/core/nilclass/test_blank.rb +0 -26
- data/test/lib/facets/core/nilclass/test_empty.rb +0 -26
- data/test/lib/facets/core/nilclass/test_include.rb +0 -26
- data/test/lib/facets/core/nilclass/test_op_fetch.rb +0 -28
- data/test/lib/facets/core/nilclass/test_size.rb +0 -30
- data/test/lib/facets/core/nilclass/test_to_h.rb +0 -26
- data/test/lib/facets/core/numeric/test_approx.rb +0 -29
- data/test/lib/facets/core/numeric/test_ceil_multiple.rb +0 -31
- data/test/lib/facets/core/numeric/test_distance.rb +0 -28
- data/test/lib/facets/core/numeric/test_succ.rb +0 -40
- data/test/lib/facets/core/numeric/test_to_b.rb +0 -27
- data/test/lib/facets/core/ostruct/test___merge__.rb +0 -38
- data/test/lib/facets/core/ostruct/test___update__.rb +0 -29
- data/test/lib/facets/core/ostruct/test_op_fetch.rb +0 -27
- data/test/lib/facets/core/ostruct/test_op_store.rb +0 -28
- data/test/lib/facets/core/proc/test_compose.rb +0 -29
- data/test/lib/facets/core/proc/test_op_mul.rb +0 -34
- data/test/lib/facets/core/proc/test_to_method.rb +0 -44
- data/test/lib/facets/core/range/test_to_r.rb +0 -27
- data/test/lib/facets/core/range/test_to_range.rb +0 -27
- data/test/lib/facets/core/range/test_umbrella.rb +0 -34
- data/test/lib/facets/core/range/test_within.rb +0 -29
- data/test/lib/facets/core/regexp/test_arity.rb +0 -33
- data/test/lib/facets/core/regexp/test_to_re.rb +0 -27
- data/test/lib/facets/core/regexp/test_to_regexp.rb +0 -27
- data/test/lib/facets/core/string/self/test_interpolate.rb +0 -27
- data/test/lib/facets/core/string/self/test_patterns.rb +0 -28
- data/test/lib/facets/core/string/self/test_rand_letter.rb +0 -26
- data/test/lib/facets/core/string/test_align_center.rb +0 -34
- data/test/lib/facets/core/string/test_at_rand.rb +0 -35
- data/test/lib/facets/core/string/test_basename.rb +0 -41
- data/test/lib/facets/core/string/test_blank.rb +0 -27
- data/test/lib/facets/core/string/test_bracket.rb +0 -49
- data/test/lib/facets/core/string/test_camelcase.rb +0 -39
- data/test/lib/facets/core/string/test_camelize.rb +0 -26
- data/test/lib/facets/core/string/test_capitalized.rb +0 -26
- data/test/lib/facets/core/string/test_chars.rb +0 -27
- data/test/lib/facets/core/string/test_cmp.rb +0 -30
- data/test/lib/facets/core/string/test_demodulize.rb +0 -38
- data/test/lib/facets/core/string/test_divide.rb +0 -29
- data/test/lib/facets/core/string/test_downcase.rb +0 -26
- data/test/lib/facets/core/string/test_dresner.rb +0 -32
- data/test/lib/facets/core/string/test_each_char.rb +0 -29
- data/test/lib/facets/core/string/test_each_word.rb +0 -29
- data/test/lib/facets/core/string/test_first.rb +0 -43
- data/test/lib/facets/core/string/test_fold.rb +0 -34
- data/test/lib/facets/core/string/test_humanize.rb +0 -26
- data/test/lib/facets/core/string/test_indent.rb +0 -40
- data/test/lib/facets/core/string/test_index_all.rb +0 -26
- data/test/lib/facets/core/string/test_last.rb +0 -46
- data/test/lib/facets/core/string/test_line_wrap.rb +0 -27
- data/test/lib/facets/core/string/test_lines.rb +0 -26
- data/test/lib/facets/core/string/test_lowercase.rb +0 -26
- data/test/lib/facets/core/string/test_margin.rb +0 -117
- data/test/lib/facets/core/string/test_methodize.rb +0 -27
- data/test/lib/facets/core/string/test_modulize.rb +0 -29
- data/test/lib/facets/core/string/test_mscan.rb +0 -30
- data/test/lib/facets/core/string/test_natcmp.rb +0 -30
- data/test/lib/facets/core/string/test_nchar.rb +0 -29
- data/test/lib/facets/core/string/test_pathize.rb +0 -29
- data/test/lib/facets/core/string/test_pop.rb +0 -47
- data/test/lib/facets/core/string/test_pot.rb +0 -39
- data/test/lib/facets/core/string/test_push.rb +0 -40
- data/test/lib/facets/core/string/test_quote.rb +0 -49
- data/test/lib/facets/core/string/test_rand_byte.rb +0 -35
- data/test/lib/facets/core/string/test_rand_index.rb +0 -26
- data/test/lib/facets/core/string/test_range.rb +0 -27
- data/test/lib/facets/core/string/test_range_all.rb +0 -27
- data/test/lib/facets/core/string/test_range_of_line.rb +0 -28
- data/test/lib/facets/core/string/test_regesc.rb +0 -28
- data/test/lib/facets/core/string/test_shatter.rb +0 -29
- data/test/lib/facets/core/string/test_shift.rb +0 -40
- data/test/lib/facets/core/string/test_shuffle.rb +0 -27
- data/test/lib/facets/core/string/test_similarity.rb +0 -26
- data/test/lib/facets/core/string/test_singular.rb +0 -86
- data/test/lib/facets/core/string/test_soundex.rb +0 -41
- data/test/lib/facets/core/string/test_succ.rb +0 -29
- data/test/lib/facets/core/string/test_to_a.rb +0 -27
- data/test/lib/facets/core/string/test_to_b.rb +0 -41
- data/test/lib/facets/core/string/test_to_const.rb +0 -28
- data/test/lib/facets/core/string/test_to_date.rb +0 -30
- data/test/lib/facets/core/string/test_to_proc.rb +0 -33
- data/test/lib/facets/core/string/test_to_re.rb +0 -28
- data/test/lib/facets/core/string/test_to_time.rb +0 -30
- data/test/lib/facets/core/string/test_unix_crypt.rb +0 -30
- data/test/lib/facets/core/string/test_unpack.rb +0 -34
- data/test/lib/facets/core/string/test_unshift.rb +0 -39
- data/test/lib/facets/core/string/test_upcase.rb +0 -30
- data/test/lib/facets/core/string/test_whitespace.rb +0 -27
- data/test/lib/facets/core/string/test_word_filter.rb +0 -34
- data/test/lib/facets/core/string/test_word_wrap.rb +0 -51
- data/test/lib/facets/core/string/test_words.rb +0 -37
- data/test/lib/facets/core/symbol/test_camelcase.rb +0 -26
- data/test/lib/facets/core/symbol/test_camelize.rb +0 -27
- data/test/lib/facets/core/symbol/test_capitalize.rb +0 -26
- data/test/lib/facets/core/symbol/test_capitalized.rb +0 -27
- data/test/lib/facets/core/symbol/test_downcase.rb +0 -27
- data/test/lib/facets/core/symbol/test_not.rb +0 -29
- data/test/lib/facets/core/symbol/test_pad.rb +0 -27
- data/test/lib/facets/core/symbol/test_succ.rb +0 -28
- data/test/lib/facets/core/symbol/test_to_const.rb +0 -28
- data/test/lib/facets/core/symbol/test_to_proc.rb +0 -33
- data/test/lib/facets/core/symbol/test_to_str.rb +0 -28
- data/test/lib/facets/core/symbol/test_underscore.rb +0 -26
- data/test/lib/facets/core/symbol/test_upcase.rb +0 -27
- data/test/lib/facets/core/time/test_change.rb +0 -33
- data/test/lib/facets/core/time/test_elapse.rb +0 -27
- data/test/lib/facets/core/time/test_stamp.rb +0 -31
- data/test/lib/facets/core/time/test_to_date.rb +0 -31
- data/test/lib/facets/core/time/test_to_s.rb +0 -31
- data/test/lib/facets/core/time/test_to_time.rb +0 -31
- data/test/lib/facets/more/test_annattr.rb +0 -39
- data/test/lib/facets/more/test_ansicode.rb +0 -36
- data/test/lib/facets/more/test_association.rb +0 -51
- data/test/lib/facets/more/test_autoarray.rb +0 -32
- data/test/lib/facets/more/test_basicobject.rb +0 -67
- data/test/lib/facets/more/test_bbcode.rb +0 -34
- data/test/lib/facets/more/test_binaryreader.rb +0 -64
- data/test/lib/facets/more/test_bitmask.rb +0 -47
- data/test/lib/facets/more/test_bytes.rb +0 -84
- data/test/lib/facets/more/test_classmethods.rb +0 -69
- data/test/lib/facets/more/test_command.rb +0 -38
- data/test/lib/facets/more/test_coroutine.rb +0 -60
- data/test/lib/facets/more/test_crypt.rb +0 -46
- data/test/lib/facets/more/test_cut.rb +0 -198
- data/test/lib/facets/more/test_dictionary.rb +0 -97
- data/test/lib/facets/more/test_elementor.rb +0 -52
- data/test/lib/facets/more/test_enumerablepass.rb +0 -86
- data/test/lib/facets/more/test_floatstring.rb +0 -36
- data/test/lib/facets/more/test_functor.rb +0 -39
- data/test/lib/facets/more/test_htmlbuilder.rb +0 -38
- data/test/lib/facets/more/test_infinity.rb +0 -50
- data/test/lib/facets/more/test_inheritor.rb +0 -155
- data/test/lib/facets/more/test_instance_intercept.rb +0 -50
- data/test/lib/facets/more/test_interval.rb +0 -119
- data/test/lib/facets/more/test_json.rb +0 -232
- data/test/lib/facets/more/test_linkedlist.rb +0 -53
- data/test/lib/facets/more/test_lisp.rb +0 -47
- data/test/lib/facets/more/test_lisp_format.rb +0 -37
- data/test/lib/facets/more/test_lrucache.rb +0 -25
- data/test/lib/facets/more/test_mathconstants.rb +0 -18
- data/test/lib/facets/more/test_methodfilter.rb +0 -45
- data/test/lib/facets/more/test_methodprobe.rb +0 -53
- data/test/lib/facets/more/test_multipliers.rb +0 -114
- data/test/lib/facets/more/test_multiton.rb +0 -199
- data/test/lib/facets/more/test_nackclass.rb +0 -45
- data/test/lib/facets/more/test_nilcomparable.rb +0 -47
- data/test/lib/facets/more/test_opencascade.rb +0 -75
- data/test/lib/facets/more/test_openobject.rb +0 -126
- data/test/lib/facets/more/test_overload.rb +0 -54
- data/test/lib/facets/more/test_paramix.rb +0 -100
- data/test/lib/facets/more/test_pqueue.rb +0 -39
- data/test/lib/facets/more/test_predicate.rb +0 -79
- data/test/lib/facets/more/test_preinitialize.rb +0 -49
- data/test/lib/facets/more/test_promoteself.rb +0 -45
- data/test/lib/facets/more/test_recorder.rb +0 -44
- data/test/lib/facets/more/test_snapshot.rb +0 -34
- data/test/lib/facets/more/test_statichash.rb +0 -31
- data/test/lib/facets/more/test_syncarray.rb +0 -28
- data/test/lib/facets/more/test_synchash.rb +0 -28
- data/test/lib/facets/more/test_tagiterator.rb +0 -93
- data/test/lib/facets/more/test_taskable.rb +0 -190
- data/test/lib/facets/more/test_timer.rb +0 -66
- data/test/lib/facets/more/test_times.rb +0 -73
- data/test/lib/facets/more/test_tuple.rb +0 -64
- data/test/lib/facets/more/test_typecast.rb +0 -68
- data/test/lib/facets/more/test_uninheritable.rb +0 -42
- data/test/lib/facets/more/test_units.rb +0 -111
- data/test/lib/facets/more/test_xmlbuilder.rb +0 -38
- data/test/lib/facets/more/test_xmlhelper.rb +0 -40
- data/test/lib/facets/more/test_xoxo.rb +0 -288
- data/test/lib/facets/more/test_yamlstruct.rb +0 -37
- data/util/announce +0 -20
- data/util/changelog +0 -8
- data/util/count +0 -8
- data/util/extest +0 -8
- data/util/list +0 -38
- data/util/package +0 -9
- data/util/prepare +0 -12
- data/util/redirect +0 -34
- data/util/release +0 -13
- data/util/setup +0 -7
- data/util/test +0 -7
- data/util/version +0 -8
@@ -0,0 +1,101 @@
|
|
1
|
+
class CommandRunner
|
2
|
+
|
3
|
+
attr :command
|
4
|
+
attr :child_pid
|
5
|
+
|
6
|
+
def initialize(*command)
|
7
|
+
@command = command
|
8
|
+
@child_pid = nil
|
9
|
+
@waiting_thread = nil
|
10
|
+
|
11
|
+
@read_pipe = nil
|
12
|
+
@read_error_pipe = nil
|
13
|
+
@write_pipe = nil
|
14
|
+
end
|
15
|
+
|
16
|
+
def closeWrite
|
17
|
+
@write_pipe.close
|
18
|
+
end
|
19
|
+
|
20
|
+
def kill
|
21
|
+
Process.kill("KILL", @child_pid)
|
22
|
+
end
|
23
|
+
|
24
|
+
def read
|
25
|
+
return @read_pipe.read
|
26
|
+
end
|
27
|
+
|
28
|
+
def readError
|
29
|
+
return @read_error_pipe.read
|
30
|
+
end
|
31
|
+
|
32
|
+
def run
|
33
|
+
parent_to_child_read, parent_to_child_write = IO.pipe
|
34
|
+
child_to_parent_read, child_to_parent_write = IO.pipe
|
35
|
+
child_to_parent_error_read, child_to_parent_error_write = IO.pipe
|
36
|
+
|
37
|
+
@child_pid = fork do
|
38
|
+
parent_to_child_write.close
|
39
|
+
child_to_parent_read.close
|
40
|
+
child_to_parent_error_read.close
|
41
|
+
|
42
|
+
# Wait until parent is ready before we start doing anything
|
43
|
+
if parent_to_child_read.readchar.chr != "R"
|
44
|
+
raise "Unexpected input from parent"
|
45
|
+
end
|
46
|
+
|
47
|
+
$stdin.reopen(parent_to_child_read)
|
48
|
+
$stdout.reopen(child_to_parent_write)
|
49
|
+
$stderr.reopen(child_to_parent_error_write)
|
50
|
+
|
51
|
+
exec(*@command)
|
52
|
+
end
|
53
|
+
|
54
|
+
@waiting_thread = Thread.new(@child_pid) do |pid|
|
55
|
+
return_code = -1
|
56
|
+
|
57
|
+
begin
|
58
|
+
return_code = Process.waitpid2(pid)
|
59
|
+
rescue SystemError
|
60
|
+
raise "Process finished running already!"
|
61
|
+
end
|
62
|
+
return_code = return_code[1].exitstatus
|
63
|
+
|
64
|
+
return_code
|
65
|
+
end
|
66
|
+
|
67
|
+
child_to_parent_write.close
|
68
|
+
child_to_parent_error_write.close
|
69
|
+
parent_to_child_read.close
|
70
|
+
|
71
|
+
@read_pipe = child_to_parent_read
|
72
|
+
@read_error_pipe = child_to_parent_error_read
|
73
|
+
@write_pipe = parent_to_child_write
|
74
|
+
|
75
|
+
@write_pipe.write("R")
|
76
|
+
@write_pipe.flush
|
77
|
+
end
|
78
|
+
|
79
|
+
#--------------------------------------------------------------------------
|
80
|
+
# Waits for command to exit
|
81
|
+
# Returns: The return code of the program when it exited
|
82
|
+
#--------------------------------------------------------------------------
|
83
|
+
def wait
|
84
|
+
if not @child_pid or not @waiting_thread
|
85
|
+
raise "Waiting for a process that has not started"
|
86
|
+
end
|
87
|
+
|
88
|
+
return_value = @waiting_thread.value
|
89
|
+
|
90
|
+
@waiting_thread = nil
|
91
|
+
@child_pid = nil
|
92
|
+
|
93
|
+
return return_value
|
94
|
+
end
|
95
|
+
|
96
|
+
def write(string)
|
97
|
+
@write_pipe.write(string)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
|
data/work/more/daemon.rb
ADDED
@@ -0,0 +1,70 @@
|
|
1
|
+
#
|
2
|
+
# daemon.rb
|
3
|
+
#
|
4
|
+
# Copyright (c) 1999-2002 Minero Aoki <aamine@loveruby.net>
|
5
|
+
#
|
6
|
+
# This program is free software.
|
7
|
+
# You can distribute/modify this program under the terms of
|
8
|
+
# the GNU Lesser General Public License version 2 or later.
|
9
|
+
#
|
10
|
+
# $Id: daemon.rb,v 1.2 2002/01/05 06:19:34 aamine Exp $
|
11
|
+
#
|
12
|
+
|
13
|
+
require 'socket'
|
14
|
+
|
15
|
+
|
16
|
+
class Daemon
|
17
|
+
|
18
|
+
def self.exec( port, dir, debug = $DEBUG )
|
19
|
+
new(debug).exec port, dir
|
20
|
+
end
|
21
|
+
|
22
|
+
def initialize( debug = $DEBUG )
|
23
|
+
@debug = $DEBUG
|
24
|
+
end
|
25
|
+
|
26
|
+
def exec( port, dir )
|
27
|
+
if @debug then
|
28
|
+
Dir.chdir dir
|
29
|
+
wait
|
30
|
+
return
|
31
|
+
end
|
32
|
+
|
33
|
+
fork do
|
34
|
+
Process.setsid
|
35
|
+
fork do
|
36
|
+
Dir.chdir dir
|
37
|
+
$stdin.close
|
38
|
+
$stdout.close
|
39
|
+
$stderr.close
|
40
|
+
|
41
|
+
wait
|
42
|
+
end
|
43
|
+
|
44
|
+
exit!
|
45
|
+
end
|
46
|
+
exit!
|
47
|
+
end
|
48
|
+
|
49
|
+
def wait
|
50
|
+
s = TCPServer.new( 10070 )
|
51
|
+
|
52
|
+
unless @debug then
|
53
|
+
trap( 'SIGINT' ) { exit! }
|
54
|
+
trap( 'SIGHUP' ) { exit! }
|
55
|
+
trap( 'SIGTERM' ) { exit! }
|
56
|
+
end
|
57
|
+
|
58
|
+
while true do
|
59
|
+
@sock = s.accept
|
60
|
+
begin
|
61
|
+
session
|
62
|
+
ensure
|
63
|
+
@sock.close
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
# abstract session
|
69
|
+
|
70
|
+
end
|
@@ -0,0 +1,167 @@
|
|
1
|
+
###############################
|
2
|
+
# WARNING! Expiremental code! #
|
3
|
+
###############################
|
4
|
+
|
5
|
+
# = debugger.rb
|
6
|
+
#
|
7
|
+
# == Copyright (c) 2006 Jan Molic
|
8
|
+
#
|
9
|
+
# Ruby License
|
10
|
+
#
|
11
|
+
# This module is free software. You may use, modify, and/or redistribute this
|
12
|
+
# software under the same terms as Ruby.
|
13
|
+
#
|
14
|
+
# This program is distributed in the hope that it will be useful, but WITHOUT
|
15
|
+
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
16
|
+
# FOR A PARTICULAR PURPOSE.
|
17
|
+
#
|
18
|
+
# == Authors & Contributors
|
19
|
+
#
|
20
|
+
# * Jan Molic
|
21
|
+
#
|
22
|
+
# == Developer Notes
|
23
|
+
#
|
24
|
+
# TODO Is the name too generic?
|
25
|
+
#
|
26
|
+
|
27
|
+
# Author:: Jan Molic
|
28
|
+
# Copyright:: Copyright (c) 2006 Jan Molic
|
29
|
+
# License:: Ruby License
|
30
|
+
|
31
|
+
require 'yaml'
|
32
|
+
require 'logger'
|
33
|
+
|
34
|
+
# = Debugger
|
35
|
+
#
|
36
|
+
# Debugger is an extension to Ruby's Logger which Adds nesting,
|
37
|
+
# yaml dumps, backtrace and elapsed time to logs.
|
38
|
+
#
|
39
|
+
# $log = Debugger.new( STDERR )
|
40
|
+
# $log.trace = true
|
41
|
+
# $log.debug( 'foo' ) { |log|
|
42
|
+
# log.debug( 'bar happened' )
|
43
|
+
# }
|
44
|
+
#
|
45
|
+
# which produces
|
46
|
+
#
|
47
|
+
# D, [2006-06-19T14:39:19.635675 #13814] DEBUG -- : example2:10 > foo: START
|
48
|
+
# D, [2006-06-19T14:39:19.636447 #13814] DEBUG -- : example2:11 > foo > bar happened
|
49
|
+
# D, [2006-06-19T14:39:19.637723 #13814] DEBUG -- : example2:12 > foo > object dump
|
50
|
+
# - 1
|
51
|
+
# - 2
|
52
|
+
# - 3
|
53
|
+
# D, [2006-06-19T14:39:19.638646 #13814] DEBUG -- : example2:13 > foo > baz: START
|
54
|
+
# D, [2006-06-19T14:39:19.639234 #13814] DEBUG -- : example2:14 > foo > baz > ok
|
55
|
+
# D, [2006-06-19T14:39:19.639853 #13814] DEBUG -- : example2:13 > foo > baz: END (0.00056 sec)
|
56
|
+
# D, [2006-06-19T14:39:19.640445 #13814] DEBUG -- : example2:10 > foo: END
|
57
|
+
# (0.003999 sec)
|
58
|
+
#
|
59
|
+
|
60
|
+
class Debugger
|
61
|
+
|
62
|
+
DEBUG = 0
|
63
|
+
INFO = 1
|
64
|
+
WARN = 2
|
65
|
+
ERROR = 3
|
66
|
+
FATAL = 4
|
67
|
+
UNKNOWN = 5
|
68
|
+
|
69
|
+
METHOD_MAP = {
|
70
|
+
DEBUG => :debug,
|
71
|
+
INFO => :info,
|
72
|
+
WARN => :warn,
|
73
|
+
ERROR => :error,
|
74
|
+
FATAL => :fatal,
|
75
|
+
UNKNOWN => :unknown
|
76
|
+
}
|
77
|
+
|
78
|
+
attr_accessor :trace, :name, :parent
|
79
|
+
|
80
|
+
def initialize( output )
|
81
|
+
@parent = nil
|
82
|
+
@name = ''
|
83
|
+
@trace = false
|
84
|
+
@logger = Logger.new( output )
|
85
|
+
@level = @logger.level
|
86
|
+
end
|
87
|
+
|
88
|
+
# set level ( choose one of constants )
|
89
|
+
def level= l
|
90
|
+
@logger.level = l
|
91
|
+
end
|
92
|
+
|
93
|
+
# print easily findable "point" in debug
|
94
|
+
def point( str='---- XXXX ' )
|
95
|
+
do_debug( DEBUG, (str*5), nil )
|
96
|
+
end
|
97
|
+
|
98
|
+
def debug( a='', b=nil, &block )
|
99
|
+
do_debug( DEBUG, a, b, &block )
|
100
|
+
end
|
101
|
+
|
102
|
+
def info( a='', b=nil, &block )
|
103
|
+
do_debug( INFO, a, b, &block )
|
104
|
+
end
|
105
|
+
|
106
|
+
def warn( a='', b=nil, &block )
|
107
|
+
do_debug( WARN, a, b, &block )
|
108
|
+
end
|
109
|
+
|
110
|
+
def error( a='', b=nil, &block )
|
111
|
+
do_debug( ERROR, a, b, &block )
|
112
|
+
end
|
113
|
+
|
114
|
+
def fatal( a='', b=nil, &block )
|
115
|
+
do_debug( FATAL, a, b, &block )
|
116
|
+
end
|
117
|
+
|
118
|
+
# used internally
|
119
|
+
def get_path
|
120
|
+
if @parent
|
121
|
+
@parent.get_path + [ @name ]
|
122
|
+
else
|
123
|
+
[]
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
private
|
128
|
+
|
129
|
+
def get_trace
|
130
|
+
ary = caller
|
131
|
+
1.upto( 7 ) { |i|
|
132
|
+
return ary[i] if ary[i] !~ /#{__FILE__}/
|
133
|
+
}
|
134
|
+
''
|
135
|
+
end
|
136
|
+
|
137
|
+
def output( level, obj, dump_msg )
|
138
|
+
if level >= @logger.level
|
139
|
+
if ! obj.is_a?( String )
|
140
|
+
dump_msg ||= 'object dump'
|
141
|
+
obj = dump_msg + "\n" + obj.to_yaml
|
142
|
+
end
|
143
|
+
ary = []
|
144
|
+
ary << get_trace if @trace
|
145
|
+
path = get_path
|
146
|
+
ary += path if path
|
147
|
+
ary << obj
|
148
|
+
@logger.send( METHOD_MAP[level], ary.join(' > ') )
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
def do_debug( level, a, b, &block )
|
153
|
+
if block
|
154
|
+
output( level, "#{a}: START", '' )
|
155
|
+
dbg = self.clone
|
156
|
+
dbg.parent = self
|
157
|
+
dbg.name = a
|
158
|
+
start = Time.now
|
159
|
+
block.call( dbg )
|
160
|
+
total = Time.now - start
|
161
|
+
output( level, "#{a}: END (#{total} sec)", '' )
|
162
|
+
else
|
163
|
+
output( level, a, b )
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
167
|
+
end
|
data/work/more/detach.rb
ADDED
@@ -0,0 +1,423 @@
|
|
1
|
+
=begin rdoc
|
2
|
+
|
3
|
+
= Object#detach
|
4
|
+
|
5
|
+
Written by Evan Webb <evan@fallingsnow.net>
|
6
|
+
|
7
|
+
Detach an object into a seperate process.
|
8
|
+
|
9
|
+
Simplest example expands to all objects.
|
10
|
+
|
11
|
+
require 'detach'
|
12
|
+
|
13
|
+
s = "blah"
|
14
|
+
s2 = s.detach
|
15
|
+
s2.size # 4
|
16
|
+
s2.to_s # blah
|
17
|
+
|
18
|
+
|
19
|
+
This basic example is true for all objects. All methods
|
20
|
+
are passed to the object running in the other process and
|
21
|
+
the return of #detach can be used in exactly the same way
|
22
|
+
as the original object.
|
23
|
+
|
24
|
+
Useful in splitting of sections of a application that can
|
25
|
+
then use their own thread table and will have better performance
|
26
|
+
then running all parts of a large application under one ruby thread
|
27
|
+
scheduler.
|
28
|
+
|
29
|
+
=end
|
30
|
+
|
31
|
+
require 'drb'
|
32
|
+
|
33
|
+
|
34
|
+
module Dispatch
|
35
|
+
|
36
|
+
# These are created for each background work unit (method call)
|
37
|
+
# that is created. They keep stats and allow for indexing
|
38
|
+
# when the value is ready.
|
39
|
+
class BackgroundUnit
|
40
|
+
attr_accessor :unit_id, :start, :stop
|
41
|
+
attr_reader :value, :thread
|
42
|
+
|
43
|
+
def initialize(id)
|
44
|
+
@unit_id = id
|
45
|
+
@thread = nil
|
46
|
+
@start = nil
|
47
|
+
@stop = nil
|
48
|
+
end
|
49
|
+
|
50
|
+
# Sets the thread of the unit
|
51
|
+
def thread=(th)
|
52
|
+
@thread = th
|
53
|
+
@start = Time.now
|
54
|
+
end
|
55
|
+
|
56
|
+
# Sets the value of the unit
|
57
|
+
def value=(v)
|
58
|
+
@stop = Time.now
|
59
|
+
@value = v
|
60
|
+
end
|
61
|
+
|
62
|
+
# Indicates the elapse time spent on the unit
|
63
|
+
def elapse
|
64
|
+
@stop - @start
|
65
|
+
end
|
66
|
+
|
67
|
+
# Indicates if the unit has finished processing
|
68
|
+
def ready?
|
69
|
+
!@thread.alive?
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
# Attached as the front object to a DRb, and given it's own
|
74
|
+
# front object, method calls on this object spin a new thread
|
75
|
+
# to handle the method and returns a BackgroundObject right
|
76
|
+
# away. Future usage of said BackgroundObject causes it to
|
77
|
+
# request the real object from the Dispatch (via DRb), at
|
78
|
+
# which time operations may block. This allows for the time
|
79
|
+
# between object creation and object usage for the real remote
|
80
|
+
# object to do it's working, not blocking the local objects.
|
81
|
+
class BackgroundDispatch
|
82
|
+
|
83
|
+
undef :to_s
|
84
|
+
undef :to_a
|
85
|
+
undef :respond_to?
|
86
|
+
|
87
|
+
def initialize(front,drb=false)
|
88
|
+
@front = front
|
89
|
+
@units = Hash.new
|
90
|
+
@drb = drb
|
91
|
+
end
|
92
|
+
|
93
|
+
# This is defined to keep DRb and such from trying
|
94
|
+
# to move a the Dispatcher, which must remain in the same
|
95
|
+
# context as the called method. Though, having Thread
|
96
|
+
# objects referenced with @units makes that true as well.
|
97
|
+
def _dump(d)
|
98
|
+
raise TypeError, "can't be moved"
|
99
|
+
end
|
100
|
+
|
101
|
+
# Someone has requested an operation on
|
102
|
+
# this front object to be performed. Ok, lets spin
|
103
|
+
# of the method to do it's working and return a
|
104
|
+
# BackgroundObject as a stand in.
|
105
|
+
def method_missing(msg_id, *a, &b)
|
106
|
+
# puts "Calling #{msg_id}..."
|
107
|
+
if @drb
|
108
|
+
obj = BackgroundObject.new(DRbObject.new(self))
|
109
|
+
else
|
110
|
+
obj = BackgroundObject.new(self)
|
111
|
+
end
|
112
|
+
|
113
|
+
unit = BackgroundUnit.new(obj.index)
|
114
|
+
unit.thread = Thread.new(unit) { |u|
|
115
|
+
# puts " >> In thread, sending method to real object (#{obj.index})"
|
116
|
+
u.value = @front.__send__(msg_id, *a, &b)
|
117
|
+
# puts " >> Finished operation (#{obj.index})"
|
118
|
+
}
|
119
|
+
@units[obj.index] = unit
|
120
|
+
# puts "Returning a BO for #{obj.index}"
|
121
|
+
return obj
|
122
|
+
end
|
123
|
+
|
124
|
+
# Used fetch the value of the work unit associated with
|
125
|
+
# the BackgroundObject at index. This method blocks,
|
126
|
+
# waiting until the value is ready before returning it.
|
127
|
+
def _get_obj(index)
|
128
|
+
# puts "Fetching object #{index} in #{Process.pid}"
|
129
|
+
# puts "Unit is #{@units[index].inspect}"
|
130
|
+
if not @units[index].ready?
|
131
|
+
@units[index].thread.join
|
132
|
+
end
|
133
|
+
# puts "Returning value.."
|
134
|
+
return @units[index].value
|
135
|
+
end
|
136
|
+
|
137
|
+
# Used to check if the work unit is ready.
|
138
|
+
def _obj_ready?(uid)
|
139
|
+
# puts "Checking for readiness in #{Process.pid}"
|
140
|
+
@units[uid].ready?
|
141
|
+
end
|
142
|
+
|
143
|
+
# Used for stats transparent back to the caller.
|
144
|
+
# This is done in seperate struct rather then just
|
145
|
+
# returning the unit object because it can easily be
|
146
|
+
# seralized and used on the local side of a DRb session
|
147
|
+
Stats = Struct.new(:start, :stop, :running)
|
148
|
+
|
149
|
+
# Returns the stats for a work unit.
|
150
|
+
def _obj_stats(uid)
|
151
|
+
unit = @units[uid]
|
152
|
+
if unit.nil?
|
153
|
+
return Stats.new
|
154
|
+
end
|
155
|
+
return Stats.new(unit.start,unit.stop,unit.thread.alive?)
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
# Used to create non-blocking remote method calls. Has an
|
160
|
+
# index of a work unit and a dispatch object to call on
|
161
|
+
# to do all the work.
|
162
|
+
class BackgroundObject
|
163
|
+
|
164
|
+
attr_reader :index
|
165
|
+
|
166
|
+
def initialize(dispatch)
|
167
|
+
@dispatch = dispatch
|
168
|
+
@index = self.object_id()
|
169
|
+
end
|
170
|
+
|
171
|
+
undef :to_s
|
172
|
+
undef :to_a
|
173
|
+
undef :respond_to?
|
174
|
+
|
175
|
+
# Passes all unknown method calls back to the
|
176
|
+
# original object by way of the dispatch.
|
177
|
+
def method_missing(msg_id, *a, &b)
|
178
|
+
# puts "in #{Process.pid}, asking for #{msg_id} from a #{@dispatch.class}"
|
179
|
+
obj = @dispatch._get_obj(@index)
|
180
|
+
# puts "Ret is a #{obj.class}"
|
181
|
+
obj.__send__(msg_id,*a,&b)
|
182
|
+
end
|
183
|
+
|
184
|
+
# Returns true if the real object is ready.
|
185
|
+
def ready?
|
186
|
+
# puts "Checking for readiness from #{Process.pid}"
|
187
|
+
@dispatch._obj_ready?(@index)
|
188
|
+
end
|
189
|
+
alias :done? :ready?
|
190
|
+
|
191
|
+
# Returns stats for the backgrouded call.
|
192
|
+
def stats
|
193
|
+
@dispatch._obj_stats(@index)
|
194
|
+
end
|
195
|
+
|
196
|
+
# I added when it choked needing this
|
197
|
+
def self._load(d)
|
198
|
+
end
|
199
|
+
end
|
200
|
+
end
|
201
|
+
|
202
|
+
|
203
|
+
|
204
|
+
class Object
|
205
|
+
# Accepts a hash of options to use when detaching.
|
206
|
+
#
|
207
|
+
# :ps - Controls if the title of the new process is changed
|
208
|
+
# to reflect it being a detached object.
|
209
|
+
#
|
210
|
+
# Values:
|
211
|
+
# * :append - Append information to the current process title
|
212
|
+
# * :replace - Replace the current process title all together
|
213
|
+
# * :none - Don't change the process title at all
|
214
|
+
#
|
215
|
+
#
|
216
|
+
# :name - Sets what the name of the process actually is.
|
217
|
+
#
|
218
|
+
# Values:
|
219
|
+
# * :parent - Uses the current process title as the name of the
|
220
|
+
# detached process (ie, $0 of the parent)
|
221
|
+
# * String - Any String value is used as the name
|
222
|
+
#
|
223
|
+
#
|
224
|
+
# :id - Sets what the id of the process will be in the new
|
225
|
+
# process title.
|
226
|
+
#
|
227
|
+
# Values:
|
228
|
+
# * :object Uses a default id, looks like the default Object#to_s
|
229
|
+
# * String Any String value is used as the id
|
230
|
+
#
|
231
|
+
#
|
232
|
+
# :die - Controls if the child process will be killed if the
|
233
|
+
# parent exits.
|
234
|
+
#
|
235
|
+
# Values:
|
236
|
+
# * :parent Detached object process follows the course of
|
237
|
+
# the parent process
|
238
|
+
# * :none The detached object process will continue running
|
239
|
+
# inspite of the fate of the parent process
|
240
|
+
#
|
241
|
+
# :path - The template of the location of the pipe used for
|
242
|
+
# communication between the parent and the detached process.
|
243
|
+
#
|
244
|
+
# Defaults to: '/tmp/drb_detach.#{pid}'
|
245
|
+
#
|
246
|
+
# Use single quotes to embed variables to be filled in later.
|
247
|
+
#
|
248
|
+
# Available variables:
|
249
|
+
# * pid The process id of the detached process
|
250
|
+
#
|
251
|
+
#
|
252
|
+
# :allrefs - Controls how objects are passed to and from the
|
253
|
+
# detached process. If :allrefs is set to true, all objects
|
254
|
+
# passed back and forth from the remote object are only
|
255
|
+
# passed as references, so that the original executing context
|
256
|
+
# (ie. process) is always used. This option defaults to true
|
257
|
+
# because it is the expect operating procedure.
|
258
|
+
#
|
259
|
+
# The use of this option takes pains to allow objects you would
|
260
|
+
# always expect to be Marshalled to still be Marshalled, such as
|
261
|
+
# Symbol, String, Fixnum, Bignum, Array, etc.
|
262
|
+
#
|
263
|
+
# NOTE: if you have problems with objects passed to detached
|
264
|
+
# objects executing there methods in the detached process, and
|
265
|
+
# you want them executed in the original context, try including
|
266
|
+
# Drb::Undumped in your object rather then using this.
|
267
|
+
#
|
268
|
+
# :background - Controls how methods are dispatch on the detached
|
269
|
+
# object. If :background is true, then all method calls are done
|
270
|
+
# non-blocking, and a place holder object is returned. When
|
271
|
+
# that place holder object has it's methods called, it blocks,
|
272
|
+
# waiting for the real method operation to finish.
|
273
|
+
def detach(cfg={})
|
274
|
+
cfg = {
|
275
|
+
:ps => :append,
|
276
|
+
:die => :parent,
|
277
|
+
:name => :parent,
|
278
|
+
:id => :object,
|
279
|
+
:path => '/tmp/drb_detach.#{pid}',
|
280
|
+
:allref => true,
|
281
|
+
:background => true
|
282
|
+
}.merge(cfg)
|
283
|
+
|
284
|
+
if cfg[:name] == :parent
|
285
|
+
name = $0
|
286
|
+
else
|
287
|
+
name = cfg[:name].to_s
|
288
|
+
end
|
289
|
+
|
290
|
+
if cfg[:id] == :object
|
291
|
+
id = "#<#{self.class}:0x#{self.object_id.to_s(16)}>"
|
292
|
+
else
|
293
|
+
id = cfg[:id]
|
294
|
+
end
|
295
|
+
|
296
|
+
pid = fork {
|
297
|
+
# A nice little trick
|
298
|
+
case cfg[:ps]
|
299
|
+
when :append
|
300
|
+
$0 = name + " - #{id}"
|
301
|
+
when :replace
|
302
|
+
$0 = id
|
303
|
+
when :none
|
304
|
+
break
|
305
|
+
end
|
306
|
+
|
307
|
+
if cfg[:ps].kind_of? String
|
308
|
+
$0 = cfg[:ps]
|
309
|
+
end
|
310
|
+
|
311
|
+
trap("INT") {
|
312
|
+
exit
|
313
|
+
}
|
314
|
+
|
315
|
+
pid = Process.pid
|
316
|
+
|
317
|
+
obj = nil
|
318
|
+
if cfg[:background] == true
|
319
|
+
obj = Dispatch::BackgroundDispatch.new(self,true)
|
320
|
+
else
|
321
|
+
obj = self
|
322
|
+
end
|
323
|
+
|
324
|
+
DRb.start_service("drbunix://"+eval(%!"#{cfg[:path]}"!),obj)
|
325
|
+
DRb.thread.join
|
326
|
+
exit
|
327
|
+
}
|
328
|
+
|
329
|
+
# Mom always said I should clean up after myself
|
330
|
+
|
331
|
+
if cfg[:die] == :parent
|
332
|
+
at_exit {
|
333
|
+
Process.kill("INT", pid)
|
334
|
+
}
|
335
|
+
end
|
336
|
+
|
337
|
+
sleep 0.3
|
338
|
+
DRb.start_service
|
339
|
+
remote = DRbObject.new(nil,"drbunix://"+eval(%!"#{cfg[:path]}"!))
|
340
|
+
if cfg[:allref] == true
|
341
|
+
remote.instance_eval "alias :real_method_missing :method_missing"
|
342
|
+
|
343
|
+
def remote.method_missing(msg_id, *a, &b)
|
344
|
+
a.each do |i|
|
345
|
+
allow = true
|
346
|
+
[Symbol, String, Fixnum, Bignum, Array, Regexp].each do |t|
|
347
|
+
if i.kind_of? t
|
348
|
+
allow = false
|
349
|
+
break
|
350
|
+
end
|
351
|
+
end
|
352
|
+
next if not allow
|
353
|
+
def i._dump(d)
|
354
|
+
raise TypeError, 'can\'t dump'
|
355
|
+
end
|
356
|
+
end
|
357
|
+
return real_method_missing(msg_id, *a)
|
358
|
+
end
|
359
|
+
end
|
360
|
+
|
361
|
+
return remote
|
362
|
+
end
|
363
|
+
end
|
364
|
+
|
365
|
+
|
366
|
+
|
367
|
+
=begin test
|
368
|
+
|
369
|
+
require 'test/unit'
|
370
|
+
|
371
|
+
# fixture
|
372
|
+
|
373
|
+
class Logger
|
374
|
+
def log(str)
|
375
|
+
puts "From #{Process.pid}: #{str.to_s}"
|
376
|
+
end
|
377
|
+
end
|
378
|
+
|
379
|
+
class Person
|
380
|
+
attr_accessor :log
|
381
|
+
def say(msg)
|
382
|
+
puts "Detached #{Process.pid}"
|
383
|
+
@log.log("hello, i said #{msg}")
|
384
|
+
end
|
385
|
+
def wait
|
386
|
+
sleep 10
|
387
|
+
"hi"
|
388
|
+
end
|
389
|
+
end
|
390
|
+
|
391
|
+
|
392
|
+
class TC_Detach < Test::Unit::TestCase
|
393
|
+
|
394
|
+
puts "Parent is #{Process.pid}"
|
395
|
+
|
396
|
+
log = Logger.new
|
397
|
+
p = Person.new
|
398
|
+
p = p.detach(:allref => true)
|
399
|
+
puts "p is a #{p.class}"
|
400
|
+
p.log = log
|
401
|
+
p.say("I won!")
|
402
|
+
|
403
|
+
s = p.wait
|
404
|
+
|
405
|
+
puts "s is a #{s.class}"
|
406
|
+
|
407
|
+
puts "While i'm here, the other process should be doing it's thing."
|
408
|
+
puts "It's waiting for 10 seconds, so if i wait for 5, it should only be another 5 after i ask for the method that it returns"
|
409
|
+
sleep 5
|
410
|
+
|
411
|
+
puts "Lets try something..."
|
412
|
+
while not s.ready?
|
413
|
+
puts "Is the method ready? (#{s.ready?})"
|
414
|
+
sleep 2
|
415
|
+
end
|
416
|
+
p s.to_s
|
417
|
+
|
418
|
+
puts "Stats:"
|
419
|
+
p s.stats
|
420
|
+
|
421
|
+
end
|
422
|
+
|
423
|
+
=end
|