facets 1.3.3 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/{doc/AUTHORS → AUTHORS} +12 -3
- data/README +35 -29
- data/WARNING +56 -0
- data/demo/annotation/demo_annotation.rb +22 -0
- data/demo/ansicolor/cdiff.rb +20 -0
- data/demo/ansicolor/example.rb +82 -0
- data/demo/io-reactor/chatserver.rb +347 -0
- data/demo/lisp/game.rb +47 -0
- data/lib/facet/all.rb +1 -0
- data/lib/facet/annattr.rb +1 -0
- data/lib/facet/class/to_proc.rb +1 -0
- data/lib/facet/cookie.rb +1 -0
- data/lib/facet/dir/self/descend.rb +1 -0
- data/lib/facet/enumerable/count.rb +1 -0
- data/lib/facet/hash/to_proc.rb +1 -0
- data/lib/facet/hashbuilder.rb +1 -0
- data/lib/facet/http.rb +1 -0
- data/lib/facet/httpaccess.rb +1 -0
- data/lib/facet/kernel/__get__.rb +1 -0
- data/lib/facet/kernel/__set__.rb +1 -0
- data/lib/facet/kernel/cache.rb +1 -0
- data/lib/facet/kernel/respond.rb +1 -0
- data/lib/facet/lazy.rb +1 -0
- data/lib/facet/module/class.rb +1 -0
- data/lib/facet/module/nodef.rb +1 -0
- data/lib/facet/opencascade.rb +1 -0
- data/lib/facet/pqueue.rb +1 -0
- data/lib/facet/taskable.rb +1 -0
- data/lib/facets.rb +98 -37
- data/lib/facets/core/all.rb +5 -0
- data/lib/facets/core/class/to_proc.rb +25 -0
- data/lib/facets/core/dir/self/ascend.rb +2 -1
- data/lib/facets/core/dir/self/descend.rb +11 -0
- data/lib/facets/core/enumerable/accumulate.rb +2 -2
- data/lib/facets/core/enumerable/count.rb +54 -0
- data/lib/facets/core/enumerable/cross.rb +3 -0
- data/lib/facets/core/enumerable/graph.rb +8 -4
- data/lib/facets/core/enumerable/self/cross.rb +11 -5
- data/lib/facets/core/hash/to_proc.rb +34 -0
- data/lib/facets/core/hash/traverse.rb +10 -5
- data/lib/facets/core/kernel/__class__.rb +1 -1
- data/lib/facets/core/kernel/__get__.rb +5 -0
- data/lib/facets/core/kernel/__set__.rb +2 -0
- data/lib/facets/core/kernel/assign_from.rb +1 -1
- data/lib/facets/core/kernel/assign_with.rb +11 -3
- data/lib/facets/core/kernel/bool.rb +1 -1
- data/lib/facets/core/kernel/cache.rb +31 -0
- data/lib/facets/core/kernel/demo.rb +4 -0
- data/lib/facets/core/kernel/get_by_id.rb +1 -0
- data/lib/facets/core/kernel/in.rb +1 -1
- data/lib/facets/core/kernel/instance_assign.rb +2 -3
- data/lib/facets/core/kernel/method.rb +25 -7
- data/lib/facets/core/kernel/methods.rb +1 -1
- data/lib/facets/core/kernel/new.rb +1 -1
- data/lib/facets/core/kernel/object_class.rb +1 -1
- data/lib/facets/core/kernel/object_hexid.rb +1 -1
- data/lib/facets/core/kernel/own.rb +1 -1
- data/lib/facets/core/kernel/require_all.rb +1 -0
- data/lib/facets/core/kernel/require_esc.rb +4 -2
- data/lib/facets/core/kernel/require_facet.rb +2 -0
- data/lib/facets/core/kernel/require_local.rb +1 -0
- data/lib/facets/core/kernel/respond.rb +14 -0
- data/lib/facets/core/kernel/send_as.rb +1 -1
- data/lib/facets/core/kernel/silence_warnings.rb +1 -1
- data/lib/facets/core/kernel/singleton.rb +3 -1
- data/lib/facets/core/matchdata/matchtree.rb +13 -3
- data/lib/facets/core/module/class.rb +3 -0
- data/lib/facets/core/module/integrate.rb +31 -4
- data/lib/facets/core/module/{undef.rb → nodef.rb} +8 -3
- data/lib/facets/core/module/revisal.rb +5 -5
- data/lib/facets/more/annattr.rb +147 -0
- data/lib/facets/more/annotation.rb +32 -136
- data/lib/facets/more/ansicode.rb +89 -100
- data/lib/facets/more/aspects.rb +28 -0
- data/lib/facets/more/association.rb +88 -47
- data/lib/facets/more/basicobject.rb +51 -33
- data/lib/facets/more/bbcode.rb +21 -34
- data/lib/facets/more/binaryreader.rb +62 -33
- data/lib/facets/more/bitmask.rb +24 -24
- data/lib/facets/more/blankslate.rb +4 -0
- data/lib/facets/more/builderobject.rb +16 -20
- data/lib/facets/more/bytes.rb +43 -24
- data/lib/facets/more/classinherit.rb +15 -31
- data/lib/facets/more/classmethods.rb +19 -29
- data/lib/facets/more/cloneable.rb +42 -30
- data/lib/facets/more/consoleapp.rb +42 -22
- data/lib/facets/more/cookie.rb +565 -0
- data/lib/facets/more/coroutine.rb +17 -21
- data/lib/facets/more/crypt.rb +33 -12
- data/lib/facets/more/dictionary.rb +27 -36
- data/lib/facets/more/downloader.rb +21 -17
- data/lib/facets/more/elementor.rb +22 -0
- data/lib/facets/more/enumerablepass.rb +19 -27
- data/lib/facets/more/expirable.rb +18 -28
- data/lib/facets/more/filelist.rb +33 -32
- data/lib/facets/more/floatstring.rb +31 -40
- data/lib/facets/more/functor.rb +15 -25
- data/lib/facets/more/hashbuilder.rb +76 -0
- data/lib/facets/more/heap.rb +29 -36
- data/lib/facets/more/htmlbuilder.rb +22 -24
- data/lib/facets/more/htmlhelper.rb +89 -0
- data/lib/facets/more/http.rb +570 -0
- data/lib/facets/more/httpaccess.rb +1608 -0
- data/lib/facets/more/inheritor.rb +29 -21
- data/lib/facets/more/interval.rb +21 -25
- data/lib/facets/more/ioredirect.rb +21 -25
- data/lib/facets/more/json.rb +27 -17
- data/lib/facets/more/lazy.rb +238 -0
- data/lib/facets/more/lisp.rb +24 -27
- data/lib/facets/more/lisp_format.rb +93 -85
- data/lib/facets/more/lrucache.rb +17 -27
- data/lib/facets/more/mathconstants.rb +22 -40
- data/lib/facets/more/methodprobe.rb +56 -61
- data/lib/facets/more/mock.rb +24 -17
- data/lib/facets/more/multipliers.rb +21 -17
- data/lib/facets/more/multiton.rb +18 -24
- data/lib/facets/more/nackclass.rb +17 -21
- data/lib/facets/more/nilcomparable.rb +28 -30
- data/lib/facets/more/nullclass.rb +16 -15
- data/lib/facets/more/one.rb +94 -58
- data/lib/facets/more/opencascade.rb +187 -0
- data/lib/facets/more/openobject.rb +89 -66
- data/lib/facets/more/orderedhash.rb +4 -0
- data/lib/facets/more/ormsupport.rb +18 -29
- data/lib/facets/more/overload.rb +39 -3
- data/lib/facets/more/paramix.rb +16 -24
- data/lib/facets/more/pathlist.rb +17 -23
- data/lib/facets/more/pool.rb +21 -29
- data/lib/facets/more/pqueue.rb +190 -0
- data/lib/facets/more/preinitialize.rb +17 -18
- data/lib/facets/more/progressbar.rb +19 -15
- data/lib/facets/more/promoteself.rb +17 -21
- data/lib/facets/more/quaternion.rb +379 -346
- data/lib/facets/more/recorder.rb +15 -20
- data/lib/facets/more/reference.rb +25 -22
- data/lib/facets/more/rexmlbuilder.rb +21 -6
- data/lib/facets/more/rtals.rb +27 -24
- data/lib/facets/more/semaphore.rb +15 -28
- data/lib/facets/more/snapshot.rb +45 -41
- data/lib/facets/more/stateparser.rb +25 -35
- data/lib/facets/more/statichash.rb +37 -29
- data/lib/facets/more/syncarray.rb +18 -26
- data/lib/facets/more/synchash.rb +17 -26
- data/lib/facets/more/system.rb +25 -17
- data/lib/facets/more/tagiterator.rb +15 -39
- data/lib/facets/more/taskable.rb +417 -0
- data/lib/facets/more/timer.rb +22 -26
- data/lib/facets/more/times.rb +23 -23
- data/lib/facets/more/tracepoint.rb +25 -24
- data/lib/facets/more/tuple.rb +25 -42
- data/lib/facets/more/typecast.rb +27 -29
- data/lib/facets/more/uninheritable.rb +15 -22
- data/lib/facets/more/units.rb +23 -29
- data/lib/facets/more/xmlbuilder.rb +20 -22
- data/lib/facets/more/xmlhelper.rb +18 -21
- data/lib/facets/more/xoxo.rb +23 -11
- data/lib/facets/more/yamlstruct.rb +25 -22
- data/test/lib/facets/core/array/test_at_rand.rb +1 -1
- data/test/lib/facets/core/array/test_delete_unless.rb +1 -1
- data/test/lib/facets/core/array/test_delete_values.rb +1 -1
- data/test/lib/facets/core/array/test_delete_values_at.rb +1 -1
- data/test/lib/facets/core/array/test_first.rb +1 -1
- data/test/lib/facets/core/array/test_head.rb +1 -1
- data/test/lib/facets/core/array/test_last_index.rb +1 -1
- data/test/lib/facets/core/array/test_merge.rb +1 -1
- data/test/lib/facets/core/array/test_mid.rb +1 -1
- data/test/lib/facets/core/array/test_middle.rb +1 -1
- data/test/lib/facets/core/array/test_op_fetch.rb +1 -1
- data/test/lib/facets/core/array/test_op_store.rb +1 -1
- data/test/lib/facets/core/array/test_pick.rb +1 -1
- data/test/lib/facets/core/array/test_pos.rb +1 -1
- data/test/lib/facets/core/array/test_pot.rb +1 -1
- data/test/lib/facets/core/array/test_pull.rb +1 -1
- data/test/lib/facets/core/array/test_rand_index.rb +1 -1
- data/test/lib/facets/core/array/test_rand_subset.rb +1 -1
- data/test/lib/facets/core/array/test_range.rb +1 -1
- data/test/lib/facets/core/array/test_rotate.rb +1 -1
- data/test/lib/facets/core/array/test_select.rb +1 -1
- data/test/lib/facets/core/array/test_shuffle.rb +1 -1
- data/test/lib/facets/core/array/test_thru.rb +1 -1
- data/test/lib/facets/core/array/test_to_b.rb +1 -1
- data/test/lib/facets/core/array/test_to_h.rb +1 -1
- data/test/lib/facets/core/array/test_to_hash.rb +1 -1
- data/test/lib/facets/core/binding/self/test_of_caller.rb +1 -1
- data/test/lib/facets/core/binding/test___LINE__.rb +1 -1
- data/test/lib/facets/core/binding/test_call_stack.rb +1 -1
- data/test/lib/facets/core/binding/test_called.rb +1 -1
- data/test/lib/facets/core/binding/test_caller.rb +1 -1
- data/test/lib/facets/core/binding/test_defined.rb +1 -1
- data/test/lib/facets/core/binding/test_eval.rb +1 -1
- data/test/lib/facets/core/binding/test_local_variables.rb +1 -1
- data/test/lib/facets/core/binding/test_method_name.rb +1 -1
- data/test/lib/facets/core/binding/test_op_fetch.rb +1 -1
- data/test/lib/facets/core/binding/test_op_store.rb +1 -1
- data/test/lib/facets/core/binding/test_self.rb +1 -1
- data/test/lib/facets/core/class/test_cattr.rb +1 -1
- data/test/lib/facets/core/class/test_descendents.rb +1 -1
- data/test/lib/facets/core/class/test_method_name.rb +1 -1
- data/test/lib/facets/core/class/test_remove_descendents.rb +1 -1
- data/test/lib/facets/core/class/test_unix_path.rb +1 -1
- data/test/lib/facets/core/comparable/test_at_least.rb +1 -1
- data/test/lib/facets/core/comparable/test_clip.rb +1 -1
- data/test/lib/facets/core/comparable/test_cmp.rb +1 -1
- data/test/lib/facets/core/continuation/self/test_create.rb +1 -1
- data/test/lib/facets/core/date/test_days_in_month.rb +1 -1
- data/test/lib/facets/core/date/test_days_of_month.rb +1 -1
- data/test/lib/facets/core/date/test_stamp.rb +1 -1
- data/test/lib/facets/core/date/test_to_date.rb +1 -1
- data/test/lib/facets/core/date/test_to_s.rb +1 -1
- data/test/lib/facets/core/date/test_to_time.rb +1 -1
- data/test/lib/facets/core/dir/self/test_ancestor.rb +1 -1
- data/test/lib/facets/core/dir/self/test_ascend.rb +1 -1
- data/test/lib/facets/core/enumerable/self/test_combinations.rb +1 -1
- data/test/lib/facets/core/enumerable/self/test_cross.rb +1 -1
- data/test/lib/facets/core/enumerable/test_collect_with_index.rb +1 -1
- data/test/lib/facets/core/enumerable/test_commonality.rb +1 -1
- data/test/lib/facets/core/enumerable/test_compact_collect.rb +1 -1
- data/test/lib/facets/core/enumerable/test_count.rb +38 -0
- data/test/lib/facets/core/enumerable/test_cross.rb +1 -1
- data/test/lib/facets/core/enumerable/test_each_combination.rb +1 -1
- data/test/lib/facets/core/enumerable/test_each_pair.rb +1 -1
- data/test/lib/facets/core/enumerable/test_each_slice.rb +1 -1
- data/test/lib/facets/core/enumerable/test_each_unique_pair.rb +1 -1
- data/test/lib/facets/core/enumerable/test_entropy.rb +1 -1
- data/test/lib/facets/core/enumerable/test_every.rb +1 -1
- data/test/lib/facets/core/enumerable/test_ew.rb +1 -1
- data/test/lib/facets/core/enumerable/test_filter_collect.rb +1 -1
- data/test/lib/facets/core/enumerable/test_find_collisions.rb +1 -1
- data/test/lib/facets/core/enumerable/test_frequency.rb +1 -1
- data/test/lib/facets/core/enumerable/test_graph.rb +1 -1
- data/test/lib/facets/core/enumerable/test_ideal_entropy.rb +1 -1
- data/test/lib/facets/core/enumerable/test_none.rb +1 -1
- data/test/lib/facets/core/enumerable/test_occur.rb +1 -1
- data/test/lib/facets/core/enumerable/test_one.rb +1 -1
- data/test/lib/facets/core/enumerable/test_op_pow.rb +1 -1
- data/test/lib/facets/core/enumerable/test_partition_by.rb +1 -1
- data/test/lib/facets/core/enumerable/test_permute.rb +1 -1
- data/test/lib/facets/core/enumerable/test_probability.rb +1 -1
- data/test/lib/facets/core/enumerable/test_to_h.rb +1 -1
- data/test/lib/facets/core/enumerable/test_uniq_by.rb +1 -1
- data/test/lib/facets/core/file/self/test_create.rb +1 -1
- data/test/lib/facets/core/file/self/test_open_as_string.rb +1 -1
- data/test/lib/facets/core/file/self/test_read_list.rb +1 -1
- data/test/lib/facets/core/file/self/test_sanitize.rb +1 -1
- data/test/lib/facets/core/file/self/test_split_all.rb +1 -1
- data/test/lib/facets/core/float/test_round_at.rb +1 -1
- data/test/lib/facets/core/float/test_round_to.rb +1 -1
- data/test/lib/facets/core/hash/self/test_zipnew.rb +1 -1
- data/test/lib/facets/core/hash/test_alias.rb +1 -1
- data/test/lib/facets/core/hash/test_assert_has_keys.rb +1 -1
- data/test/lib/facets/core/hash/test_assert_has_only_keys.rb +1 -1
- data/test/lib/facets/core/hash/test_at.rb +1 -1
- data/test/lib/facets/core/hash/test_collate.rb +1 -1
- data/test/lib/facets/core/hash/test_each.rb +1 -1
- data/test/lib/facets/core/hash/test_each_with_index.rb +1 -1
- data/test/lib/facets/core/hash/test_each_with_key.rb +1 -1
- data/test/lib/facets/core/hash/test_graph.rb +1 -1
- data/test/lib/facets/core/hash/test_has_keys.rb +1 -1
- data/test/lib/facets/core/hash/test_has_only_keys.rb +1 -1
- data/test/lib/facets/core/hash/test_inverse.rb +1 -1
- data/test/lib/facets/core/hash/test_keys_to_s.rb +1 -1
- data/test/lib/facets/core/hash/test_keys_to_sym.rb +1 -1
- data/test/lib/facets/core/hash/test_op_fetch.rb +1 -1
- data/test/lib/facets/core/hash/test_op_lshift.rb +1 -1
- data/test/lib/facets/core/hash/test_rand_key.rb +1 -1
- data/test/lib/facets/core/hash/test_rand_pair.rb +1 -1
- data/test/lib/facets/core/hash/test_rand_value.rb +1 -1
- data/test/lib/facets/core/hash/test_replace_each.rb +1 -1
- data/test/lib/facets/core/hash/test_shuffle.rb +1 -1
- data/test/lib/facets/core/hash/test_slice.rb +1 -1
- data/test/lib/facets/core/hash/test_swap.rb +1 -1
- data/test/lib/facets/core/hash/test_swapkey.rb +1 -1
- data/test/lib/facets/core/hash/test_to_h.rb +1 -1
- data/test/lib/facets/core/hash/test_to_ostruct.rb +1 -1
- data/test/lib/facets/core/hash/test_to_ostruct_recurse.rb +1 -1
- data/test/lib/facets/core/hash/test_traverse.rb +1 -1
- data/test/lib/facets/core/hash/test_update_each.rb +1 -1
- data/test/lib/facets/core/hash/test_update_keys.rb +1 -1
- data/test/lib/facets/core/hash/test_update_values.rb +1 -1
- data/test/lib/facets/core/hash/test_weave.rb +1 -1
- data/test/lib/facets/core/integer/test_factorial.rb +1 -1
- data/test/lib/facets/core/integer/test_multiple.rb +1 -1
- data/test/lib/facets/core/integer/test_ordinal.rb +1 -1
- data/test/lib/facets/core/integer/test_times_collect.rb +1 -1
- data/test/lib/facets/core/kernel/test___class__.rb +1 -1
- data/test/lib/facets/core/kernel/test_as.rb +1 -1
- data/test/lib/facets/core/kernel/test_assign_from.rb +1 -1
- data/test/lib/facets/core/kernel/test_assign_with.rb +1 -1
- data/test/lib/facets/core/kernel/test_bool.rb +1 -1
- data/test/lib/facets/core/kernel/test_bug.rb +1 -1
- data/test/lib/facets/core/kernel/test_call_stack.rb +1 -1
- data/test/lib/facets/core/kernel/test_called.rb +1 -1
- data/test/lib/facets/core/kernel/test_constant.rb +1 -1
- data/test/lib/facets/core/kernel/test_copy.rb +1 -1
- data/test/lib/facets/core/kernel/test_deep_copy.rb +1 -1
- data/test/lib/facets/core/kernel/test_demo.rb +1 -1
- data/test/lib/facets/core/kernel/test_fn.rb +1 -1
- data/test/lib/facets/core/kernel/test_generate_method_name.rb +1 -1
- data/test/lib/facets/core/kernel/test_get_by_id.rb +1 -1
- data/test/lib/facets/core/kernel/test_here.rb +1 -1
- data/test/lib/facets/core/kernel/test_in.rb +1 -1
- data/test/lib/facets/core/kernel/test_maybe.rb +1 -1
- data/test/lib/facets/core/kernel/test_metaclass.rb +1 -1
- data/test/lib/facets/core/kernel/test_method.rb +1 -1
- data/test/lib/facets/core/kernel/test_methodname.rb +1 -1
- data/test/lib/facets/core/kernel/test_methods.rb +1 -1
- data/test/lib/facets/core/kernel/test_new.rb +1 -1
- data/test/lib/facets/core/kernel/test_object_class.rb +1 -1
- data/test/lib/facets/core/kernel/test_object_hexid.rb +1 -1
- data/test/lib/facets/core/kernel/test_require_all.rb +1 -1
- data/test/lib/facets/core/kernel/test_require_esc.rb +1 -1
- data/test/lib/facets/core/kernel/test_require_facet.rb +1 -1
- data/test/lib/facets/core/kernel/test_resc.rb +1 -1
- data/test/lib/facets/core/kernel/test_returning.rb +1 -1
- data/test/lib/facets/core/kernel/test_send_as.rb +1 -1
- data/test/lib/facets/core/kernel/test_set_from.rb +1 -1
- data/test/lib/facets/core/kernel/test_set_with.rb +1 -1
- data/test/lib/facets/core/kernel/test_silently.rb +1 -1
- data/test/lib/facets/core/kernel/test_singleton.rb +1 -1
- data/test/lib/facets/core/kernel/test_superior.rb +1 -1
- data/test/lib/facets/core/kernel/test_supermethod.rb +1 -1
- data/test/lib/facets/core/kernel/test_this.rb +1 -1
- data/test/lib/facets/core/kernel/test_to_b.rb +1 -1
- data/test/lib/facets/core/kernel/test_to_bool.rb +1 -1
- data/test/lib/facets/core/kernel/test_uri.rb +1 -1
- data/test/lib/facets/core/kernel/test_val.rb +1 -1
- data/test/lib/facets/core/kernel/test_with_accessor.rb +1 -1
- data/test/lib/facets/core/matchdata/test_match.rb +1 -1
- data/test/lib/facets/core/matchdata/test_matchtree.rb +7 -2
- data/test/lib/facets/core/module/test_abstract.rb +1 -1
- data/test/lib/facets/core/module/test_alias_module_function.rb +1 -1
- data/test/lib/facets/core/module/test_ancestor.rb +1 -1
- data/test/lib/facets/core/module/test_basename.rb +1 -1
- data/test/lib/facets/core/module/test_by_name.rb +1 -1
- data/test/lib/facets/core/module/test_clone_using.rb +1 -1
- data/test/lib/facets/core/module/test_dirname.rb +1 -1
- data/test/lib/facets/core/module/test_equate_on.rb +1 -1
- data/test/lib/facets/core/module/test_generate_instance_method_name.rb +1 -1
- data/test/lib/facets/core/module/test_include_as.rb +1 -1
- data/test/lib/facets/core/module/test_inherit.rb +1 -1
- data/test/lib/facets/core/module/test_initializer.rb +1 -1
- data/test/lib/facets/core/module/test_instance_methods.rb +1 -1
- data/test/lib/facets/core/module/test_integrate.rb +1 -1
- data/test/lib/facets/core/module/test_memoize.rb +1 -1
- data/test/lib/facets/core/module/test_modspace.rb +1 -1
- data/test/lib/facets/core/module/test_namespace.rb +1 -1
- data/test/lib/facets/core/module/test_nesting.rb +1 -1
- data/test/lib/facets/core/module/{test_undef.rb → test_nodef.rb} +5 -5
- data/test/lib/facets/core/module/test_on_included.rb +1 -1
- data/test/lib/facets/core/module/test_redef.rb +1 -1
- data/test/lib/facets/core/module/test_redefine_method.rb +1 -1
- data/test/lib/facets/core/module/test_redirect.rb +1 -1
- data/test/lib/facets/core/module/test_redirect_method.rb +1 -1
- data/test/lib/facets/core/module/test_remove.rb +1 -1
- data/test/lib/facets/core/module/test_rename.rb +1 -1
- data/test/lib/facets/core/module/test_rename_method.rb +1 -1
- data/test/lib/facets/core/module/test_revisal.rb +1 -1
- data/test/lib/facets/core/module/test_shadow_method.rb +1 -1
- data/test/lib/facets/core/module/test_sort_on.rb +1 -1
- data/test/lib/facets/core/module/test_this.rb +1 -1
- data/test/lib/facets/core/module/test_wrap.rb +1 -1
- data/test/lib/facets/core/module/test_wrap_method.rb +1 -1
- data/test/lib/facets/core/nilclass/test_blank.rb +1 -1
- data/test/lib/facets/core/nilclass/test_empty.rb +1 -1
- data/test/lib/facets/core/nilclass/test_include.rb +1 -1
- data/test/lib/facets/core/nilclass/test_op_fetch.rb +1 -1
- data/test/lib/facets/core/nilclass/test_size.rb +1 -1
- data/test/lib/facets/core/nilclass/test_to_h.rb +1 -1
- data/test/lib/facets/core/numeric/test_approx.rb +1 -1
- data/test/lib/facets/core/numeric/test_ceil_multiple.rb +1 -1
- data/test/lib/facets/core/numeric/test_succ.rb +1 -1
- data/test/lib/facets/core/numeric/test_to_b.rb +1 -1
- data/test/lib/facets/core/ostruct/test___merge__.rb +1 -1
- data/test/lib/facets/core/ostruct/test___update__.rb +1 -1
- data/test/lib/facets/core/ostruct/test_op_fetch.rb +1 -1
- data/test/lib/facets/core/ostruct/test_op_store.rb +1 -1
- data/test/lib/facets/core/proc/test_compose.rb +1 -1
- data/test/lib/facets/core/proc/test_to_method.rb +1 -1
- data/test/lib/facets/core/range/test_to_r.rb +1 -1
- data/test/lib/facets/core/range/test_to_range.rb +1 -1
- data/test/lib/facets/core/range/test_umbrella.rb +1 -1
- data/test/lib/facets/core/range/test_within.rb +1 -1
- data/test/lib/facets/core/regexp/test_arity.rb +1 -1
- data/test/lib/facets/core/regexp/test_to_re.rb +1 -1
- data/test/lib/facets/core/regexp/test_to_regexp.rb +1 -1
- data/test/lib/facets/core/string/self/test_interpolate.rb +1 -1
- data/test/lib/facets/core/string/self/test_patterns.rb +1 -1
- data/test/lib/facets/core/string/self/test_rand_letter.rb +1 -1
- data/test/lib/facets/core/string/test_align_center.rb +1 -1
- data/test/lib/facets/core/string/test_at_rand.rb +1 -1
- data/test/lib/facets/core/string/test_basename.rb +1 -1
- data/test/lib/facets/core/string/test_blank.rb +1 -1
- data/test/lib/facets/core/string/test_bracket.rb +1 -1
- data/test/lib/facets/core/string/test_camelcase.rb +1 -1
- data/test/lib/facets/core/string/test_camelize.rb +1 -1
- data/test/lib/facets/core/string/test_capitalized.rb +1 -1
- data/test/lib/facets/core/string/test_chars.rb +1 -1
- data/test/lib/facets/core/string/test_cmp.rb +1 -1
- data/test/lib/facets/core/string/test_demodulize.rb +1 -1
- data/test/lib/facets/core/string/test_downcase.rb +1 -1
- data/test/lib/facets/core/string/test_dresner.rb +1 -1
- data/test/lib/facets/core/string/test_each_char.rb +1 -1
- data/test/lib/facets/core/string/test_each_word.rb +1 -1
- data/test/lib/facets/core/string/test_first.rb +1 -1
- data/test/lib/facets/core/string/test_fold.rb +1 -1
- data/test/lib/facets/core/string/test_frequency.rb +1 -1
- data/test/lib/facets/core/string/test_humanize.rb +1 -1
- data/test/lib/facets/core/string/test_indent.rb +1 -1
- data/test/lib/facets/core/string/test_index_all.rb +1 -1
- data/test/lib/facets/core/string/test_last.rb +1 -1
- data/test/lib/facets/core/string/test_line_wrap.rb +1 -1
- data/test/lib/facets/core/string/test_lines.rb +1 -1
- data/test/lib/facets/core/string/test_lowercase.rb +1 -1
- data/test/lib/facets/core/string/test_margin.rb +1 -1
- data/test/lib/facets/core/string/test_methodize.rb +1 -1
- data/test/lib/facets/core/string/test_modulize.rb +1 -1
- data/test/lib/facets/core/string/test_mscan.rb +1 -1
- data/test/lib/facets/core/string/test_natcmp.rb +1 -1
- data/test/lib/facets/core/string/test_nchar.rb +1 -1
- data/test/lib/facets/core/string/test_pathize.rb +1 -1
- data/test/lib/facets/core/string/test_pop.rb +1 -1
- data/test/lib/facets/core/string/test_pot.rb +1 -1
- data/test/lib/facets/core/string/test_probability.rb +1 -1
- data/test/lib/facets/core/string/test_push.rb +1 -1
- data/test/lib/facets/core/string/test_quote.rb +1 -1
- data/test/lib/facets/core/string/test_rand_byte.rb +1 -1
- data/test/lib/facets/core/string/test_rand_index.rb +1 -1
- data/test/lib/facets/core/string/test_range.rb +1 -1
- data/test/lib/facets/core/string/test_range_all.rb +1 -1
- data/test/lib/facets/core/string/test_range_of_line.rb +1 -1
- data/test/lib/facets/core/string/test_regesc.rb +1 -1
- data/test/lib/facets/core/string/test_shatter.rb +1 -1
- data/test/lib/facets/core/string/test_shift.rb +1 -1
- data/test/lib/facets/core/string/test_shuffle.rb +1 -1
- data/test/lib/facets/core/string/test_similarity.rb +1 -1
- data/test/lib/facets/core/string/test_singular.rb +1 -1
- data/test/lib/facets/core/string/test_soundex.rb +1 -1
- data/test/lib/facets/core/string/test_succ.rb +1 -1
- data/test/lib/facets/core/string/test_to_a.rb +1 -1
- data/test/lib/facets/core/string/test_to_b.rb +1 -1
- data/test/lib/facets/core/string/test_to_const.rb +1 -1
- data/test/lib/facets/core/string/test_to_date.rb +1 -1
- data/test/lib/facets/core/string/test_to_proc.rb +1 -1
- data/test/lib/facets/core/string/test_to_re.rb +1 -1
- data/test/lib/facets/core/string/test_to_time.rb +1 -1
- data/test/lib/facets/core/string/test_unix_crypt.rb +1 -1
- data/test/lib/facets/core/string/test_unpack.rb +1 -1
- data/test/lib/facets/core/string/test_unshift.rb +1 -1
- data/test/lib/facets/core/string/test_upcase.rb +1 -1
- data/test/lib/facets/core/string/test_whitespace.rb +1 -1
- data/test/lib/facets/core/string/test_word_filter.rb +1 -1
- data/test/lib/facets/core/string/test_word_wrap.rb +1 -1
- data/test/lib/facets/core/string/test_words.rb +1 -1
- data/test/lib/facets/core/symbol/test_camelcase.rb +1 -1
- data/test/lib/facets/core/symbol/test_camelize.rb +1 -1
- data/test/lib/facets/core/symbol/test_capitalize.rb +1 -1
- data/test/lib/facets/core/symbol/test_capitalized.rb +1 -1
- data/test/lib/facets/core/symbol/test_downcase.rb +1 -1
- data/test/lib/facets/core/symbol/test_not.rb +1 -1
- data/test/lib/facets/core/symbol/test_pad.rb +1 -1
- data/test/lib/facets/core/symbol/test_succ.rb +1 -1
- data/test/lib/facets/core/symbol/test_to_const.rb +1 -1
- data/test/lib/facets/core/symbol/test_to_proc.rb +1 -1
- data/test/lib/facets/core/symbol/test_to_str.rb +1 -1
- data/test/lib/facets/core/symbol/test_underscore.rb +1 -1
- data/test/lib/facets/core/symbol/test_upcase.rb +1 -1
- data/test/lib/facets/core/time/test_change.rb +1 -1
- data/test/lib/facets/core/time/test_elapse.rb +1 -1
- data/test/lib/facets/core/time/test_stamp.rb +1 -1
- data/test/lib/facets/core/time/test_to_date.rb +1 -1
- data/test/lib/facets/core/time/test_to_s.rb +1 -1
- data/test/lib/facets/core/time/test_to_time.rb +1 -1
- data/test/lib/facets/more/test_annattr.rb +39 -0
- data/test/lib/facets/more/test_annotatedattr.rb +39 -0
- data/test/lib/facets/more/test_annotation.rb +1 -22
- data/test/lib/facets/more/test_ansicode.rb +1 -1
- data/test/lib/facets/more/test_association.rb +6 -1
- data/test/lib/facets/more/test_basicobject.rb +1 -1
- data/test/lib/facets/more/test_bbcode.rb +1 -1
- data/test/lib/facets/more/test_binaryreader.rb +64 -0
- data/test/lib/facets/more/test_bitmask.rb +1 -1
- data/test/lib/facets/more/test_bytes.rb +1 -1
- data/test/lib/facets/more/test_classinherit.rb +1 -1
- data/test/lib/facets/more/test_classmethods.rb +1 -1
- data/test/lib/facets/more/test_coroutine.rb +1 -1
- data/test/lib/facets/more/test_crypt.rb +1 -1
- data/test/lib/facets/more/test_dictionary.rb +1 -1
- data/test/lib/facets/more/test_elementor.rb +1 -1
- data/test/lib/facets/more/test_enumerablepass.rb +1 -1
- data/test/lib/facets/more/test_floatstring.rb +1 -1
- data/test/lib/facets/more/test_functor.rb +1 -1
- data/test/lib/facets/more/test_htmlbuilder.rb +1 -1
- data/test/lib/facets/more/test_inheritor.rb +1 -1
- data/test/lib/facets/more/test_interval.rb +1 -1
- data/test/lib/facets/more/test_json.rb +1 -1
- data/test/lib/facets/more/test_lisp.rb +1 -1
- data/test/lib/facets/more/test_lisp_format.rb +1 -1
- data/test/lib/facets/more/test_lrucache.rb +1 -1
- data/test/lib/facets/more/test_mathconstants.rb +1 -1
- data/test/lib/facets/more/test_methodprobe.rb +1 -1
- data/test/lib/facets/more/test_multipliers.rb +1 -1
- data/test/lib/facets/more/test_multiton.rb +1 -1
- data/test/lib/facets/more/test_nackclass.rb +1 -1
- data/test/lib/facets/more/test_nilcomparable.rb +1 -1
- data/test/lib/facets/more/test_opencascade.rb +66 -0
- data/test/lib/facets/more/test_openobject.rb +14 -2
- data/test/lib/facets/more/test_overload.rb +1 -1
- data/test/lib/facets/more/test_paramix.rb +1 -1
- data/test/lib/facets/more/test_pqueue.rb +39 -0
- data/test/lib/facets/more/test_preinitialize.rb +1 -1
- data/test/lib/facets/more/test_promoteself.rb +1 -1
- data/test/lib/facets/more/test_recorder.rb +1 -1
- data/test/lib/facets/more/test_snapshot.rb +1 -1
- data/test/lib/facets/more/test_statichash.rb +11 -11
- data/test/lib/facets/more/test_syncarray.rb +1 -1
- data/test/lib/facets/more/test_synchash.rb +1 -1
- data/test/lib/facets/more/test_tagiterator.rb +1 -1
- data/test/lib/facets/more/test_taskable.rb +151 -0
- data/test/lib/facets/more/test_timer.rb +1 -1
- data/test/lib/facets/more/test_times.rb +1 -1
- data/test/lib/facets/more/test_tuple.rb +1 -1
- data/test/lib/facets/more/test_typecast.rb +1 -1
- data/test/lib/facets/more/test_uninheritable.rb +1 -1
- data/test/lib/facets/more/test_units.rb +1 -1
- data/test/lib/facets/more/test_xmlbuilder.rb +1 -1
- data/test/lib/facets/more/test_xmlhelper.rb +1 -1
- data/test/lib/facets/more/test_xoxo.rb +1 -1
- data/test/lib/facets/more/test_yamlstruct.rb +1 -1
- metadata +1243 -1247
- data/ProjectInfo +0 -89
- data/Rakefile +0 -181
- data/doc/CHANGELOG +0 -284
- data/doc/TODO +0 -73
- data/doc/noauto +0 -63
- data/lib/facet/array.rb +0 -1
- data/lib/facet/class.rb +0 -1
- data/lib/facet/comparable.rb +0 -1
- data/lib/facet/continuation.rb +0 -1
- data/lib/facet/date.rb +0 -1
- data/lib/facet/dir.rb +0 -1
- data/lib/facet/enumerable.rb +0 -1
- data/lib/facet/file.rb +0 -1
- data/lib/facet/fileutils.rb +0 -1
- data/lib/facet/float.rb +0 -1
- data/lib/facet/gem.rb +0 -1
- data/lib/facet/hash.rb +0 -1
- data/lib/facet/integer.rb +0 -1
- data/lib/facet/kernel.rb +0 -1
- data/lib/facet/logger.rb +0 -1
- data/lib/facet/matchdata.rb +0 -1
- data/lib/facet/module.rb +0 -1
- data/lib/facet/module/undef.rb +0 -1
- data/lib/facet/nilclass.rb +0 -1
- data/lib/facet/numeric.rb +0 -1
- data/lib/facet/pathname.rb +0 -1
- data/lib/facet/proc.rb +0 -1
- data/lib/facet/range.rb +0 -1
- data/lib/facet/regexp.rb +0 -1
- data/lib/facet/string.rb +0 -1
- data/lib/facet/symbol.rb +0 -1
- data/lib/facet/time.rb +0 -1
- data/lib/facet/unboundmethod.rb +0 -1
- data/lib/facets/core/array.rb +0 -35
- data/lib/facets/core/class.rb +0 -11
- data/lib/facets/core/comparable.rb +0 -5
- data/lib/facets/core/continuation.rb +0 -1
- data/lib/facets/core/date.rb +0 -6
- data/lib/facets/core/dir.rb +0 -4
- data/lib/facets/core/enumerable.rb +0 -42
- data/lib/facets/core/file.rb +0 -8
- data/lib/facets/core/fileutils.rb +0 -8
- data/lib/facets/core/float.rb +0 -4
- data/lib/facets/core/gem.rb +0 -4
- data/lib/facets/core/hash.rb +0 -40
- data/lib/facets/core/integer.rb +0 -9
- data/lib/facets/core/kernel.rb +0 -69
- data/lib/facets/core/logger.rb +0 -2
- data/lib/facets/core/matchdata.rb +0 -3
- data/lib/facets/core/module.rb +0 -43
- data/lib/facets/core/nilclass.rb +0 -9
- data/lib/facets/core/numeric.rb +0 -6
- data/lib/facets/core/pathname.rb +0 -2
- data/lib/facets/core/proc.rb +0 -3
- data/lib/facets/core/range.rb +0 -4
- data/lib/facets/core/regexp.rb +0 -3
- data/lib/facets/core/string.rb +0 -91
- data/lib/facets/core/symbol.rb +0 -13
- data/lib/facets/core/time.rb +0 -8
- data/lib/facets/core/unboundmethod.rb +0 -1
data/lib/facets/more/ansicode.rb
CHANGED
|
@@ -1,122 +1,111 @@
|
|
|
1
|
-
|
|
2
|
-
# ANSICode
|
|
1
|
+
# = ansicode.rb
|
|
3
2
|
#
|
|
4
|
-
# Copyright (c)
|
|
3
|
+
# == Copyright (c) 2004 Florian Frank, Thomas Sawyer
|
|
5
4
|
#
|
|
6
|
-
#
|
|
5
|
+
# Ruby License
|
|
7
6
|
#
|
|
8
|
-
#
|
|
9
|
-
#
|
|
7
|
+
# This module is free software. You may use, modify, and/or redistribute this
|
|
8
|
+
# software under the same terms as Ruby.
|
|
10
9
|
#
|
|
11
|
-
#
|
|
12
|
-
#
|
|
13
|
-
#
|
|
10
|
+
# This program is distributed in the hope that it will be useful, but WITHOUT
|
|
11
|
+
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
12
|
+
# FOR A PARTICULAR PURPOSE.
|
|
14
13
|
#
|
|
15
|
-
#
|
|
16
|
-
# Revision History
|
|
17
|
-
# --------------------------------------------------------------------------
|
|
18
|
-
# 2005-04-28 Trans * Modifications to documentation.
|
|
14
|
+
# == Authors & Contributors
|
|
19
15
|
#
|
|
20
|
-
#
|
|
21
|
-
#
|
|
22
|
-
# 2004-09-28 FF * First release on Rubyforge
|
|
23
|
-
# * Supports Rubygems now
|
|
24
|
-
#
|
|
25
|
-
# 2003-10-09 FF * Added uncolored method as suggested by
|
|
26
|
-
# Thomas Husterer <Thomas.Husterer@heidelberg.com>
|
|
27
|
-
# * Added attribute methods with string arguments
|
|
28
|
-
# * Deleted now unused files
|
|
29
|
-
#
|
|
30
|
-
# 2002-07-27 FF * Minor Code Cleanup
|
|
31
|
-
# * Added cdiff.rb
|
|
16
|
+
# * Florian Frank
|
|
17
|
+
# * Thomas Sawyer
|
|
32
18
|
#
|
|
33
|
-
#
|
|
34
|
-
# ==========================================================================
|
|
19
|
+
# == Speical Thanks
|
|
35
20
|
#
|
|
36
|
-
#
|
|
37
|
-
#
|
|
21
|
+
# Special thanks to Florian Frank. ANSICode is a partial adaptation
|
|
22
|
+
# of ANSIColor, Copyright (c) 2002 Florian Frank, LGPL.
|
|
38
23
|
#
|
|
39
|
-
#
|
|
24
|
+
# == Developer Notes
|
|
40
25
|
#
|
|
41
|
-
#
|
|
26
|
+
# TODO Need to add rest of ANSI codes. Include modes?
|
|
42
27
|
#
|
|
43
|
-
#
|
|
44
|
-
# versions too?
|
|
28
|
+
# TODO Re-evaluate how color/yielding methods are defined.
|
|
45
29
|
#
|
|
46
|
-
|
|
30
|
+
# TODO Maybe up, down, right, left should have yielding
|
|
31
|
+
# methods too?
|
|
47
32
|
|
|
48
|
-
#
|
|
49
|
-
#
|
|
50
|
-
#
|
|
51
|
-
|
|
52
|
-
#
|
|
53
|
-
# == Synopsis
|
|
54
|
-
#
|
|
55
|
-
# include Console::ANSICode
|
|
56
|
-
#
|
|
57
|
-
# p red, "Hello", blue, "World"
|
|
58
|
-
# => "\e[31mHello\e[34mWorld"
|
|
59
|
-
#
|
|
60
|
-
# p red { "Hello" } + blue { "World" }
|
|
61
|
-
# => "\e[31mHello\e[0m\e[34mWorld\e[0m"
|
|
62
|
-
#
|
|
63
|
-
# == Supported ANSI Commands
|
|
64
|
-
#
|
|
65
|
-
# save
|
|
66
|
-
# restore
|
|
67
|
-
# clear_screen
|
|
68
|
-
# cls # synonym for :clear_screen
|
|
69
|
-
# clear_line
|
|
70
|
-
# clr # synonym for :clear_line
|
|
71
|
-
# move
|
|
72
|
-
# up
|
|
73
|
-
# down
|
|
74
|
-
# left
|
|
75
|
-
# right
|
|
76
|
-
# display
|
|
77
|
-
#
|
|
78
|
-
# clear
|
|
79
|
-
# reset # synonym for :clear
|
|
80
|
-
# bold
|
|
81
|
-
# dark
|
|
82
|
-
# italic # not widely implemented
|
|
83
|
-
# underline
|
|
84
|
-
# underscore # synonym for :underline
|
|
85
|
-
# blink
|
|
86
|
-
# rapid_blink # not widely implemented
|
|
87
|
-
# negative # no reverse because of String#reverse
|
|
88
|
-
# concealed
|
|
89
|
-
# strikethrough # not widely implemented
|
|
90
|
-
#
|
|
91
|
-
# black
|
|
92
|
-
# red
|
|
93
|
-
# green
|
|
94
|
-
# yellow
|
|
95
|
-
# blue
|
|
96
|
-
# magenta
|
|
97
|
-
# cyan
|
|
98
|
-
# white
|
|
99
|
-
#
|
|
100
|
-
# on_black
|
|
101
|
-
# on_red
|
|
102
|
-
# on_green
|
|
103
|
-
# on_yellow
|
|
104
|
-
# on_blue
|
|
105
|
-
# on_magenta
|
|
106
|
-
# on_cyan
|
|
107
|
-
# on_white
|
|
108
|
-
#
|
|
109
|
-
# == Author(s)
|
|
110
|
-
#
|
|
111
|
-
# * Thomas Sawyer
|
|
112
|
-
# * Florian Frank
|
|
113
|
-
#
|
|
33
|
+
# Author:: Florian Frank, Thomas Sawyer
|
|
34
|
+
# Copyright:: Copyright (c) 2006 Florian Frank, Thomas Sawyer
|
|
35
|
+
# License:: Ruby License
|
|
36
|
+
|
|
37
|
+
# = Console ANSICode
|
|
114
38
|
#
|
|
39
|
+
# Module provide methods for inserting ansicodes into strings.
|
|
115
40
|
|
|
116
41
|
module Console
|
|
117
42
|
|
|
43
|
+
# = ANSICode
|
|
44
|
+
#
|
|
45
|
+
# Module which makes it very easy to use ANSI codes.
|
|
46
|
+
# These are esspecially nice for beautifying shell output.
|
|
47
|
+
#
|
|
48
|
+
# == Synopsis
|
|
49
|
+
#
|
|
50
|
+
# include Console::ANSICode
|
|
51
|
+
#
|
|
52
|
+
# p red, "Hello", blue, "World"
|
|
53
|
+
# => "\e[31mHello\e[34mWorld"
|
|
54
|
+
#
|
|
55
|
+
# p red { "Hello" } + blue { "World" }
|
|
56
|
+
# => "\e[31mHello\e[0m\e[34mWorld\e[0m"
|
|
57
|
+
#
|
|
58
|
+
# == Supported ANSI Commands
|
|
59
|
+
#
|
|
60
|
+
# save
|
|
61
|
+
# restore
|
|
62
|
+
# clear_screen
|
|
63
|
+
# cls # synonym for :clear_screen
|
|
64
|
+
# clear_line
|
|
65
|
+
# clr # synonym for :clear_line
|
|
66
|
+
# move
|
|
67
|
+
# up
|
|
68
|
+
# down
|
|
69
|
+
# left
|
|
70
|
+
# right
|
|
71
|
+
# display
|
|
72
|
+
#
|
|
73
|
+
# clear
|
|
74
|
+
# reset # synonym for :clear
|
|
75
|
+
# bold
|
|
76
|
+
# dark
|
|
77
|
+
# italic # not widely implemented
|
|
78
|
+
# underline
|
|
79
|
+
# underscore # synonym for :underline
|
|
80
|
+
# blink
|
|
81
|
+
# rapid_blink # not widely implemented
|
|
82
|
+
# negative # no reverse because of String#reverse
|
|
83
|
+
# concealed
|
|
84
|
+
# strikethrough # not widely implemented
|
|
85
|
+
#
|
|
86
|
+
# black
|
|
87
|
+
# red
|
|
88
|
+
# green
|
|
89
|
+
# yellow
|
|
90
|
+
# blue
|
|
91
|
+
# magenta
|
|
92
|
+
# cyan
|
|
93
|
+
# white
|
|
94
|
+
#
|
|
95
|
+
# on_black
|
|
96
|
+
# on_red
|
|
97
|
+
# on_green
|
|
98
|
+
# on_yellow
|
|
99
|
+
# on_blue
|
|
100
|
+
# on_magenta
|
|
101
|
+
# on_cyan
|
|
102
|
+
# on_white
|
|
103
|
+
#
|
|
104
|
+
|
|
118
105
|
module ANSICode
|
|
119
106
|
|
|
107
|
+
extend self
|
|
108
|
+
|
|
120
109
|
# Save current cursor positon.
|
|
121
110
|
|
|
122
111
|
def save
|
data/lib/facets/more/aspects.rb
CHANGED
|
@@ -1,6 +1,34 @@
|
|
|
1
|
+
# = aspects.rb
|
|
2
|
+
#
|
|
3
|
+
# == Copyright (c) 2005 George Moschovitis
|
|
4
|
+
#
|
|
5
|
+
# Ruby License
|
|
6
|
+
#
|
|
7
|
+
# This module is free software. You may use, modify, and/or redistribute this
|
|
8
|
+
# software under the same terms as Ruby.
|
|
9
|
+
#
|
|
10
|
+
# This program is distributed in the hope that it will be useful, but WITHOUT
|
|
11
|
+
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
12
|
+
# FOR A PARTICULAR PURPOSE.
|
|
13
|
+
#
|
|
14
|
+
# == Authors and Contributors
|
|
15
|
+
#
|
|
16
|
+
# * George Moschovitis
|
|
17
|
+
|
|
18
|
+
# Author:: George Moschovitis
|
|
19
|
+
# Copyright:: Copyright (c) 2005 George Moschovitis
|
|
20
|
+
# License:: Ruby License
|
|
21
|
+
|
|
1
22
|
require 'facet/inheritor'
|
|
2
23
|
|
|
24
|
+
# = Aspect
|
|
25
|
+
#
|
|
3
26
|
# An Aspect is a class that defines advices.
|
|
27
|
+
#
|
|
28
|
+
# == Usage
|
|
29
|
+
#
|
|
30
|
+
# George, please do!
|
|
31
|
+
#
|
|
4
32
|
|
|
5
33
|
class Aspect
|
|
6
34
|
class << self
|
|
@@ -1,47 +1,63 @@
|
|
|
1
|
-
|
|
2
|
-
# Association
|
|
1
|
+
# = association.rb
|
|
3
2
|
#
|
|
4
|
-
# Copyright (c) 2005
|
|
3
|
+
# == Copyright (c) 2005 Thomas Sawyer
|
|
5
4
|
#
|
|
6
|
-
#
|
|
5
|
+
# Ruby License
|
|
7
6
|
#
|
|
8
|
-
#
|
|
9
|
-
#
|
|
7
|
+
# This module is free software. You may use, modify, and/or redistribute this
|
|
8
|
+
# software under the same terms as Ruby.
|
|
10
9
|
#
|
|
11
|
-
#
|
|
12
|
-
#
|
|
13
|
-
#
|
|
10
|
+
# This program is distributed in the hope that it will be useful, but WITHOUT
|
|
11
|
+
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
12
|
+
# FOR A PARTICULAR PURPOSE.
|
|
14
13
|
#
|
|
15
|
-
#
|
|
16
|
-
#
|
|
17
|
-
#
|
|
18
|
-
# 2005-10-25 Trans * Initial Release
|
|
19
|
-
# ==========================================================================
|
|
20
|
-
#++
|
|
14
|
+
# == Authors and Contributors
|
|
15
|
+
#
|
|
16
|
+
# * Thomas Sawyer
|
|
21
17
|
|
|
22
|
-
|
|
18
|
+
# Author:: Thomas Sawyer
|
|
19
|
+
# Copyright:: Copyright (c) 2005 Thomas Sawyer
|
|
20
|
+
# License:: Ruby License
|
|
21
|
+
|
|
22
|
+
# = Association
|
|
23
23
|
#
|
|
24
|
-
# Gerenal binary association
|
|
25
|
-
#
|
|
24
|
+
# Gerenal binary association allows one object to be
|
|
25
|
+
# associated with another. It has a variety of uses,
|
|
26
|
+
# link-lists, simple ordered maps and mixed collections,
|
|
27
|
+
# among them.
|
|
26
28
|
#
|
|
27
|
-
#
|
|
28
|
-
# method, but wehere is has been used prior a suitable alias has been
|
|
29
|
-
# made, #rshift. For Date class it has ben named #months_later.
|
|
29
|
+
# == Usage
|
|
30
30
|
#
|
|
31
|
-
#
|
|
31
|
+
# Associations can be used to draw simple relationships.
|
|
32
32
|
#
|
|
33
|
-
#
|
|
33
|
+
# :Apple >> :Fruit
|
|
34
|
+
# :Apple >> :Red
|
|
35
|
+
#
|
|
36
|
+
# :Apple.associations #=> [ :Fruit, :Red ]
|
|
37
|
+
#
|
|
38
|
+
# It can also be used for simple lists of ordered pairs.
|
|
34
39
|
#
|
|
40
|
+
# c = [ :a >> 1, :b >> 2 ]
|
|
35
41
|
# c.each { |k,v| puts "#{k} associated with #{v} }
|
|
36
42
|
#
|
|
37
|
-
#
|
|
43
|
+
# produces
|
|
38
44
|
#
|
|
39
45
|
# a associated with 1
|
|
40
46
|
# b associated with 2
|
|
41
47
|
#
|
|
42
|
-
# ==
|
|
48
|
+
# == Limitations
|
|
43
49
|
#
|
|
44
|
-
#
|
|
50
|
+
# The method :>> is used to construct the association.
|
|
51
|
+
# It is a rarely used method so it is generally available.
|
|
52
|
+
# But you can't use an Association while extending the
|
|
53
|
+
# any of the following classes becuase they use #>> for
|
|
54
|
+
# other things.
|
|
55
|
+
#
|
|
56
|
+
# Bignum
|
|
57
|
+
# Fixnum
|
|
58
|
+
# Date
|
|
59
|
+
# IPAddr
|
|
60
|
+
# Process::Status
|
|
45
61
|
#
|
|
46
62
|
|
|
47
63
|
class Association
|
|
@@ -85,42 +101,62 @@ class Association
|
|
|
85
101
|
|
|
86
102
|
end
|
|
87
103
|
|
|
88
|
-
# Setup the >> method, aliasing where already used.
|
|
89
104
|
|
|
90
|
-
|
|
91
|
-
alias_method( :rshift, :>>) if method_defined?(:>>)
|
|
92
|
-
end
|
|
105
|
+
module Kernel
|
|
93
106
|
|
|
94
|
-
|
|
95
|
-
alias_method( :rshift, :>>) if method_defined?(:>>)
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
class Date
|
|
99
|
-
alias_method( :months_later, :>>) if method_defined?(:>>)
|
|
100
|
-
end
|
|
107
|
+
ASSOCIATIONS = Hash.new{ |h,k,v| h[k]=[] }
|
|
101
108
|
|
|
102
|
-
|
|
103
|
-
alias_method( :rshift, :>>) if method_defined?(:>>)
|
|
104
|
-
end
|
|
105
|
-
|
|
106
|
-
class Process::Status
|
|
107
|
-
alias_method( :rshift, :>>) if method_defined?(:>>)
|
|
108
|
-
end
|
|
109
|
-
|
|
110
|
-
class Object
|
|
109
|
+
# Define an association with +self+.
|
|
111
110
|
def >>(to)
|
|
111
|
+
ASSOCIATIONS[self] << to
|
|
112
112
|
Association.new(self, to)
|
|
113
113
|
end
|
|
114
|
+
|
|
115
|
+
def associations
|
|
116
|
+
ASSOCIATIONS[self]
|
|
117
|
+
end
|
|
118
|
+
|
|
114
119
|
end
|
|
115
120
|
|
|
116
121
|
|
|
122
|
+
#--
|
|
123
|
+
# Setup the >> method in classes that use it already.
|
|
124
|
+
#
|
|
125
|
+
# This is a bad idea b/c it can cause backward compability issues.
|
|
126
|
+
#
|
|
127
|
+
# class Bignum
|
|
128
|
+
# alias_method( :rshift, :>>) if method_defined?(:>>)
|
|
129
|
+
# remove_method :>>
|
|
130
|
+
# end
|
|
131
|
+
#
|
|
132
|
+
# class Fixnum
|
|
133
|
+
# alias_method( :rshift, :>>) if method_defined?(:>>)
|
|
134
|
+
# remove_method :>>
|
|
135
|
+
# end
|
|
136
|
+
#
|
|
137
|
+
# class Date
|
|
138
|
+
# alias_method( :months_later, :>>) if method_defined?(:>>)
|
|
139
|
+
# remove_method :>>
|
|
140
|
+
# end
|
|
141
|
+
#
|
|
142
|
+
# class IPAddr
|
|
143
|
+
# alias_method( :rshift, :>>) if method_defined?(:>>)
|
|
144
|
+
# remove_method :>>
|
|
145
|
+
# end
|
|
146
|
+
#
|
|
147
|
+
# class Process::Status
|
|
148
|
+
# alias_method( :rshift, :>>) if method_defined?(:>>)
|
|
149
|
+
# remove_method :>>
|
|
150
|
+
# end
|
|
151
|
+
#++
|
|
152
|
+
|
|
153
|
+
|
|
117
154
|
# _____ _
|
|
118
155
|
# |_ _|__ ___| |_
|
|
119
156
|
# | |/ _ \/ __| __|
|
|
120
157
|
# | | __/\__ \ |_
|
|
121
158
|
# |_|\___||___/\__|
|
|
122
159
|
#
|
|
123
|
-
|
|
124
160
|
=begin test
|
|
125
161
|
|
|
126
162
|
require 'test/unit'
|
|
@@ -151,6 +187,11 @@ end
|
|
|
151
187
|
assert_equal( 'Drop Menu', complex[0].index )
|
|
152
188
|
end
|
|
153
189
|
|
|
190
|
+
def test_associations
|
|
191
|
+
complex = [ :a >> :b, :a >> :c ]
|
|
192
|
+
assert_equal( [ :b, :c ], :a.associations )
|
|
193
|
+
end
|
|
194
|
+
|
|
154
195
|
end
|
|
155
196
|
|
|
156
197
|
=end
|
|
@@ -1,41 +1,38 @@
|
|
|
1
|
-
|
|
2
|
-
# BasicObject
|
|
1
|
+
# = basicobject.rb
|
|
3
2
|
#
|
|
4
|
-
# Copyright (c) 2005 Thomas Sawyer
|
|
5
|
-
# based on BlankSlate, Copyright (c) 2004 by Jim Weirich
|
|
3
|
+
# == Copyright (c) 2005 Thomas Sawyer, Jim Weirich
|
|
6
4
|
#
|
|
7
|
-
#
|
|
5
|
+
# Ruby License
|
|
8
6
|
#
|
|
9
|
-
#
|
|
10
|
-
#
|
|
7
|
+
# This module is free software. You may use, modify, and/or redistribute this
|
|
8
|
+
# software under the same terms as Ruby.
|
|
11
9
|
#
|
|
12
|
-
#
|
|
13
|
-
#
|
|
14
|
-
#
|
|
10
|
+
# This program is distributed in the hope that it will be useful, but WITHOUT
|
|
11
|
+
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
12
|
+
# FOR A PARTICULAR PURPOSE.
|
|
15
13
|
#
|
|
16
|
-
#
|
|
17
|
-
# Revision History
|
|
18
|
-
# ==========================================================================
|
|
19
|
-
# 2006.04.03 trans
|
|
20
|
-
# * Got rid of ^object_ exclusion.
|
|
14
|
+
# == Authors and Contributors
|
|
21
15
|
#
|
|
22
|
-
#
|
|
23
|
-
#
|
|
24
|
-
# object_id.
|
|
25
|
-
# * Changed name from BlankSlate to BasicObject
|
|
16
|
+
# * Jim Weirich
|
|
17
|
+
# * Thomas Sawyer
|
|
26
18
|
#
|
|
27
|
-
#
|
|
28
|
-
# * Ported from BlankSlate and added __class__.
|
|
29
|
-
# ==========================================================================
|
|
19
|
+
# == Special Thanks
|
|
30
20
|
#
|
|
31
|
-
#
|
|
32
|
-
#
|
|
21
|
+
# Thanks to Jim Weirich for BlankSlate Copyright (c) 2004 by Jim Weirich,
|
|
22
|
+
# on which BasicObject is based.
|
|
33
23
|
#
|
|
34
|
-
|
|
24
|
+
# == Developer Notes
|
|
25
|
+
#
|
|
26
|
+
# TODO Might be nice it there were a factory method to alter which methods
|
|
27
|
+
# were excluded. But probably too dangerous.
|
|
28
|
+
|
|
29
|
+
# Author:: Thomas Sawyer, Jim Weirich
|
|
30
|
+
# Copyright:: Copyright (c) 2005 Thomas Sawyer
|
|
31
|
+
# License:: Ruby License
|
|
35
32
|
|
|
36
33
|
require 'facets/core/kernel/__class__'
|
|
37
34
|
|
|
38
|
-
#
|
|
35
|
+
# = BasicObject
|
|
39
36
|
#
|
|
40
37
|
# BasicObject provides an abstract base class with no predefined
|
|
41
38
|
# methods, except for <tt>respond_to?</tt>, any method starting in
|
|
@@ -75,24 +72,45 @@ class BasicObject
|
|
|
75
72
|
# method to the current object for the current call.
|
|
76
73
|
|
|
77
74
|
class Self < self
|
|
75
|
+
def initialize( as=Object )
|
|
76
|
+
@as = as
|
|
77
|
+
end
|
|
78
78
|
def method_missing(meth, *args, &blk)
|
|
79
|
-
|
|
79
|
+
@as.instance_method(meth).bind(self).call(*args, &blk)
|
|
80
80
|
end
|
|
81
81
|
end
|
|
82
82
|
|
|
83
83
|
# Returns the Self functor class, which can then be used to
|
|
84
84
|
# call Kernel/Object methods on the current object.
|
|
85
|
-
|
|
86
|
-
|
|
85
|
+
#--
|
|
86
|
+
# May deprecate __self__ altogether.
|
|
87
|
+
#++
|
|
88
|
+
def object
|
|
87
89
|
@__self__ ||= Self.new
|
|
88
90
|
end
|
|
91
|
+
alias_method :__object__, :object
|
|
92
|
+
alias_method :__self__, :object
|
|
93
|
+
|
|
94
|
+
# This method is like #object, but allows any ancestor
|
|
95
|
+
# to act on behalf of self, not just Object.
|
|
96
|
+
def as(ancestor)
|
|
97
|
+
Self.new(ancestor)
|
|
98
|
+
end
|
|
89
99
|
|
|
90
|
-
#
|
|
100
|
+
# Shadow some other important methods.
|
|
91
101
|
alias_method :__method__, :method
|
|
92
102
|
|
|
93
|
-
# Methods not to get rid of
|
|
94
|
-
#
|
|
95
|
-
|
|
103
|
+
# Methods not to get rid of as they are either too important, or
|
|
104
|
+
# they are not likely to get in the way (such as methods ending in '?').
|
|
105
|
+
#--
|
|
106
|
+
# TODO In the furture it might be nice to allow some selectability
|
|
107
|
+
# in these via a factory method.
|
|
108
|
+
#
|
|
109
|
+
# NOTE The absolute bare minimum is EXCLUDE = /^(__|instance_eval$)/.
|
|
110
|
+
# But in most cases you'll want a few extra methods like #dup too.
|
|
111
|
+
#++
|
|
112
|
+
|
|
113
|
+
EXCLUDE = /(^__|^instance|^object|^initialize$|^initialize_copy$|^null$|^inspect$|^dup$|^clone$|^as$|\?$)/
|
|
96
114
|
|
|
97
115
|
def self.hide(name)
|
|
98
116
|
#if instance_methods.include?(name.to_s) and name !~ EXCLUDE #/^(#{EXCLUDE.join('|')})/
|