From: Trans Date: 2007-02-21T05:56:15+09:00 Subject: [ANN] Facets 1.8 Facets 1.8 Facets is a large collection of core extension methods and module additions for the Ruby programming language. The core extensions are unique by virtue of their atomicity. Methods are stored in their own files, allowing for highly granular control of requirements. The modules include a variety of useful classes, mixins and microframeworks, from the Functor to a complete SI Units system. http://facets.rubyforge.org --- It's been a long time since the last release of Facets. Too long really. 1.7's tiny number made it all the way up to 191 before I tagged it 1.8, plus 51 subsequent changes before official release! So Facets continues to mature: new methods have been added, as well as a few classes. And 2.0 promises to be even more exciting. As always thanks to everyone who has contributed, both directly and indirectly. Here's a (fairly raw) summary of the ChangeLog. * significant improvements to command.rb thanks to Tyler Rick * added tests to elementwise and tap * fixed test for elementwise and op_tilde_self * added enumerable/map_send * added thread_map and thread_map_send thanks to greg * added operator "~@" for enumerable/elementwise * added more/consoleutils.rb * added string/cleave * added capitalize_all thanks to Richard Laugesen * cartesian_product is an alias of enumerable/cart * added array pad thanks to Richard Laugesen * added kernel/tap * converted facet/ requires to facets/core or facets/more as needed * further improvements to arguments.rb (looking good!) * improved symbol/self/generate * bug fix kernel/autoreload arguments needed to be in opposite order * add to_xoxo * removed bad character codes in multiplier.rb * used yaml to allow json.rb to work for all objects in general * improvements to functor (note: is to_a and to_proc okay?) * add test to string/bytes.rb * bug fix to nilclass/op_cmp * fixed enumerable/op_pow to use enumerable/cart * added array/op_div * adjustments to xmlbuilder and htmlbuilder dur to buildingblock changes * improved buildingblock.rb * simplified interface of arguments.rb (still a little more to do) * improvements/simplifications to Dir.multiglob * fixed misspelling of behavior.rb (was bahvior.rb) * removed #own from base list in facets.rb (really need a standard for "singleton class") * fixed bug in aspects.rb that would not handle args of wrapped method * Symbol#to_s optimization, had to remove freeze * updates to fileutils/stage (stage worth keeping?) * fix bug in kernel/ask, returns more than one character * cleanup of enumerbale/graph (no effective change) * new super fast enumerable/cart by Thomas Hafner (replaces #cross) * improved multiglob rountines (accept '+' and '-' prefixes) * fixed bug in attr_tester, thanks Dov! * added weekdays to times.rb thanks to Ryan Platte and Dave Hoover * improvements to dictionary.rb (no longer a subclass of Hash) thanks Jan! * improvements to ann.rb and ann_attr.rb. works, yea! * fixed bug in string/singular.rb * changed enumerable/cross into enumerable/cart and cartesian_product * moved enumerable/cross to enumerable/cart (cartesian_product) * added buildingblock.rb, replaced builderobject.rb * adjust require for "yored" files * HtmlBuilder and XMLBuilder are now based on BuildingBlock * ostuct adjustment, use #instance_delegate to get underneth the open access * module/include_as is now based on module/namespace (thanks Pit!) * fixed enumerable/partition_by * further updates to project info file (need to stop versioning this) * deprecated (yored) builderobject.rb (poor implementation) * added hash/insert; like store but only if key isn't already present * added module/include_and_extend * facets.rb now references facets/sys.rb * added facets/automatic -- very cool, albiet expiremental way to load core methods automatically! * added module/module_method; like module_function but makes method public * added module/include_function_module; attempts to properly include one function_module into another * kernel/yaml convenience method for YAML::load * added kernel/supress; supress errors while executing a block (nice DHH!) * added symbol/chomp, like string#chomp * added proc/to_h; converts an assignment proc into a hash * proc/bind; bind a proc to an object, returning a method * added module/prepend; provides dyanamic method wraps for modules, and static wraps for classes * added module/new; use a module as if it were a class * added module/alias_accessor * renamed #superior to #super_at * kernel/instance_class; yet anouther meta_class name, but a more sensicle name this one * added kernel/populate; populates an object's inst. vars from a hash or assingment block * added kernel/daemonize; yet another thanks to DHH! * added enumerable/injecting; like inject but automatically returns the memo from the block * added kernel/object_send, a true public-only send method * added kernel/silence_stream; output to null device; thanks DHH! * added kernel/instance_values, thanks DHH! * added Config::inspect for rbconfig * added hash/pairs_at (aking to values_at) * added _why's metaid methods (meta_class, meta_eval, etc.) * added kernel/enable_warnings to complement silence_warinings * added integer/to_roman * added logical operators for hash (and/or) * array/to_path convert ans array to a path string * array/index takes a block * added fileutils/compress; very simple convenience methods for archiving folders * added fileutils/stage adn staged, a means of transfering files accoring to preset rules * had to remove taskable.rb for now (implementation won't work as toplevel include) * added kernel/ask, simply command to get console input * moved deprecated #facet_require to yore lib * deprecated (yored) kernel/own, yet another term for the singleton class * renamed quaclass to qua_class * added populate.rb, mixin for classes that need on a basic initializer * added version_number.rb (a specialized tuple) * added uploadutils.rb * added Joel VanderWerf's great script.rb script * added Austin's minitar.rb --it's just too damn useful! (not in rdocs though) * added htmlfilter.rb very nice html escape class * added dependency.rb, allows methods to have dependent execution (like rake tasks) * added arguments.rb this is for parsing console command arguments * add new version of annotations: ann.rb and ann_attr.rb * memoize should now work at toplevel * removed dataobject.rb (was never used) * doc change to methodfilter.rb (maybe deprecat in future) * deprecated (yored!) module/inject; what a silly method * added File::yaml? to roughly detect if a file is a yaml file * deprecated kernel/require_facet (no longer needed) * moved old module/namespace implementation to yore * moved plugin.rb to ratchets/library project * proper credit for multiton goes to Ara T. Howard!!!! Also improvements. * remove library.rb (move to ratchets/library project) * improved time/stamp * reimplemented proc/to_method for more sensible behavior * reimplemented module/namespace, very clever thanks to pit captain * added module_load and module_require, e.g. load into and require into * reimplemented instance_exec, should be much improved * doc updates to inflect.rb * updates to Hash op_add, reverse_merge, and rekey * each_slice is now just an alias via enumerator & fixes to partition_by * modified all.rb (not recommended!) to require facets/sys * modifications to project information file (should this be versioned?) * created yore lib to store deprecated features (good idea!) * modified PROJECT info file * added module class/module_load and _require * remove facet/ redirect lib from darcs repository * kernel/returning is a stub for kernel/with * added proc/update as alias for #call per Tim Pease use of Proc as Observable * added behavior.rb by Nobuyoshi Nakada (plan to improve) * rewrote taskable.rb using classes to represent tasks; it is much improved * openobject.rb doc updates * major update to functor which is now a subclass of Proc (should be faster) * improvements to dictionary.rb to go along with additions of first and last * small improvements to command.rb * removed uses of __class__ for object_class and solidified usaged of #as in basicobject.rb * deprecated ostruct shadow methods (i.e __table__) in favor of #instance methods * added test to module/alias_method_chain * imporvements to instance_exec thanks to Mauricio Fernandez * improvements to kernel/send_as * improvements to kernel/as * fixed syntax in hash/op_add.rb * imporvements to hash/partition_by thanks to Gregory of Laurel * added Mauricio Fernandez to authors * added addtional work library lore * moved a number of "in the works" libs to ToadCode project * removed predicate.rb, an expiremental logic system, and moved to ToadCode * Added plugin.rb, an indirect require mechinism, ie. a plugin system * remove one.rb and moved to ToadCode project, this was just silly/ fun library * Added library.rb which is a library ledger system (used to be roll.rb) * added kernel/with which instance_eval's a block on with's subject * rekey is an improved version of normalize_keys (ie. the basis of symbolize_keys) * multiglob is like glob but handles a list of patterns * proper access to openstruct's underlying table * doc fixes and losening toplevel constraint to Object in taskable * made OpenObject #update and #merge public; added to_hash * removed unorder_store and store_only; added first/last to dictionary * continued improvements to command.rb added some new callbacks such as option_missing; also handles method_missing properly now * added string/rewrite * test fixes to module/include_as * documentation fix for class_extension * minor edit to supermethod (also finish #superior removal) * cleanup kernel/set_with code * update kernel/metaclass can now take a block * added hash#+ and hash#- (op_add and op_sub) * added cache to enumerable/every * removed kernel/superior (silly name) * add more/autovivify.rb expiremental lib. * update/fix to command.rb to not use Kernel methods as subcommands. * update Work on annotation.rb to improve support for :self. * deprecate enumerable/permute.rb (replaced by permutation) and minor test fix to linkedlist.rb * added linkedlist.rb (thanks Kirk Haines!) * added enumerable/sum (thanks to Gavin Kistner) * added array/each_combo and combos (Eunumerable.combinations will be deprecated eventually) * rename changed enumerable/permute to permutation * update annotation.rb, fixed :self key * added pathname/op_div * deprecated hash/each.rb * removed hash/each.rb, this variation of Hash#each is too "dangerous" in practice * update module/self/op_add.rb: fixed inclusion order * deprecated annotation.rb, replaced with ann.rb * added module/self/op_add.rb and op_sub.rb - traits like features * minor improvemtns to module/clone_using and integrate * openobject.rb (added NilClass#to_openobject) * replaced enumerable/each_slice.rb w/ redirect to enumerator.rb. Ruby already has #each_slice if you require 'enumerator'. For 1.9, I believe this will be present automatically. So Facets' each_slice has been replaced with a simple redirection to require 'enumerator'. Ruby's version is slightly different in that it won't check arity if a slice count is not given. For this, use enumerable/each_by. * removed array/delete_at.rb (Use #delete_values_at instead) * moved File.bitbucket to File.null (but bitbucket was so "fun"! ;) * added nilclass/to_path * added kernel/load_local * added kernel/callee * added enumerable/eachn, integer/each and integer/of * re-added array/delete_values_at * added filetest/self/root * added cache.rb * moved Dir.bitbucket to File.bitbucket * removed task file in favor of sake based util/ * added main_as_module * added doublemetaphone thanks to Lawrence Philps. * added symbol/to_s which caches the result for speed up * additions and adjusments related to hash/delete_at * added Dir.bitbucket * update to array/op_fetch to include op_store * added filesystem.rb * updates to enumerable each_slice * updated names of meta files * added trace to command.rb ALL YOUR BASE ARE BELONG TO RUBY!