From: Trans Date: 2005-08-31T06:36:25+09:00 Subject: [ANN] Nano Methods & Mega Modules A N N O U N C I N G Nano Methods, v0.8.1 Ruby's Atomic Extensions Library http://nano.rubyforge.org 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 http://mega.rubyforge.org 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)