[Nitro] [ANN] Facets 1.8 (RC)

transfire at gmail.com transfire at gmail.com
Wed Jan 24 16:57:01 EST 2007

Facets 1.8


If Godzilla were a Programmer's Library : 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 thier 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 simple Functor to a
full-blown SI Units system.


Wooh! It's been a long time since I made a release of Facets. Too long
in fact --the tiny version made it all the way up 191 before I tagged
it 1.8! Facets continues to mature, improving existing code and adding
great new features. Have fun shifting thru this Changelog! And as
always thanks to everyone who has contributed (knowingly and
unknowingly). Peace.

BTW. Haven't sent news out to ruby-talk. May wait til I get back from
my travels. Cause you know, Nitro people get first crack :-)

Here's the change log summary (in order from newest to oldest):

  * added buildingblock.rb, replaced builderobject.rb
  * adjust require for "yored" files
  * HtmlBuilder and XMLBuilder aer now based on BuildingBlock
  * bug fix for command.rb
  * minor improvements to basic object (object_self to access kernel
  * ostuct adjustment, use #instance_delegate to get underneth the open
  * module/include_as is now based on module/namespace (thanks Pit!)
  * minor adjustments to methods for (class<<self;self;end)
  * 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 File::mulitglob_sum; accumulates file patterns, and accepts
'+' and '-' prefixes
  * added module/module_method; like module_function but makes method
  * 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
  * added symbol/chomp, like string#chomp
  * added proc/to_h; converts an assignment proc into a hash
  * added 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
  * added kernel/instance_class; yet another meta_class name, but a
more sensable name this one
  * added kernel/populate; populates an object's inst. vars from a hash
or assingment block
  * added kernel/daemonize; one last 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)
  * added array/to_path convert and array to a path string
  * added array/index to take 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, simple command to get console input
  * moved deprecated #facet_require to yore lib
  * deprecated (yored) kernel/own, yet another term for the singleton
  * renamed quaclass to qua_class
  * added populate.rb, mixin for classes that need on a basic
  * added version_number.rb (a specialized tuple)
  * OpenObject = OpenHash (OpenObject will eventually be deprecated)
  * added uploadutils.rb
  * added Joel VanderWerf's great script.rb script
  * added Austin's minitar.rb --it's just too damn useful!
  * added htmlfilter.rb very nice html escape class
  * added dependency.rb, allows method to have dependend 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)
  * minor doc change to instance_intercept.rb
  * 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
  * adjust old annotation.rb (now in yore) to use openhash
  * moved plugin.rb to ratchets/library project
  * renamed openobject to openhash !!!
  * proper credit for multiton goes to Ara T. Howard!!!! Also
  * remove library.rb (move to ratchets/library project)
  * minor bug fix to httpaccess
  * updated autovivify.rb to use openhash
  * improvement to command.rb
  * imporved 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
  * 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
  * minor adjusment to multiglob
  * modified all.rb (not recommended!) to require facets/sys
  * modifications to project information file (should this be
  * 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
  * OpenObject is now OpenHash (OpenObject still exist for backcompat)
  * kernel/returning is a stub for kernel/with
  * added proc/update as alias for #call per Tim Pease use of Proc as
  * added behavior.rb by Nobuyoshi Nakada (plan to improve)
  * rewrote taskable.rb using classes to represent tasks; it is much
  * openobject.rb doc updates
  * major update to functor which is now a subclass of Proc (should be
  * 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
  * minor doc addition 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 "calibre" project information files
  * moved a number of "in the works" libs to ToadCode project
  * removed predicate.rb, an expiremental logic system, and moved to
  * 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
  * 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
  * multiglob is like glob but handles a list of patterns
  * proper access to openstruct's underlying table
  * minor adjustment to taskable.rb
  * minor adjustment to #dresner docs
  * minor adjustment to #as
  * simple doc addition to setup.rb
  * doc fixes and losening toplevel constraint to Object in taskable
  * made OpenObject #update and #merge public; added to_hash
  * minor "public" fix to main_as_object
  * removed unorder_store and store_only; added first/last to
  * continued improvements to command.rb
    added some new callbacks such as option_missing;
    also handles method_missing properly now
  * minor adjustments to module::@+
  * 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
  * minor updates to facets.rb
  * removed kernel/superior (silly name)
  * minor modifications ot PROJECT file
  * [add] more/autovivify.rb expiremental lib.
  * [update] Minor fix to command.rb to not use Kernel methods as
  * [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
  * annotation.rb, return annotations of self when key is :self
  * module/self/op_add.rb and op_sub.rb - traits like features [added]
  * minor improvemtns to module/clone_using and integrate
  * command.rb: minor change to docs [update]
  * openobject.rb (added NilClass#to_openobject) [update]
  * enumerable/each_slice.rb [replace]
    Ruby already has #each_slice if you require 'enumerator'. And for
    I believe, this will be present automatically. So Facets'
    has been replaced with a simple redirection to require
    Ruby's version is slightly different in that it won't check arity
    a slice count is not given. For this, use enumerable/each_by.
  * array/delete_at.rb [removed]
    Ruby's Array class already has a #delete_at method,
    although this is another method at odds with Hash.
    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 Lawrence Philps!)
  * rewrote taskable.rb
  * minor doc fix to association.rb
  * 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
  * updated docs and util tasks
  * minor changes
  * added filesystem.rb
  * taskable should now work at the toplevel too
  * still working the organization as Reap/Sake change
  * started setting project tasks up for sake
  * updates to enumerable each_slice
  * updated names of meta files
  * updates to READMEs
  * added trace to command.rb
  * organizational changes
  * fix to inifinty.rb
  * comment on cut.rb needed a quick fix
  * updated infinity
  * added tkxml.rb
  * allow tasks to to arguments (all dependent tasks must take same
  * update infinity.rb to conform more with common standards
  * error catch added to command.rb (thanks Jonas)
  * added singleton annotations
  * minor improvement to wrap_method and proc/compose
  * added more/infinity.rb
  * major improvement to String#singular and plural
  * update normalize_keys to take a proc instead of a "send" parameter
  * projectinfo backups change
  * added cuts implimentation
  * separated integer/op_mul from compose, op_mul now composes and
  * wrap_method, no need to undef method before redefining it
  * move calibre files (will we do ever use?) to work/pore/meta
  * added work dir to repo
  * fix instance_interception test
  * doc cleanup
  * added hash/op_div and array/op_div to BASE.
  * remove kernel/called and fixed callee,__callee__ and __method__.
  * just about prefected OpenObject
  * keys_to_sym to symbolize_keys usage
  * remove explore dir, perhaps better to do without midstage
  * added to_a to OpenObject
  * minor touchup to opencascade


___     __
ANN by |   )

More information about the Nitro-general mailing list