A N N O U N C I N G
Nano Methods, v0.8.1
Ruby's Atomic Extensions Library
ABSTRACT: Nano Methods is a cornicopia of extension methods for the
Ruby programming language. Nano's extensions are unique by virtue of
thier atomicity. Methods are stored in their own files, allowing for
highly granular control of requirements.
- & -
Mega Modules, v0.3.1
Ruby's Massive Class and Module Additions Library
ABSTRACT: Mega Modules is a large and growing collection of quality
classes amd modules suitable to a wide variety of applications.
···
-----------------------------------------------------------------------
(from ANN-0.8.1)
INTRODUCTION. I'm happy to announce two new sister projects: Nano
Methods and Mega Modules. They are born from the heritage of the old
Ruby Facets project (now deprecated). In the course of the last several
months a slew of major improvements have been made. We have some spiffy
new websites and, most importantly, this release marks the beginning of
a clear window toward 1.0 status. Details of changes follow, but
first...
GREAT NEWS! Nano Methods and Mega Modules are now the official support
libraries for Nitro and Og (http://www.nitrohq.com). Nitro is a
sophisticated Web Application Engine, and Og is an intuitive but
powerful
Object Relational Mapping Library.
FOR FACETS USERS. To upgrade, the project name change will require you
to change the #require path-space from 'facet/' to 'nano/', or
occasionally 'mega/'. The division is pretty clear, Nano stores methods
and Mega stores classes and modules. Sorry for the inconvenience, but
after a long debate I decided it was worth it --and better to do so now
rather then later. Hope you like the new names.
WHY MEGA? Okay, you may have noticed that I back peddled on the major
change of Facets 0.7.0. In that release I had merged the class and
module
additions library, Ruby Carats, into Facets. But I had to separate them
out again. It simply proved too cumbersome to have such a variety of
content all in one location. I am very excited the re-separation
though.
It has already lent itself to major improvements to the library, with a
number of exciting additions on the way.
NANO SYSTEM. A great new feature is the introduction of the NanoSystem
module. This module provides access to meta-info about Nano's
extensions. Primarily it is an index of all the methods. With this
information at its disposal another unique way to require method
becomes
possible:
require 'nanosys'
String.use :capitalized?, :underscore
I am not recommending this approach at the moment. But in the long run,
as the NanoSystem module matures, it may well prove to be a much more
elegant means of doing so.
CORNUCOPIA. There are also _a lot_ of minor changes in this release.
Some of them are simply improvements in the naming of methods or
more appropriate class/module placement. I've gone over all the
methods enough now to be confident that the present methods are pretty
well set. You can expect many fewer name/location changes from here on
out. Also, a good number of new methods have been added. Most of these
I
have managed to make mention of in the following ChangeLog summary.
* Class methods are now prefixed with '::' to separate them from
instance methods.
* Added logger #format and #format_message (Note: whomever wrote these
please let me know, I got them thru a second-hand source and the
original
author is lost to me. I try very hard to give credit where credit is
due.)
* Renamed object/supers to object/superup, which is just a better name.
* Got rid of symbol/gen. Use object/generate_method_name or
module#generate_instance_method_name instead. [ed- Is that the longest
non-foo method name ever?]
* The file 1st.rb file has moved to object/method!. This provides a
version of #method that persists the returned Method object.
* Added module/clone_using, module/clone_renaming and
module/clone_removing.
* Added module/integrate (I love this one, but note that its syntax is
not yet set in stone.)
* 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. These are the class variable attributes as defined by Rails
DHH.
* Added class instance attribute methods: iattr_reader, iatter_writer,
&c. The name of these are not set in stone. It's a bad misnomer.
Looking
for suggestions.
* Added methods to comparable: #cap, #clip. #clip replaces #bound_by,
since 'by' generally indicates the method takes a block parameter. I
have retained #at_least and #at_most, although #cap and #clip handle
the
same functionality.
* Added class/descendants (alias subclasses) and
class/remove_descendants.
* Removed string/table_name and string/class_name (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.
* Added string/soundex for calculating the soundex code of a word/name.
* numeric/octet_units has bee moved to mega/binary_multipliers, which
is
a rewrite of Richard Kilmer's bytes.rb. Actually #octet_units is now
just an alias or #strfbytes, accompanied by #strfbits.
* Placed Florian's binding-of-caller.rb in binding/of_caller. Makes
more
sense there.
* Fixed 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.
There are others, but this particular session of development was
so rapid and choked full, I wasn't able to log them all. Please see
the API RDocs for a complete listing.
CONTRIBUTE. As always, if you have any extension methods that you use
and think may be of benefit to others, please submit them. There's a
good chance they'll be incorporated. Also, if you happen to notice any
code that is mis-credited or is not credited at all and should be,
please correct me. Giving credit where credit is due is _very_
important
to me. And, of course, please let me know if you come across any bugs.
You can contact me either privately or via ruby-talk.
Thanks and Enjoy,
trans>onoma
-----------------------------------------------------------------------
Generated by Reap, a Rake-based Ruby Project Assistant.
Do you Ruby? (http://www.ruby-lang.org)