Sha256: 7cb5b1c19f8cbe8c541880b2292f662e7eacb0294d568c1a897fc63cf046f7f8

Contents?: true

Size: 1.2 KB

Versions: 1

Compression:

Stored size: 1.2 KB

Contents

Stages
------

A gem for creating data pipelines out of tiny, reusable objects

Initial code stolen shamelessly from http://pragdave.blogs.pragprog.com/pragdave/2008/01/pipelines-using.html

Usage
-----

You knit your stages together with '|'.  The leftmost pipeline stage will be contain a generator, which usually is an infinite loop.  For ean example, look at evens.rb in our sample stages collection.  If you wanted to output, for example, every even number divisible by 3, you might do:

```ruby
pipeline = Evens.new | MultiplesOf.new(3)
loop { puts pipeline.run }
```

We have included some general purpose stages, map and select, which can accomplish many pipeline operations:

```ruby
pipeline = Evens.new | Map.new{ |x| x * 3} | Select.new{ |x| x % 7 == 0}
(0..2).map{ |x| pipeline.run } #[0, 42, 84]}
```

Writing New Stages
------------------

If you are writing a stage that needs to process an element, you probably want to subclass Stage and implement handle_value.

If you are writing a generator, you probably want to subclass Stage and implement process

Stern Warnings
--------------

Returning nil from handle_value kills a pipeline.  We may change this behavior in the future, but for now, it makes life easy.


Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
stages-0.0.1 README