Implement `ask' recipe keyword

This commit is contained in:
Thibault Jouan
2013-12-22 23:54:19 +00:00
parent 70109615c8
commit 7e062e06a1
7 changed files with 114 additions and 1 deletions

View File

@@ -0,0 +1,21 @@
module Producer
module Core
class Prompter
attr_reader :input, :output
def initialize(input, output)
@input = input
@output = output
end
def prompt(question, choices)
cs = choices.each_with_index.inject('') do |m, (c, i)|
m += "#{i}: #{c}\n"
end
output.puts "#{question}\n#{cs}Choice:"
choice = input.gets
choices[choice.to_i]
end
end
end
end

View File

@@ -32,6 +32,10 @@ module Producer
@condition = Condition.evaluate(@env, &block) if block
@condition
end
def ask(question, choices, prompter: Prompter)
prompter.new(env.input, env.output).prompt(question, choices)
end
end
end
end