facets 1.2.1 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/ProjectInfo +32 -25
- data/data/facets/index.yml +30 -6
- data/data/facets/units/binary/base.yaml +12 -0
- data/data/facets/units/binary/extra.yaml +8 -0
- data/data/facets/units/cex.yaml +7 -0
- data/data/facets/units/currency/base.yaml +268 -0
- data/data/facets/units/default.yaml +22 -0
- data/data/facets/units/dump_yaml.rb +309 -0
- data/data/facets/units/si/base.yaml +36 -0
- data/data/facets/units/si/derived.yaml +133 -0
- data/data/facets/units/si/extra.yaml +107 -0
- data/data/facets/units/standard.yaml +5 -0
- data/data/facets/units/uk.yaml +16 -0
- data/data/facets/units/uk/base.yaml +107 -0
- data/data/facets/units/us.yaml +16 -0
- data/data/facets/units/us/base.yaml +112 -0
- data/data/facets/units/xmethods/cached.yaml +83 -0
- data/data/facets/units/xmethods/mapping.yaml +85 -0
- data/lib/facet/array/join_sentence.rb +1 -0
- data/lib/facet/class/cattr.rb +1 -0
- data/lib/facet/class/cattr_accessor.rb +1 -0
- data/lib/facet/class/cattr_reader.rb +1 -0
- data/lib/facet/class/cattr_writer.rb +1 -0
- data/lib/facet/elementor.rb +1 -0
- data/lib/facet/enumerable/accumulate.rb +1 -0
- data/lib/facet/enumerable/collect_if.rb +1 -0
- data/lib/facet/enumerable/map_if.rb +1 -0
- data/lib/facet/file/self/append.rb +1 -0
- data/lib/facet/file/self/read_binary.rb +1 -0
- data/lib/facet/file/self/write.rb +1 -0
- data/lib/facet/json.rb +1 -0
- data/lib/facet/kernel/__self__.rb +1 -0
- data/lib/facet/kernel/methodname.rb +1 -0
- data/lib/facet/module/attr_query.rb +1 -0
- data/lib/facet/module/attr_validator.rb +1 -0
- data/lib/facet/module/inherit.rb +1 -0
- data/lib/facet/module/let.rb +1 -0
- data/lib/facet/module/mattr.rb +1 -0
- data/lib/facet/module/mattr_accessor.rb +1 -0
- data/lib/facet/module/mattr_reader.rb +1 -0
- data/lib/facet/module/mattr_writer.rb +1 -0
- data/lib/facet/module/singleton_to_module.rb +1 -0
- data/lib/facet/nilclass/op_cmp.rb +1 -0
- data/lib/facet/nilclass/succ.rb +1 -0
- data/lib/facet/recorder.rb +1 -0
- data/lib/facet/xoxo.rb +1 -0
- data/lib/facets/core/array.rb +1 -0
- data/lib/facets/core/array/join_sentence.rb +12 -0
- data/lib/facets/core/class.rb +4 -0
- data/lib/facets/core/{module → class}/cattr.rb +7 -9
- data/lib/facets/core/class/cattr_accessor.rb +2 -0
- data/lib/facets/core/class/cattr_reader.rb +3 -0
- data/lib/facets/core/class/cattr_writer.rb +2 -0
- data/lib/facets/core/dir/self/ls_r.rb +4 -9
- data/lib/facets/core/enumerable.rb +3 -0
- data/lib/facets/core/enumerable/accumulate.rb +25 -0
- data/lib/facets/core/enumerable/collect_if.rb +15 -0
- data/lib/facets/core/enumerable/ew.rb +1 -5
- data/lib/facets/core/enumerable/map_if.rb +3 -0
- data/lib/facets/core/file.rb +3 -0
- data/lib/facets/core/file/self/append.rb +8 -0
- data/lib/facets/core/file/self/create.rb +14 -8
- data/lib/facets/core/file/self/open_as_string.rb +31 -13
- data/lib/facets/core/file/self/read_binary.rb +8 -0
- data/lib/facets/core/file/self/read_list.rb +11 -7
- data/lib/facets/core/file/self/write.rb +8 -0
- data/lib/facets/core/fileutils/wc.rb +4 -9
- data/lib/facets/core/fileutils/which.rb +4 -9
- data/lib/facets/core/kernel.rb +2 -1
- data/lib/facets/core/kernel/__self__.rb +32 -0
- data/lib/facets/core/kernel/as.rb +1 -1
- data/lib/facets/core/kernel/assign_from.rb +3 -3
- data/lib/facets/core/kernel/assign_with.rb +2 -0
- data/lib/facets/core/kernel/me.rb +3 -2
- data/lib/facets/core/kernel/method_name.rb +2 -49
- data/lib/facets/core/kernel/methodname.rb +49 -0
- data/lib/facets/core/module.rb +9 -4
- data/lib/facets/core/module/attr_query.rb +56 -0
- data/lib/facets/core/module/attr_validator.rb +18 -0
- data/lib/facets/core/module/inherit.rb +70 -0
- data/lib/facets/core/module/integrate.rb +1 -1
- data/lib/facets/core/module/let.rb +55 -0
- data/lib/facets/core/module/mattr.rb +180 -0
- data/lib/facets/core/module/{cattr_accessor.rb → mattr_accessor.rb} +0 -0
- data/lib/facets/core/module/{cattr_reader.rb → mattr_reader.rb} +0 -0
- data/lib/facets/core/module/{cattr_writer.rb → mattr_writer.rb} +0 -0
- data/lib/facets/core/module/on_included.rb +3 -1
- data/lib/facets/core/module/singleton_to_module.rb +23 -0
- data/lib/facets/core/nilclass.rb +2 -0
- data/lib/facets/core/string/methodize.rb +4 -3
- data/lib/facets/core/string/modulize.rb +3 -3
- data/lib/facets/more/ansicode.rb +1 -1
- data/lib/facets/more/aspects.rb +1 -1
- data/lib/facets/more/basicobject.rb +67 -22
- data/lib/facets/more/classinherit.rb +2 -2
- data/lib/facets/more/cloneable.rb +1 -1
- data/lib/facets/more/consoleapp.rb +31 -20
- data/lib/facets/more/dictionary.rb +1 -1
- data/lib/facets/more/filelist.rb +2 -10
- data/lib/facets/more/functor.rb +6 -6
- data/lib/facets/more/json.rb +891 -0
- data/lib/facets/more/methodprobe.rb +1 -1
- data/lib/facets/more/multiton.rb +16 -8
- data/lib/facets/more/nilcomparable.rb +31 -49
- data/lib/facets/more/openobject.rb +50 -10
- data/lib/facets/more/recorder.rb +125 -0
- data/lib/facets/more/rtals.rb +199 -4
- data/lib/facets/more/typecast.rb +12 -12
- data/lib/facets/more/units.rb +20 -14
- data/lib/facets/more/xoxo.rb +519 -0
- data/setup.rb +283 -271
- 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_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_slap.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/{module/test_cattr_accessor.rb → class/test_cattr.rb} +11 -3
- 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_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 +14 -9
- data/test/lib/facets/core/file/self/test_open_as_string.rb +21 -11
- data/test/lib/facets/core/file/self/test_read_list.rb +11 -8
- 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_method_name.rb → test_methodname.rb} +3 -3
- 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 +1 -1
- 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 +58 -0
- 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_let.rb +31 -0
- data/test/lib/facets/core/module/test_mattr.rb +71 -0
- 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_on_included.rb +36 -0
- 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_undef.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_to_f.rb → test_blank.rb} +5 -5
- 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/{float → numeric}/test_approx.rb +4 -3
- 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_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_slap.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_arr.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_annotation.rb +1 -1
- data/test/lib/facets/more/test_ansicode.rb +1 -1
- data/test/lib/facets/more/test_association.rb +1 -1
- data/test/lib/facets/more/test_basicobject.rb +58 -0
- data/test/lib/facets/more/test_bbcode.rb +1 -1
- 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 +48 -0
- 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_inheritor.rb +1 -1
- data/test/lib/facets/more/test_interval.rb +1 -1
- data/test/lib/facets/more/test_json.rb +232 -0
- 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 +6 -2
- data/test/lib/facets/more/test_openobject.rb +1 -1
- 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_preinitialize.rb +1 -1
- data/test/lib/facets/more/test_promoteself.rb +1 -1
- data/test/lib/facets/more/test_recorder.rb +44 -0
- data/test/lib/facets/more/test_snapshot.rb +1 -1
- data/test/lib/facets/more/test_statichash.rb +1 -1
- 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_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 +2 -2
- data/test/lib/facets/more/test_uninheritable.rb +1 -1
- data/test/lib/facets/more/test_units.rb +16 -10
- data/test/lib/facets/more/test_xoxo.rb +288 -0
- data/test/lib/facets/more/test_yamlstruct.rb +1 -1
- metadata +92 -25
- data/lib/facet/kernel/instance.rb +0 -1
- data/lib/facet/module/cattr.rb +0 -1
- data/lib/facet/module/cattr_accessor.rb +0 -1
- data/lib/facet/module/cattr_reader.rb +0 -1
- data/lib/facet/module/cattr_writer.rb +0 -1
- data/lib/facets/core/kernel/instance.rb +0 -29
- data/test/FIXTURE/create_file +0 -1
- data/test/FIXTURE/open_as_string_file +0 -1
- data/test/FIXTURE/read_list_file +0 -6
- data/test/lib/facets/core/dir/self/test_ls_r.rb +0 -52
- data/test/lib/facets/core/fileutils/test_wc.rb +0 -68
- data/test/lib/facets/core/fileutils/test_which.rb +0 -61
- data/test/testdir.rb +0 -8
@@ -0,0 +1,85 @@
|
|
1
|
+
---
|
2
|
+
:base: ron
|
3
|
+
:mapping:
|
4
|
+
chf: switzerland
|
5
|
+
fim: finland
|
6
|
+
pln: poland
|
7
|
+
bbd: barbados
|
8
|
+
dem: germany
|
9
|
+
usd: united states
|
10
|
+
sit: slovenia
|
11
|
+
krw: korea
|
12
|
+
idr: indonesia
|
13
|
+
mad: morocco
|
14
|
+
qar: qatar
|
15
|
+
all: albania
|
16
|
+
nok: norway
|
17
|
+
jpy: japan
|
18
|
+
lbp: lebanon
|
19
|
+
bmd: bermuda
|
20
|
+
egp: egypt
|
21
|
+
myr: malaysia
|
22
|
+
sar: saudi arabia
|
23
|
+
php: philippines
|
24
|
+
sgd: singapore
|
25
|
+
hrk: croatia
|
26
|
+
ats: austria
|
27
|
+
mur: mauritius
|
28
|
+
ars: argentina
|
29
|
+
itl: italy
|
30
|
+
pte: portugal
|
31
|
+
veb: venezuela
|
32
|
+
aed: united arib emirates
|
33
|
+
huf: hungary
|
34
|
+
kwd: kuwait
|
35
|
+
iep: ireland
|
36
|
+
clp: chile
|
37
|
+
dzd: algeria
|
38
|
+
ttd: trinidad
|
39
|
+
lkr: sri lanka
|
40
|
+
crc: costa rica
|
41
|
+
jod: jordan
|
42
|
+
nlg: netherlands
|
43
|
+
skk: slovakia
|
44
|
+
ron: romania
|
45
|
+
mtl: malta
|
46
|
+
cyp: cyprus
|
47
|
+
bef: belgium
|
48
|
+
mxn: mexico
|
49
|
+
zar: south africa
|
50
|
+
luf: luxembourg
|
51
|
+
cad: canada
|
52
|
+
hkd: hong kong
|
53
|
+
tnd: tunisia
|
54
|
+
omr: oman
|
55
|
+
xcd: east caribbean
|
56
|
+
jmd: jamaica
|
57
|
+
thb: thailand
|
58
|
+
sek: sweden
|
59
|
+
rub: russia
|
60
|
+
kes: kenya
|
61
|
+
pen: peru
|
62
|
+
vnd: vietnam
|
63
|
+
czk: czech republic
|
64
|
+
dkk: denmark
|
65
|
+
pkr: pakistan
|
66
|
+
bhd: bahrain
|
67
|
+
bdt: bangladesh
|
68
|
+
grd: greece
|
69
|
+
inr: india
|
70
|
+
isk: iceland
|
71
|
+
zmk: zambia
|
72
|
+
sdd: sudan
|
73
|
+
esp: spain
|
74
|
+
cop: colombia
|
75
|
+
frf: france
|
76
|
+
cny: china
|
77
|
+
gbp: united kingdom
|
78
|
+
twd: taiwan
|
79
|
+
aud: australia
|
80
|
+
dop: dominican republic
|
81
|
+
ils: israel
|
82
|
+
eur: euro
|
83
|
+
brl: brazil
|
84
|
+
nzd: new zealand
|
85
|
+
eek: estonia
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'facets/core/array/join_sentence.rb'
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'facets/core/class/cattr.rb'
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'facets/core/class/cattr_accessor.rb'
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'facets/core/class/cattr_reader.rb'
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'facets/core/class/cattr_writer.rb'
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'facets/more/elementor.rb'
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'facets/core/enumerable/accumulate.rb'
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'facets/core/enumerable/collect_if.rb'
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'facets/core/enumerable/map_if.rb'
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'facets/core/file/self/append.rb'
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'facets/core/file/self/read_binary.rb'
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'facets/core/file/self/write.rb'
|
data/lib/facet/json.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'facets/more/json.rb'
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'facets/core/kernel/__self__.rb'
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'facets/core/kernel/methodname.rb'
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'facets/core/module/attr_query.rb'
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'facets/core/module/attr_validator.rb'
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'facets/core/module/inherit.rb'
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'facets/core/module/let.rb'
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'facets/core/module/mattr.rb'
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'facets/core/module/mattr_accessor.rb'
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'facets/core/module/mattr_reader.rb'
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'facets/core/module/mattr_writer.rb'
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'facets/core/module/singleton_to_module.rb'
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'facets/core/nilclass/op_cmp.rb'
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'facets/core/nilclass/succ.rb'
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'facets/more/recorder.rb'
|
data/lib/facet/xoxo.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'facets/more/xoxo.rb'
|
data/lib/facets/core/array.rb
CHANGED
@@ -7,6 +7,7 @@ require 'facets/core/array/each_with_key'
|
|
7
7
|
require 'facets/core/array/first'
|
8
8
|
require 'facets/core/array/foot'
|
9
9
|
require 'facets/core/array/head'
|
10
|
+
require 'facets/core/array/join_sentence'
|
10
11
|
require 'facets/core/array/last'
|
11
12
|
require 'facets/core/array/last_index'
|
12
13
|
require 'facets/core/array/merge'
|
data/lib/facets/core/class.rb
CHANGED
@@ -1,4 +1,8 @@
|
|
1
1
|
require 'facets/core/class/by_name'
|
2
|
+
require 'facets/core/class/cattr'
|
3
|
+
require 'facets/core/class/cattr_accessor'
|
4
|
+
require 'facets/core/class/cattr_reader'
|
5
|
+
require 'facets/core/class/cattr_writer'
|
2
6
|
require 'facets/core/class/descendents'
|
3
7
|
require 'facets/core/class/method_name'
|
4
8
|
require 'facets/core/class/remove_descendents'
|
@@ -6,6 +6,13 @@ class Module
|
|
6
6
|
|
7
7
|
# Creates a class-variable attribute that can
|
8
8
|
# be accessed both on an instance and class level.
|
9
|
+
#
|
10
|
+
# NOTE mattr used to be an alias for cattr,
|
11
|
+
# and likewise for the other cattr methods.
|
12
|
+
# These aliases have been deprecated in favor of
|
13
|
+
# new module/mattr methods that use class-level
|
14
|
+
# instance variables instead of class variables.
|
15
|
+
# The mattr methods are more versitile.
|
9
16
|
|
10
17
|
def cattr( *syms )
|
11
18
|
writer = false
|
@@ -26,8 +33,6 @@ class Module
|
|
26
33
|
end
|
27
34
|
end
|
28
35
|
|
29
|
-
alias_method :mattr, :cattr
|
30
|
-
|
31
36
|
# Creates a class-variable attr_reader that can
|
32
37
|
# be accessed both on an instance and class level.
|
33
38
|
#
|
@@ -43,7 +48,6 @@ class Module
|
|
43
48
|
hsyms = ( syms.last.is_a?(Hash) ? syms.pop : {} )
|
44
49
|
hsyms.update( Hash[*(syms.zip([nil]*syms.size).flatten)] )
|
45
50
|
hsyms.each_pair do |sym, val|
|
46
|
-
p sym, val
|
47
51
|
class_eval <<-EOS
|
48
52
|
if ! defined? @@#{sym}
|
49
53
|
@@#{sym} = val
|
@@ -59,8 +63,6 @@ p sym, val
|
|
59
63
|
return hsyms.keys
|
60
64
|
end
|
61
65
|
|
62
|
-
alias_method :mattr_reader, :cattr_reader
|
63
|
-
|
64
66
|
# Creates a class-variable attr_writer that can
|
65
67
|
# be accessed both on an instance and class level.
|
66
68
|
#
|
@@ -95,8 +97,6 @@ p sym, val
|
|
95
97
|
return hsyms.keys
|
96
98
|
end
|
97
99
|
|
98
|
-
alias_method :mattr_writer, :cattr_writer
|
99
|
-
|
100
100
|
# Creates a class-variable attr_accessor that can
|
101
101
|
# be accessed both on an instance and class level.
|
102
102
|
#
|
@@ -116,8 +116,6 @@ p sym, val
|
|
116
116
|
m
|
117
117
|
end
|
118
118
|
|
119
|
-
alias_method :mattr_accessor, :cattr_accessor
|
120
|
-
|
121
119
|
end
|
122
120
|
|
123
121
|
|
@@ -35,17 +35,12 @@ end
|
|
35
35
|
# | | __/\__ \ |_
|
36
36
|
# |_|\___||___/\__|
|
37
37
|
#
|
38
|
-
=begin test
|
39
38
|
|
40
|
-
|
39
|
+
# TODO This test needs good Dir mockup.
|
41
40
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
f = (paths.slice(0..i)+['test']).join('/')
|
46
|
-
$TESTDIR = File.join(f,'FIXTURE') if File.directory?(f)
|
47
|
-
end
|
48
|
-
raise unless $TESTDIR
|
41
|
+
=begin #no test yet
|
42
|
+
|
43
|
+
require 'test/unit'
|
49
44
|
|
50
45
|
class TCDir < Test::Unit::TestCase
|
51
46
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'facets/core/enumerable/accumulate'
|
2
|
+
require 'facets/core/enumerable/collect_if'
|
1
3
|
require 'facets/core/enumerable/collect_with_counter'
|
2
4
|
require 'facets/core/enumerable/collect_with_index'
|
3
5
|
require 'facets/core/enumerable/commonality'
|
@@ -21,6 +23,7 @@ require 'facets/core/enumerable/find_collisions'
|
|
21
23
|
require 'facets/core/enumerable/frequency'
|
22
24
|
require 'facets/core/enumerable/graph'
|
23
25
|
require 'facets/core/enumerable/ideal_entropy'
|
26
|
+
require 'facets/core/enumerable/map_if'
|
24
27
|
require 'facets/core/enumerable/map_with_counter'
|
25
28
|
require 'facets/core/enumerable/map_with_index'
|
26
29
|
require 'facets/core/enumerable/none'
|
@@ -0,0 +1,25 @@
|
|
1
|
+
#--
|
2
|
+
# * George Moschovitis <gm@navel.gr>
|
3
|
+
#++
|
4
|
+
|
5
|
+
require 'facets/more/functor'
|
6
|
+
|
7
|
+
module Enumerable
|
8
|
+
|
9
|
+
# Project has_many Group
|
10
|
+
# Group has_many User
|
11
|
+
# projects.groups.accumulate.users
|
12
|
+
#--
|
13
|
+
# gmosx: any idea for a better name?
|
14
|
+
#++
|
15
|
+
|
16
|
+
def accumulate
|
17
|
+
Functor.new do |op, *args|
|
18
|
+
self.inject([]) { |a, x| a << x.send(op, *args) }.flatten
|
19
|
+
end
|
20
|
+
end
|
21
|
+
#alias_method :acc, :accumulate
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
|
data/lib/facets/core/file.rb
CHANGED
@@ -1,5 +1,8 @@
|
|
1
|
+
require 'facets/core/file/self/append'
|
1
2
|
require 'facets/core/file/self/create'
|
2
3
|
require 'facets/core/file/self/open_as_string'
|
4
|
+
require 'facets/core/file/self/read_binary'
|
3
5
|
require 'facets/core/file/self/read_list'
|
4
6
|
require 'facets/core/file/self/sanitize'
|
5
7
|
require 'facets/core/file/self/split_all'
|
8
|
+
require 'facets/core/file/self/write'
|
@@ -28,21 +28,26 @@ end
|
|
28
28
|
|
29
29
|
require 'test/unit'
|
30
30
|
|
31
|
-
#
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
31
|
+
# mock file
|
32
|
+
|
33
|
+
class File
|
34
|
+
def self.open( fname, mode, &blk )
|
35
|
+
blk.call( self )
|
36
|
+
end
|
37
|
+
def self.read( fname )
|
38
|
+
@mock_content
|
39
|
+
end
|
40
|
+
def self.<<( str )
|
41
|
+
(@mock_content ||="") << str
|
42
|
+
end
|
36
43
|
end
|
37
|
-
raise unless $TESTDIR
|
38
44
|
|
39
45
|
class TC_CREATE < Test::Unit::TestCase
|
40
46
|
|
41
47
|
def test_create
|
42
|
-
f =
|
48
|
+
f = "not a reasl file"
|
43
49
|
t = 'This is a test'
|
44
50
|
File.create( f, t )
|
45
|
-
assert( File.exists?( f ) )
|
46
51
|
s = File.read( f )
|
47
52
|
assert_equal( t, s )
|
48
53
|
end
|
@@ -50,3 +55,4 @@ end
|
|
50
55
|
end
|
51
56
|
|
52
57
|
=end
|
58
|
+
|
@@ -12,14 +12,21 @@
|
|
12
12
|
# binary mode (no mapping of the plattform's newlines to "\n" is
|
13
13
|
# done) or to append to it.
|
14
14
|
#
|
15
|
-
# Usage
|
15
|
+
# == Usage
|
16
|
+
#
|
16
17
|
# # Reverse contents of "message"
|
17
18
|
# File.open_as_string("message") { |str| str.reverse! }
|
18
19
|
#
|
19
20
|
# # Replace "foo" by "bar" in "binary"
|
20
21
|
# File.open_as_string("binary", "b") { |str| str.gsub!("foo", "bar") }
|
21
22
|
#
|
23
|
+
#--
|
24
|
+
# TODO Should it be in-place modification like this? Or would it be better
|
25
|
+
# if whatever the block returns is written to the file instead?
|
26
|
+
#++
|
27
|
+
|
22
28
|
def File.open_as_string(name, mode = "")
|
29
|
+
|
23
30
|
unless block_given?
|
24
31
|
raise(ArgumentError, "Need to supply block to File.open_as_string")
|
25
32
|
end
|
@@ -32,16 +39,17 @@ def File.open_as_string(name, mode = "")
|
|
32
39
|
mode.delete!("^b+")
|
33
40
|
end
|
34
41
|
|
35
|
-
str = File.open(name, "r#{mode}") { |file| file.read } rescue ""
|
42
|
+
str = File.open(name, "r#{mode}") { |file| file.read } #rescue ""
|
36
43
|
old_str = str.clone
|
37
44
|
|
38
45
|
begin
|
39
46
|
yield str
|
40
47
|
ensure
|
41
|
-
if
|
48
|
+
if old_str != str then
|
42
49
|
File.open(name, "w#{mode}") { |file| file.write(str) }
|
43
50
|
end
|
44
51
|
end
|
52
|
+
|
45
53
|
end
|
46
54
|
|
47
55
|
|
@@ -56,23 +64,33 @@ end
|
|
56
64
|
|
57
65
|
require 'test/unit'
|
58
66
|
|
59
|
-
#
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
67
|
+
# mock File class
|
68
|
+
|
69
|
+
class File
|
70
|
+
def self.mock_content( content )
|
71
|
+
@mock_content = content
|
72
|
+
end
|
73
|
+
|
74
|
+
def self.open( name, mode, &blk )
|
75
|
+
blk.call( self )
|
76
|
+
end
|
77
|
+
def self.read( fname=nil )
|
78
|
+
@mock_content.clone
|
79
|
+
end
|
80
|
+
def self.write( str )
|
81
|
+
@mock_content = str
|
82
|
+
end
|
64
83
|
end
|
65
|
-
|
84
|
+
|
66
85
|
|
67
86
|
class TC_OPEN_AS_STRING < Test::Unit::TestCase
|
68
87
|
|
69
88
|
def test_open_as_string
|
70
|
-
f =
|
89
|
+
f = "not a real file"
|
71
90
|
t = 'This is a test'
|
72
|
-
File.
|
73
|
-
assert( File.exists?( f ) )
|
91
|
+
File.mock_content( t )
|
74
92
|
File.open_as_string(f) { |s| s.reverse! }
|
75
|
-
s = File.read(
|
93
|
+
s = File.read(f)
|
76
94
|
assert_equal( t.reverse, s )
|
77
95
|
end
|
78
96
|
|