Sha256: b07f613cd11bfefbedffd0da95ccf74aded811037bcb3f07af8af4fffbe24a3d

Contents?: true

Size: 891 Bytes

Versions: 4

Compression:

Stored size: 891 Bytes

Contents

  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
  require 'state_pattern'

    def wait(seconds)
      seconds.downto(1) do |i|
        print " #{i}"
        $stdout.flush
        sleep 1
      end
    end

    class Stop < StatePattern::State
      def next
        wait 3
        transition_to(Go)
      end

      def color
        "Red"
      end
    end

    class Go < StatePattern::State
      def next
        wait 2
        transition_to(Caution)
      end

      def color
        "Green"
      end
    end

    class Caution < StatePattern::State
      def next
        wait 1
        transition_to(Stop)
      end

      def color
        "Amber"
      end
    end

  class TrafficSemaphore
    include StatePattern
    set_initial_state Stop
  end

  semaphore = TrafficSemaphore.new

  loop do
    print semaphore.color
    semaphore.next
    puts
  end


Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
state_pattern-2.0.2 ./examples/semaphore.rb
state_pattern-2.0.1 ./examples/semaphore.rb
state_pattern-2.0.0 ./examples/semaphore.rb
state_pattern-1.3.0 ./examples/semaphore.rb