[Nitro] ANN: Facets 2.0.0

George Moschovitis george.moschovitis at gmail.com
Wed Oct 3 03:59:26 EDT 2007


Congratulations for your monumental effort! Can't wait to try it!

-g.

PS: after a couple of extra-full days I am back ;-)

On 10/3/07, Trans <transfire at gmail.com> wrote:
>
> Today I have officially released Facets 2.0.0.
>
>   gem install facets
>
> Facets 2.0.0 represent the project's official push into "production
> ready" status --a major departure from the 1.x series which was
> focused on acquiring functionality.  For more information about this
> release see the README below.
>
> As with any zero-point release, I expect some minor releases to
> quickly follow. Please, let me know if you encounter any problems so I
> can get them fixed right away.
>
> Special thanks to everyone that helped me get this release together!
>
> T.
>
> ---
>
> = Ruby Facets
>
>   http://facets.rubyforge.com
>
>   "ALL YOUR BASE ARE BELONG TO RUBY"
>
>
> == Introduction
>
> Ruby Facets is the single largest collection of general purpose method
> extensions and system additions for the Ruby programming language.
>
> The core extensions is a large collection of methods which extend the
> core capabilities of Ruby's built-in classes and modules. This
> collection of extension methods are unique by virtue of their
> atomicity. The methods are stored in relatively small groups of
> tightly coupled methods so that each can be required independently.
> This gives developers the potential for much finer control over which
> extra methods to bring into their code.
>
> The "more" additions are a collection of classes, modules and light
> meta-systems which constitutes an ever improving source of reusable
> components. Some very nice additions are provided, from the simple
> Functor class to a full-blown annotations system.
>
>
> == Installation
>
> You can install either via RubyGems or manually:
>
>   % gem install facets
>
> or
>
>   % tar -xzf facets-2.x.x.tar.gz
>   % cd facets-2.x.x
>   % sudo task/install
>
> IMPORTANT! Note that setup.rb is no longer used due to Facets new
> special layout.
>
>
> == Compatibility with 1.x series.
>
> Prior to 2.0, Facets was divided between CORE and MORE --standalone
> extensions vs. classes and modules, respectively. With 2.0, the idea
> of CORE has take only a slightly new meaning. Instead CORE now
> represents the libraries that are considered essential and as such are
> loaded automatically when using ++require "facets"++. While still
> primarily made up of extension methods a few classes now belong to
> core as well. In conjunction with this the extension methods are no
> longer stored on a per-method basis, but rather in tight knit packs.
> While dividing the extension methods up on a per-method basis had
> certain advantages, not the least of which was a simple organization,
> it proved too granular --rather than "atomic" it was "subatomic". With
> 2.0 we have address this issue. All the extension methods have now
> been organized into small tightly related groups.
>
> However, being able to require on the basis of a method is still a
> useful approach, so a compatibility layer for the 1.x series has been
> created. It makes it possible to load Facets libraries on a per method
> basis, just as before, via require redirection.
>
> For example:
>
>   require 'facets/core/string/underscore'
>
> Will redirect according to the content of the underscore.rb file:
>
>   require  'facets/string/stylize'
>
> So the underscore method will be loaded just as before. But a few
> other *stylization* methods will be loaded as well. This actually
> proves a more useful approach b/c often one will want to use one of
> the related methods as well.
>
>
> == Mission
>
> Facets holds to the notion that the more we can reasonably integrate
> into a common foundation directed toward general needs, the better
> that foundation will be able to serve everyone. There are a number of
> advantages here:
>
>     * Better Code-reuse
>     * Collaborative Improvements
>     * Greater Name Consistency
>     * One-stop Shop and Installation
>
>
> == Status
>
> The current status is quite good. While some parts are still
> considered beta, everything is relatively usable.
>
>
> == Installation
>
> The easiest way to install is via RubyGems. On the command line enter:
>
>   > gem install facets
>
> To manually install, unpack the .tar.bz2 package and use the included
> setup.rb script. For example:
>
>   > tar -xvzf facets-x.x.x.tar.gz
>   > cd facets-x.x.x
>   > sudo util/setup
>
> On Window the last step will be:
>
>   > ruby util/setup
>
>
> == Usage
>
> For detailed usage of any given method or module please refer to the
> API RDocs. Most are well documented. Assistance in improving
> documentation though is always appreciated.
>
> If you plan to use more then a few of Facets core method it is
> recommended that you require require the main facility.
>
>   require 'facets'
>
> This loads all the CORE functionality at once.
>
> Of course you can use the CORE library piecemeal if you prefer. The
> general require statement for a core extensions library is:
>
>   require 'facets/<class|module>/<method-lib>'
>
> For example:
>
>   require 'facets/time/stamp'
>
> Most "atoms" contain only a few methods, sometimes only one, but a few
> exceptions provide quite a few method, such as ++string/indexable.rb+
> +.
>
> You can load per-class or per-module groups of core methods by
> requiring the class or module by name. For example"
>
>   require 'facets/time'
>
> Will require all the Time method extensions.
>
> Note that some methods that were part of CORE in 1.8 and earlier are
> now part of MORE libraries. A good example is 'random.rb'. There were
> separated b/c they had more specialized usecases, where as CORE
> extensions are intended as general purpose.
>
> Using a Facets/MORE library of modules, classes or microframeworks is
> essentially the same. For example:
>
>   require 'facets/basicobject'
>
> # PLEASE IGNORE THIS FOR NOW
>
> It is possible to eliminate the need for the 'facets/' prefix on
> requires if the Facets libpaths are added to the LOAD_PATH. But this
> isn't as straight-forward as it is for most libraries b/c of the
> layout of Facets library.
>
>   require 'facets-topload'
>   require 'basicobject'
>
> Understand that on the off chance that another library has the same
> name as one of Facets' everything will still work fine. You will just
> not be able to use the prefixless shortcut to require it.
>
> # END IGNORE.
>
> Again, for details pertaining to the functionality of each feature,
> please see the API Docs.
>
>
> == Method File Names
>
> Operator method redirect files are stored using English names. For
> instance for Proc#* is 'proc/op_mul'.
>
> For reference, here is the chart.
>
>      +@   => op_plus_self
>      -@   => op_minus_self
>      +    => op_plus
>      -    => op_minus
>      **   => op_pow
>      *    => op_mul
>      /    => op_div
>      %    => op_mod
>      ~    => op_tilde
>      <=>  => op_cmp
>      <<   => op_lshift
>      >>   => op_rshift
>      <    => op_lt
>      >    => op_gt
>      ===  => op_case_eq
>      ==   => op_equal
>      =~   => op_apply
>      <=   => op_lt_eq
>      >=   => op_gt_eq
>      |    => op_or
>      &    => op_and
>      ^    => op_xor
>      []=  => op_store
>      []   => op_fetch
>
> Facets simply takes the '*' and translates it into a string acceptable
> to all file systems. Also, if a method ends in '=', '?' or '!' it is
> simply removed.
>
>
> == Contribute
>
> This project thrives on contribution.
>
> If you have any extension methods, classes, modules or small
> frameworks that you think have general applicability and would like to
> see them included in this project, don't hesitiate to submit. There's
> a very good chance it will be included.  Also, if you have better
> versions of any thing already included or simply have a patch, they
> too are more than welcome. We want Ruby Facets to be of the highest
> quality.
>
>
> == Authors
>
> This collection was put together by, and largely written by Thomas
> Sawyer (aka Trans). He can be reached via email at transfire at
> gmail.com.
>
> Some parts of this collection were written and/or inspired by other
> persons. Fortunately nearly all were copyrighted under the same open
> license, the Ruby License. In the few exceptions I have included the
> copyright notice with the source code.
>
> Any code file not specifically labeled shall fall under the Ruby
> License.
>
> In all cases, I have made every effort to give credit where credit is
> due. You will find these copyrights, thanks and acknowledgments
> embedded in the source code, and an unobtrusive "Author(s)" section is
> given in the RDocs.
>
> Also see the AUTHORS file for a list of all contributing Rubyists.
>
> If anyone is missing from the list, please let me know and I will
> correct right away. Thanks.
>
>
> == License
>
> The collection PER COLLECTION is licensed as follows:
>
>   Ruby Facets
>   Copyright (c) 2004-2006 Thomas Sawyer
>
>   Distributed under the terms of the Ruby license.
>
> The Ruby license is a dual license that also provides for use of the
> GPL. Complete texts of both licenses accompany this document (see doc/
> COPYING).
>
>   This program is free software; you can redistribute it and/or
>   modify it under the terms of the GNU General Public License as
>   published by the Free Software Foundation; either version 2 of
>   the License, or (at your option) any later version.
>
>   This program is distributed in the hope that it will be useful,
>   but WITHOUT ANY WARRANTY; without even the implied warranty of
>   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>   GNU General Public License for more details.
>
>   You should have received a copy of the GNU General Public License
>   along with this program; if not, write to the
>     Free Software Foundation, Inc.
>     59 Temple Place, Suite 330
>     Boston, MA 02111-1307 USA
>
> Acknowledgments and Copyrights for particular snippets of borrowed
> code are given in their respective source. All licenses are either
> compatible with the Ruby license (namely the GPL) or the original
> author has given permission for inclusion of their code under such
> license.
>
> _______________________________________________
> Nitro-general mailing list
> Nitro-general at rubyforge.org
> http://rubyforge.org/mailman/listinfo/nitro-general
>



-- 
http://gmosx.me.gr
http://phidz.com
http://blog.gmosx.com
http://cull.gr
http://www.joy.gr
http://nitroproject.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://rubyforge.org/pipermail/nitro-general/attachments/20071003/754f419a/attachment.html 


More information about the Nitro-general mailing list