Implement `ask' recipe keyword
This commit is contained in:
21
lib/producer/core/prompter.rb
Normal file
21
lib/producer/core/prompter.rb
Normal 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
|
@@ -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
|
||||
|
Reference in New Issue
Block a user