class Stairs::Step::Choice

Attributes

block[R]
choices[R]
question[R]

Public Class Methods

new(question, choices = %w(Y N), &block) click to toggle source

TODO: shouldn't care about case?

# File lib/stairs/step.rb, line 126
def initialize(question, choices = %w(Y N), &block)
  @question = question
  @choices = choices
  @block = block
end

Public Instance Methods

run() click to toggle source
# File lib/stairs/step.rb, line 132
def run
  block.call processed_response if block
  processed_response
end

Private Instance Methods

processed_response() click to toggle source
# File lib/stairs/step.rb, line 145
def processed_response
  @processed_response ||= case response
                          when 'Y'
                            true
                          when 'N'
                            false
                          else
                            response
                          end
end
prompt() click to toggle source
# File lib/stairs/step.rb, line 141
def prompt
  "#{question} (#{choices.join('/')}): "
end
response() click to toggle source
# File lib/stairs/step.rb, line 156
def response
  @reponse ||= Stairs::Util::CLI.collect prompt.blue do |value, _i|
    choices.include? value
  end
end