= Facets Change Log

== 1.4.4
* added nil#status - Allows a messgae to be passed through
  a failure chain.
* added module#alias_method_chain - from rails this is clever
  idiom for module-based method wrapping. A limited
  solution, but since there's no standard solution as
  of yet, well support til then.
* added enumerable#cascade - cascade a list of actions on each
  element of an enumerable. Better name for this?
* method missing in htmlbuilder effected by BasicObject fix
  (use __self__.method instead of __metod__)
* minor update to functor.rb. Added @self = function.binding.self.
  Still tweaking for best meta informatin access.
* change WebAgent to Web
* Removed hash/keys_to_iv b/c it is a poor name. Since the alternative
  of #keys_to_instance_variables conveys the wrong idea, decided to just
  get rid of this. Instead use the hash#variablize_keys which is also
  Rails compatibile.

===1.4.1-1.4.2
* Started using Darcs --finally!
* Transition to Darcs has interupted ChangeLog though :(
* Mostly minor fixes in prepeartion for official 1.4 release.
* Adjusted BasicObject slightly, further reducing unhidden methods.
  Among them __object__, __method__ and #as. Also added method_missing
  that detects shadow methods and rebinds them to Object. Keep in mind
  that woun't help you if you override method_missing which is
  typical for this class.
* Fixed bug in BasicObject#__self__.

== 1.4.0
* Added Cookie, HTTP and HTTPAccess of ...'s library.
* OpenObject's __get__ and __set__ methods have been changed
  to __fetch__ and __store__ to correspond to the Hash methods.
* Added OpenCascade, which is like OpenObject but chains access.
* Added ...'s lazy.rb which include's Future and Promise classes.
* Added task.rb, which provides a Rake interface compatible task
  system, but that can be used in any code.
* Improved Hash#traverse (it now does all traversing before yielding).
* kernel/me, kernel/methodname and kernel/method_name have all been
  deprecated in favor of the 1.9 standard kernel/__method__ and
  kernel/__callee__.
* Console::Application is deprecated and is no longer an alias for
  Console::Command.
* Console::Command also now supports run-on flags (eg. -xvzf).
* More's classinherit.rb has been removed, and classmethods.rb will be
  too in  another version or two. You should transition all uses of
  these to core/module/class_extension.rb.
* Updated tuple.rb so that when a string is converted to a Tuple (#to_t)
  the values wll be made integers if they are composed of only numbers.
  If you need all strings you can use a block since the block bypasses
  this auto coercement, eg. to_t{ |v| v }.

== 1.3.1
* Deprecated string/to_arr, and slightly adjusted string#to_a.
  (Not commonly used so not a major change.)
* Minor bug fixes.

== 1.3.0
* Ported parts of Nitro's Glue library to Facets.
  * more/aspects.rb
  * core/module/on_included.rb
  * core/module/expirable.rb
  * core/enumerable/accumulate.rb
* Added xoxo.rb, json.rb and rtals.rb.
* Repaired missing data files for units.rb.
* Moved cattr methods from module/ to class/.
* mattr methods are in limbo at the moment.
  (They were aliases for cattr.)

== 1.2.1
* kernel/meta has been renamed to kernel/instance

== 1.2.0
* Added zimba.tm's string/modulize, pathize and methodize.
* Added some Gem methods, self/active?, self/gemspec, self/gempath.

== 1.0.3
* A last ditch attempt to keep facets and calibre as one project.

== 1.0.2
* Added _why's Array modulo.

== 1.0.0
* Sped up string#similarity.
* By popular protest deprecated usage of "AClass.use Facets, :amethod".
* Created nicer layout of facets/support, /group, /english (one day /method).
* Odd sets of facets have been move to facets/group/, eg. facets/group/inflect.
* All is now well preped for a Rolls release shoud that come about.

== v0.10.30  Halloween
* Change OrderedHash (ohash.rb) to Dictionary (dictionary.rb).
* Change BlankSlate (blankslate.rb) to BasicObject (basicobject.rb).
* Old versions of the above should still work, but throw warnings
  and will stop working come next version.
* 1.rb has been renamed to one.rb (I know, two more characters,
  but you can do it! ;)
* Methods enumerable/op_mod (%) and enumerable/eF are deprecated.
  Use #every or #ew instead.

== v0.10.11  Palapable
* Merged Mega into Facets. I put the old Mega ChangeLog at
  the bottom of this document.
* This represents the One-Point-Oh realease (albeit RC1) of
  Facets, but from now on I'll be using date versioning
  --if you look at the versions below you may understand why.
  The versioning sequence has no real rationality.
  Instead I will use this simple Rational Versioning Policy:
  * If YYYY-MM-DD it's a development release.
  * If YYYY-MM it's an official release.
  * If just YYYY it's hella stable.
  One might argue this is not as robust as a compatability
  significant point-based versioning system, but I'd say that's
  all well and good in theory, now give me something that actually
  works in practice.

== v0.9.5  Rebirth
* Rebirth of Facets! As cool as the name Nano is, it became clear
  that most people are drawn toward the name Facets. So we are
  reverting back. Nonetheless Nano will remain a viable alias for
  Facets.
* Must now use <code>require 'facets'</code> prior to using
  other Facets. This does two things. First it loads the 
  base methods, which ensures that all programs have them 
  readibly available when using Facets. Secondly it supplements
  #require to handle aliases. In essence, require 'facet/...',
  require 'facets/...' and require 'nano/...' all point to the
  same place(s). (NOTE This is a precursor to a more universal
  system that will handle aliasing automatically.)
* kernel/require_esc has been removed. #require_nano will be also
  in the next release. These will no longer be needed thanks to 
  the aliasing system.

== v0.9.2  Littles
* Added string/starts_with? and string/ends_with?
* Fixed module/memoize to cache on a per class/module bases.
* Added module/is as an alias for /include.
* Added module/shadow_method and shadow_all.
* Renamed module/superup (which was module/supers) to module/as. And defined a new
  method called /superior which is like /super but skips to a sepecified ancestor.
* Renamed module/super_send to module/send_as.

== v0.9.1  Wraps
* Added module/nesting (not to be confused with the class method Module::nesting).
* Thanks goes to Gavien Kistner for new string/word_wrap methods 
  (with additioanl thanks to Dyane Borderson for his suggestions).
* Added hash/each_with_key and each_with_index, as well as array/each_with_key;
  increasing polymorphism between the two classes.
* Moved array/each_pair to enumerable/each_pair and changed how it worked to 
  what one might expect.

== v0.9.0  NotUorI
* Deprecated object#special_class, which was a method for (class<<self;self;end).
  Already have too many aliases for this, and though the name is fitting, the simpler
  method #own is better (alternative: #singleton).
* Fixed enumerable/uniq_by file which was misnamed 'unique_by.rb'.
* BIG CHANGE! Got rid of URI encoding on file names and sub'd a converson table
  of english readable names. Thanks Jeff Wood, Florain Gross, Dav Burt,
  Gavin Kistner, James Edward Gray II, Brian Schröder, Mauricio Fernández,
  David A. Black, Gavin Sinclair, Nikolai Weibull and Christian Neukirchen.

== v0.8.3  UorI
* Added kernel/uri and kernel/unuri
* (Good idea?) removed methods module/sattr, sattr_reader, &c. Instead created object/meta
  in which attr, attr_reader, &c. are made public. So, sattr -> meta.attr.
* Added array/unzip
* Added logger/format and logger/format_message (stub).
* Added string/dequote.
* Class method file names now begin with '::' to separate them from instance methods.

== v0.8.2  Nano Revolution
* Name Change! What was Ruby Facets is now Nano Methods!
* New minor version as there has been a change of plans with the integration of what was Carats.
  The classes and modules have been reseperated into their own project called Mega Modules.
* Modified the #firstxxx/#lastxxx methods to be more congruent and comprehensible.
* Renamed object/supers to object/superup. Better!
* Got rid ot symbol/gen. Use object/generate_method_name or  module#generate_instance_method_name
  instead ( Is that the longest non-foo method name ever? :)
* The file 1st.rb has moved to object/method. This modifies #method to persist the returned
  Method object. The original non-persitent version of #method is aliased to #original_method.
  (This arrangement is not set in stone though, and is still be considered.)
* Added module/clone_using, module/clone_ranaming and module/clone_removing.
* Added module/integrate (I love this one!)
* Added many new enumerable methods: #filter_map, #compact_map, #commonality, #frequency,
  #probability and #find_collisions.
* Moved some methods from array to enumerable: #each_permutation, #each_combination, 
  #each_unique_pair and the class method ::combinations.
* Added string/bytes per ruby-dev summary 26385-26467.
* Moved #cattr_reader, #cattr_writer and #cattr_accessor from Class to Module.
* Renamed numeric/octet_units to numeric/bytes_to_s and added a #bits_to_s as well.
* Added class/descendants (alias subclasses) and class/remove_descendents, as well as
  object/descendents_of and object/remove_descendents_of.
* Added methods to comparable: #cap, #clip. There are also #at_least and
  #at_most, although FYI #cap and #clip handle the same functionality.
* Removed string/table_name and string/class_name (they were too Rails specific).
  Note: A new module has been added to Mega Modules, called orm-inflect.rb. It contains numerous
  methods for doing this sort of thing.
* Added numeric/ceil_multiple (not sure about name though, perhaps a better name like "ceil_to"?).
* Added string/soundex for calculating the soundex code of a word/name.
* Added io/expect. I thought Ruby already had this but can't find it, so here it is for now.
* Placed Florian's binding-of-caller.rb in binding/of_caller. Makes more sense there.
* Fixed bug with Continuation::create (it wasn't defined as a class method and should have been).
* Fixed bug with string/capitalized? which wasn't always giving the correct result.

== v0.7.2  George II
* Added a class method dir/recurse which allows one to loop through a dir and all its
  subdirs, etc. It also has an alias #ls_r. Thanks goes to George Maschovitis for this.
* Changed array/permute to array/each_permutation.

== v0.7.1  Quick George
* Added facet.rb, although expiremental it makes it possible to use atomic methods without
  specificaly requiring them. It uses Object#method_missing to require them as needed.
* Improved on "molecules", i.e. files that require numerous related atoms in a single go.
  These will see a great deal of continued improvement in the future.

== v0.7.0  Georgian Transform
* All methods with names containing non-alphanumeric characters now have facet
  files without those special characters. This removes some incompatibilites with 
  certain systems (including Windows). All such symbols have been replaced with
  CGI escape sequences, for instance 'in?.rb' becomes 'in%3F.rb'. To avoid having
  to use these "ugly" names, a new method has been added, kernel/require_facet.
* Methods that were grouped together in the same file have been separated 
  into their own files. Pure Atomicity has been achieved!
* The method array/put has been dropped in favor of array/top (as a better alias for #unshift).
* Methods #matchdata/post_match_from and #matchdata/pre_match_from have deprecated
  in favor of more generalized methods that serves the same purposes,
  matchdata/matchtree and matchdata/matchset.
* Added module/include_as.
* Added array/permute.

== v0.6.3  Gemstone
* Gem is now avaliable!
* Added kernel/require_all which allows one to require a pattern of files,
  making it easy to require every file in a directory.
* Added hash/traverse and hash/traverse!, which takes a block and iterates over
  each key-value pair descending into subhash values and applying the block.
  (Thanks goes to Ara T. Howard and robert for their help.)
* Added hash/collect. This uses enumerable/graph so that
  hash/collect will return a hash rather then an array.
* Added numeric/before and numeric/after in place of #ago and #since
  and aliased #ago and #since to them, per the suggestions of
  Francis Hwang.
* Added "poor man's profiler", time/elapse. (Thanks goes to Hal Fulton).
* Changed enumerable/build_hash to enumerable/graph. The method #build_hash
  has been aliased to #graph for the time being for backward compatability.
* Added array/last_index. (Thanks goes to Jabari)

== v0.6.2  Refinement I
* Added kernel/resc as a shortcut for Regexp.escape.
* Renamed hash/keys_to_string to hash/key_to_s and  
  hash/keys_to_symbol to hash/keys_to_sym to be more consistant
  with other methods and what these methods specifically do.
  The old names have been deprecated.
* Added hash/has_keys?, which allows for checking mutliple keys at once.
  Also includes #has_only_keys?
* Added Rail's Time and Byte modules for Numeric with
  numeric/times.rb and numeric/bytes.rb (I've been informed that
  thanks go to Richard Kilmer for this. Thanks!)
* Added numeric/octet_unit which utilizes numeric/bytes.
  (The name of this method may change in the future though.)
* Added enumerable/uniq_by.
* Added module/abstract.
* Added module/redirect which is similar to alias, but does not
  copy the method, but rather wraps it. It also takes a hash so
  multiple methods can be redirected all at once.
* Added string/shatter which is similar to split but includes
  the matched portions of text.

== v0.6.1  Florian's Mixes
* Updated the current set of mix files which were still from 
  version 0.5.0. (2004-12-31)

== v0.6.0  Florian's Onslaught
* Major revisions made by Florian's onslaught. (2004-12-28) 
* First general public release.

== v0.5.0  Fit for First
* This is the beginning of offical releases. (2004-12-23)
* Now called Facets.
* Changed layout to be completely atomic! (2004-10-30)

== v0.4.0  Raspberry
* Scoured the Ruby world for useful additions.
* Changed name again from A.B.C. to Raspberry.
  I can't seem to settle on a name. Even the new 
  subsections have changed five times. (2004-08-08)

== v0.3.0  ABC
* Reorganinzed all of this together in a nice neat way.
* Changed name of library from Succ to A.B.C. 
  which stands for All Base Common. (2004-02-02)

== v0.2.0  Succ
* A number of new methods added.
* Renamed it Succ for "successor". (2003-05-31)

== v0.1.0  TomsLib
* Tomslib's just a few useful methods. (2002-07-01)


== Old Mega/Carats ChangeLog

== v0.4.0
* Adjusted Tuple to use Tuple::[*args] instead of ::new, which now takes
  a single argument instead, either an Array or a String which it splits.
* Removed services.rb unitl in gets fixed and a better name.

== v0.3.3
* Added inheritable.rb, a lib for creating class vars inherit from ancestors
* Addes annotations.rb, a lightweight metadata system good for annotating
  methods esspecially. It is built on top of inheritable.rb.

== 0.3.2
* Added services.rb, a lib for managing methods as first class objects
* Fixed/cleaned-up orm_supprt.rb

== 0.3.1
* Aliased #autoload_classes with #autorequire.
* Added #strfbits and #strfbytes to binary_multiplers.rb.

== 0.3.0
* Name change to Mega Modules!
* Added a few important files: multipliers.rb, binary_multipliers.rb,
  time_in_english.rb and orm_inlectors.rb.
* Each one of these is a "Methods Module", i.e. They are a collection of
  closely related methods that modify one or more core classes/modules.
  Individually these methods could have very well ended up in Nano Methods,
  but given there quantity and interrelation they were more suitable to a
  module, and thus placed here.

== 0.2.0
* Initial public release

== 0.1.0
* Early Development as Ruby Carats
