Sha256: f160a8a50682517b5be700d2e9b871fa0ba61bfb9a11d822db0b97095b911305

Contents?: true

Size: 1.1 KB

Versions: 4

Compression:

Stored size: 1.1 KB

Contents

require "#{File.dirname(__FILE__)}/../lib/stages"

include Stages

#count the occurance of each letter in these song lyrics
@lyrics = 
  { :do => 'doe a deer a female deer',
    :re => 'ray a drop of golden sun',
    :mi => 'me a name I call myself',
    :fa => 'far a long long way to run',
    :so => 'a needle pulling thread',
    :la => 'a note to follow so',
    :ti => 'a drink with jam and bread'}

class Lyrics < Stage
  attr_accessor :lyrics
  def handle_value(value)
    output @lyrics[value]
  end
end

class Generator < Stage
  def initialize(things)
    @things = things
    super()
  end
  
  def process
    @things.each do |t|
      output t
    end
  end
end

def setup_pipeline
  get_lyric = Lyrics.new
  get_lyric.lyrics = @lyrics
  
  each_character = Each.new{ |x| x.chars }
  trim_whitespace = Select.new{ |x| x != ' '}
  letters_in_each_line = Wrap.new(get_lyric | each_character | trim_whitespace)
  each_letter = Each.new
  each_note = Generator.new(@lyrics.keys)
  count_everything = Count.new
  
  each_note | letters_in_each_line | each_letter | count_everything
end

puts setup_pipeline.run.inspect



Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
stages-0.2.3 examples/sing_custom_stages.rb
stages-0.2.2 examples/sing_custom_stages.rb
stages-0.2.1 examples/sing_custom_stages.rb
stages-0.2.0 examples/sing_custom_stages.rb