Class: Logirel::Queries::StrQ

Inherits:
Query
  • Object
show all
Defined in:
lib/logirel/queries/str_q.rb

Instance Attribute Summary

Attributes inherited from Query

#default, #question

Instance Method Summary collapse

Constructor Details

#initialize(question, default = nil, io_source = STDIN, validator = nil, io_target = STDOUT) ⇒ StrQ

Returns a new instance of StrQ.



6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/logirel/queries/str_q.rb', line 6

def initialize(question,
    default = nil,
    io_source = STDIN,
    validator = nil,
    io_target = STDOUT)
  @question = question
  @default = default
  @io_source = io_source
  @validator = validator || lambda { |_| true }
  @io_target = io_target
  @answer = ""
end

Instance Method Details

#answerObject



19
20
21
# File 'lib/logirel/queries/str_q.rb', line 19

def answer
  @answer.empty? ? @default : @answer
end

#execObject



23
24
25
26
27
28
29
30
31
32
33
# File 'lib/logirel/queries/str_q.rb', line 23

def exec
  @io_target.print @question + " [#{@default}]: "

  begin
    @answer = @io_source.gets.chomp
    valid = @validator.call(@answer)
  end while !valid || (!valid && @answer.empty?)
  @answer = @answer.empty? ? @default : @answer
  @io_target.puts "Chose '#{@answer}'."
  @answer
end