Sha256: 7e7a405d8a6cc5b62566ea28bee9b6cf976a45065e362533ee4fe5933ce46971

Contents?: true

Size: 728 Bytes

Versions: 14

Compression:

Stored size: 728 Bytes

Contents

class TrafficLight
  state_machine initial: :stop do
    event :cycle do
      transition stop: :proceed, proceed: :caution, caution: :stop
    end

    state :stop do
      def color(transform)
        value = 'red'

        if block_given?
          yield value
        else
          value.send(transform)
        end

        value
      end
    end

    state all - :proceed do
      def capture_violations?
        true
      end
    end

    state :proceed do
      def color(_transform)
        'green'
      end

      def capture_violations?
        false
      end
    end

    state :caution do
      def color(_transform)
        'yellow'
      end
    end
  end

  def color(transform = :to_s)
    super
  end
end

Version data entries

14 entries across 14 versions & 2 rubygems

Version Path
state_machines-0.5.0 test/files/models/traffic_light.rb
solidus_backend-1.0.0.pre3 vendor/bundle/gems/state_machines-0.2.2/test/files/models/traffic_light.rb
solidus_backend-1.0.0.pre2 vendor/bundle/gems/state_machines-0.2.2/test/files/models/traffic_light.rb
solidus_backend-1.0.0.pre vendor/bundle/gems/state_machines-0.2.2/test/files/models/traffic_light.rb
state_machines-0.4.0 test/files/models/traffic_light.rb
state_machines-0.3.0 test/files/models/traffic_light.rb
state_machines-0.2.2 test/files/models/traffic_light.rb
state_machines-0.2.1 test/files/models/traffic_light.rb
state_machines-0.2.0 test/files/models/traffic_light.rb
state_machines-0.1.4 test/files/models/traffic_light.rb
state_machines-0.1.3 test/files/models/traffic_light.rb
state_machines-0.1.2 test/files/models/traffic_light.rb
state_machines-0.1.1 test/files/models/traffic_light.rb
state_machines-0.1.0 test/files/models/traffic_light.rb