stages 1.0.1 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.travis.yml +8 -0
- data/README.md +2 -0
- data/VERSION +1 -1
- data/lib/stage_base.rb +13 -0
- data/lib/stages/each.rb +2 -3
- data/lib/stages/limit.rb +21 -0
- data/lib/sugar.rb +4 -0
- data/stages.gemspec +4 -2
- data/test/test_pipeline.rb +21 -0
- data/test/test_stages.rb +21 -0
- data/test/test_syntax.rb +5 -0
- metadata +5 -3
    
        data/.travis.yml
    ADDED
    
    
    
        data/README.md
    CHANGED
    
    
    
        data/VERSION
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            1. | 
| 1 | 
            +
            1.1.1
         | 
    
        data/lib/stage_base.rb
    CHANGED
    
    | @@ -1,5 +1,6 @@ | |
| 1 1 | 
             
            module Stages
         | 
| 2 2 | 
             
              class Stage
         | 
| 3 | 
            +
                include Enumerable
         | 
| 3 4 | 
             
                attr_accessor :source
         | 
| 4 5 |  | 
| 5 6 | 
             
                def initialize(&block)
         | 
| @@ -56,6 +57,18 @@ module Stages | |
| 56 57 | 
             
                  end
         | 
| 57 58 | 
             
                end
         | 
| 58 59 |  | 
| 60 | 
            +
                def to_enum
         | 
| 61 | 
            +
                  Enumerator.new do |y|
         | 
| 62 | 
            +
                    while !done?
         | 
| 63 | 
            +
                      y << run
         | 
| 64 | 
            +
                    end
         | 
| 65 | 
            +
                  end
         | 
| 66 | 
            +
                end
         | 
| 67 | 
            +
             | 
| 68 | 
            +
                def each(&block)
         | 
| 69 | 
            +
                  to_enum.each(&block)
         | 
| 70 | 
            +
                end
         | 
| 71 | 
            +
             | 
| 59 72 | 
             
                def handle_value(value)
         | 
| 60 73 | 
             
                  output value
         | 
| 61 74 | 
             
                end
         | 
    
        data/lib/stages/each.rb
    CHANGED
    
    | @@ -9,9 +9,8 @@ module Stages | |
| 9 9 | 
             
                def process
         | 
| 10 10 | 
             
                  if @things
         | 
| 11 11 | 
             
                    process_things
         | 
| 12 | 
            -
                  else
         | 
| 13 | 
            -
                    process_inputs
         | 
| 14 12 | 
             
                  end
         | 
| 13 | 
            +
                  process_inputs
         | 
| 15 14 | 
             
                end
         | 
| 16 15 |  | 
| 17 16 | 
             
                def process_inputs
         | 
| @@ -19,7 +18,7 @@ module Stages | |
| 19 18 | 
             
                    v = input
         | 
| 20 19 | 
             
                    v = @block.call(v) if @block
         | 
| 21 20 | 
             
                    v.each do |v|
         | 
| 22 | 
            -
                       | 
| 21 | 
            +
                      handle_value v
         | 
| 23 22 | 
             
                    end
         | 
| 24 23 | 
             
                  end
         | 
| 25 24 | 
             
                end
         | 
    
        data/lib/stages/limit.rb
    ADDED
    
    | @@ -0,0 +1,21 @@ | |
| 1 | 
            +
            module Stages
         | 
| 2 | 
            +
              class Limit < Stage
         | 
| 3 | 
            +
                def initialize(allowed)
         | 
| 4 | 
            +
                  @allowed = allowed
         | 
| 5 | 
            +
                  @sent = 0
         | 
| 6 | 
            +
                  super()
         | 
| 7 | 
            +
                end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                def process
         | 
| 10 | 
            +
                  while @sent < @allowed
         | 
| 11 | 
            +
                    handle_value input
         | 
| 12 | 
            +
                    @sent += 1
         | 
| 13 | 
            +
                  end
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                 def reset
         | 
| 17 | 
            +
                   @sent = 0
         | 
| 18 | 
            +
                   super()
         | 
| 19 | 
            +
                 end
         | 
| 20 | 
            +
              end
         | 
| 21 | 
            +
            end
         | 
    
        data/lib/sugar.rb
    CHANGED
    
    
    
        data/stages.gemspec
    CHANGED
    
    | @@ -5,11 +5,11 @@ | |
| 5 5 |  | 
| 6 6 | 
             
            Gem::Specification.new do |s|
         | 
| 7 7 | 
             
              s.name = "stages"
         | 
| 8 | 
            -
              s.version = "1. | 
| 8 | 
            +
              s.version = "1.1.1"
         | 
| 9 9 |  | 
| 10 10 | 
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         | 
| 11 11 | 
             
              s.authors = ["Nathan D Acuff"]
         | 
| 12 | 
            -
              s.date = "2013- | 
| 12 | 
            +
              s.date = "2013-08-21"
         | 
| 13 13 | 
             
              s.description = "pipeline builder"
         | 
| 14 14 | 
             
              s.email = "support@igodigital.com"
         | 
| 15 15 | 
             
              s.extra_rdoc_files = [
         | 
| @@ -17,6 +17,7 @@ Gem::Specification.new do |s| | |
| 17 17 | 
             
              ]
         | 
| 18 18 | 
             
              s.files = [
         | 
| 19 19 | 
             
                ".autotest",
         | 
| 20 | 
            +
                ".travis.yml",
         | 
| 20 21 | 
             
                "Gemfile",
         | 
| 21 22 | 
             
                "Gemfile.lock",
         | 
| 22 23 | 
             
                "README.md",
         | 
| @@ -33,6 +34,7 @@ Gem::Specification.new do |s| | |
| 33 34 | 
             
                "lib/stages/exhaust.rb",
         | 
| 34 35 | 
             
                "lib/stages/exhaust_count.rb",
         | 
| 35 36 | 
             
                "lib/stages/feeder.rb",
         | 
| 37 | 
            +
                "lib/stages/limit.rb",
         | 
| 36 38 | 
             
                "lib/stages/map.rb",
         | 
| 37 39 | 
             
                "lib/stages/select.rb",
         | 
| 38 40 | 
             
                "lib/stages/unique.rb",
         | 
    
        data/test/test_pipeline.rb
    CHANGED
    
    | @@ -61,9 +61,30 @@ class TestPipeline < MiniTest::Unit::TestCase | |
| 61 61 | 
             
                assert_equal(2, pipeline.run)
         | 
| 62 62 | 
             
              end
         | 
| 63 63 |  | 
| 64 | 
            +
              test 'reset resets limit' do
         | 
| 65 | 
            +
                pipeline = Each.new([1, 2, 3, 4, 5]) | Limit.new(2)
         | 
| 66 | 
            +
                assert_equal(1, pipeline.run)
         | 
| 67 | 
            +
                assert_equal(2, pipeline.run)
         | 
| 68 | 
            +
                pipeline.reset
         | 
| 69 | 
            +
                assert_equal(1, pipeline.run)
         | 
| 70 | 
            +
                assert_equal(2, pipeline.run)
         | 
| 71 | 
            +
                assert_equal(:stages_eos, pipeline.run)
         | 
| 72 | 
            +
              end
         | 
| 73 | 
            +
             | 
| 64 74 | 
             
              test 'nil stages are skipped/no-ops' do
         | 
| 65 75 | 
             
                pipeline = Evens.new | nil | Select.new{ |x| x > 3}
         | 
| 66 76 | 
             
                assert_equal(4, pipeline.run)
         | 
| 67 77 | 
             
                assert_equal(6, pipeline.run)
         | 
| 68 78 | 
             
              end
         | 
| 79 | 
            +
             | 
| 80 | 
            +
              test "pipeline as enum" do
         | 
| 81 | 
            +
                pipeline = Each.new([1,2,3,4,5]) | Select.new{ |x| x % 2 == 0}
         | 
| 82 | 
            +
                output = pipeline.map{ |x| x }
         | 
| 83 | 
            +
                assert_equal([2,4], output)
         | 
| 84 | 
            +
             | 
| 85 | 
            +
                pipeline.reset
         | 
| 86 | 
            +
                pipeline.each_slice(2) do |thing|
         | 
| 87 | 
            +
                  assert_equal([2, 4], thing)
         | 
| 88 | 
            +
                end
         | 
| 89 | 
            +
              end
         | 
| 69 90 | 
             
            end
         | 
    
        data/test/test_stages.rb
    CHANGED
    
    | @@ -164,6 +164,27 @@ class TestStages < MiniTest::Unit::TestCase | |
| 164 164 | 
             
                assert pipeline.done?
         | 
| 165 165 | 
             
              end
         | 
| 166 166 |  | 
| 167 | 
            +
              test 'each with input and incoming data prepends given data' do
         | 
| 168 | 
            +
                pipeline = Emit.new([1,2,3]) | Each.new([4,5,6]) | Exhaust.new
         | 
| 169 | 
            +
                assert_equal([4,5,6,1,2,3], pipeline.run)
         | 
| 170 | 
            +
              end
         | 
| 171 | 
            +
             | 
| 172 | 
            +
              test 'limit stage only ticks X times' do
         | 
| 173 | 
            +
                pipeline = Each.new([1,2,3,4,4]) | Limit.new(2) | Exhaust.new
         | 
| 174 | 
            +
                assert_equal([1,2], pipeline.run)
         | 
| 175 | 
            +
              end
         | 
| 176 | 
            +
             | 
| 177 | 
            +
              test "stage as enum" do
         | 
| 178 | 
            +
                pipeline = Each.new([1,2,3,4,5])
         | 
| 179 | 
            +
                output = pipeline.to_enum.map{ |x| x }
         | 
| 180 | 
            +
                assert_equal([1,2,3,4,5], output)
         | 
| 181 | 
            +
             | 
| 182 | 
            +
                pipeline.reset
         | 
| 183 | 
            +
                output = []
         | 
| 184 | 
            +
                pipeline.to_enum.each_slice(2){ |x| output << x }
         | 
| 185 | 
            +
                assert_equal([[1,2],[3,4],[5]], output)
         | 
| 186 | 
            +
              end
         | 
| 187 | 
            +
             | 
| 167 188 | 
             
              def sing
         | 
| 168 189 | 
             
                { :do => 'doe a deer a female deer',
         | 
| 169 190 | 
             
                  :re => 'ray a drop of golden sun',
         | 
    
        data/test/test_syntax.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -2,7 +2,7 @@ | |
| 2 2 | 
             
            name: stages
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 4 | 
             
              prerelease: 
         | 
| 5 | 
            -
              version: 1. | 
| 5 | 
            +
              version: 1.1.1
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors: 
         | 
| 8 8 | 
             
            - Nathan D Acuff
         | 
| @@ -10,7 +10,7 @@ autorequire: | |
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 12 |  | 
| 13 | 
            -
            date: 2013- | 
| 13 | 
            +
            date: 2013-08-21 00:00:00 Z
         | 
| 14 14 | 
             
            dependencies: 
         | 
| 15 15 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| 16 16 | 
             
              name: rake
         | 
| @@ -33,6 +33,7 @@ extra_rdoc_files: | |
| 33 33 | 
             
            - README.md
         | 
| 34 34 | 
             
            files: 
         | 
| 35 35 | 
             
            - .autotest
         | 
| 36 | 
            +
            - .travis.yml
         | 
| 36 37 | 
             
            - Gemfile
         | 
| 37 38 | 
             
            - Gemfile.lock
         | 
| 38 39 | 
             
            - README.md
         | 
| @@ -49,6 +50,7 @@ files: | |
| 49 50 | 
             
            - lib/stages/exhaust.rb
         | 
| 50 51 | 
             
            - lib/stages/exhaust_count.rb
         | 
| 51 52 | 
             
            - lib/stages/feeder.rb
         | 
| 53 | 
            +
            - lib/stages/limit.rb
         | 
| 52 54 | 
             
            - lib/stages/map.rb
         | 
| 53 55 | 
             
            - lib/stages/select.rb
         | 
| 54 56 | 
             
            - lib/stages/unique.rb
         | 
| @@ -72,7 +74,7 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 72 74 | 
             
              requirements: 
         | 
| 73 75 | 
             
              - - ">="
         | 
| 74 76 | 
             
                - !ruby/object:Gem::Version 
         | 
| 75 | 
            -
                  hash:  | 
| 77 | 
            +
                  hash: 730254182358055923
         | 
| 76 78 | 
             
                  segments: 
         | 
| 77 79 | 
             
                  - 0
         | 
| 78 80 | 
             
                  version: "0"
         |