[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

[Ann] Labrador-0.0.1 pre alpha released

Robert Dober

6/13/2007 9:09:00 PM

Hi list

the very diligent folks from RubyForge have approved my request early
so I can thankfully pronounce the first release of Labrador.

Strange name for a strange package :) Here you go:

Labrador is a little bit like me, badly organized.
It is a quite unrelated collection of Ruby Code.
Maybe some day it will evolve into independant packages, maybe it will not.

Right, what can Labrador do for you?

Propeties
---------
First there is labrador/properties allowing to define properties
without instance variables
by means of closures. Check out the rdoc to learn more about it but a
very quick overview.

The technique I use comes from Tom Christiansans famous TOT, Tom's
Object Tutorial.

+ Safe, nobody will change your const property there is just no way.
+ Instance variable safe subclassing, as long as you carefully check
your properties
in your inheritance chain and define your properties accordingly you can use
instance variables internally without any danger of interference.
Instance variable free classes are thus ideal for frameworks.
+ The approach allows for interesting enhancements like e.g.
synchronisation mechanisms
by properties, changing property traits dynamically and many more.

- Slow, benchmarks show consistently that property access is about 4
times slower than
Instance variable accessors.
- Complicated, although the complexity of the implementation is
perfectly hidden enhancements
can become difficult and might impose some more performance penalty.
A very extensive test
suit - provided as far as I know - is necessary.

Labrador Enums
--------------
Very condense enumerator notation for lazy people. Special Style I
want to share with
those who are interested.

labrador/enum/map is released
labrador/enum/reject is under development.

assert_equal %w{ b c d }, %w{ a b c }.map(:succ)
assert_equal %w{ b c d }, %w{ a b c }.map.succ

assert_equal [*2..4], Set.new( [*0..2] ).map(:+, 2).sort

Look into test/test-map.rb for more examples.

Enjoy
Robert
--
You see things; and you say Why?
But I dream things that never were; and I say Why not?
-- George Bernard Shaw

1 Answer

Robert Dober

6/13/2007 9:09:00 PM

0

http://rubyforge.org/projects...
this might be useful ;)

Robert