module Inquirer
Constants
- VERSION
Public Instance Methods
prompt(prompts)
click to toggle source
# File lib/inquirer.rb, line 15 def prompt(prompts) answers = {} prompts.each { |prompt| # TODO: maybe use prompt.fetch(:type, :input) ??? prompt[:type] ||= :input prompt_answers = [] if prompt[:when].is_a?(Proc) ask_prompt = prompt[:when].call( answers ) next if !ask_prompt elsif [true, false].include? prompt[:when] next if !prompt[:when] end if !prompt[:repeat].is_a?(Integer) and ![true, false].include? prompt[:repeat] # Boolean check :( prompt[:repeat] = 1 end repeat_prompt = lambda { |repeat_counter| if prompt[:manipulate] && prompt[:manipulate].is_a?(Proc) manipulate_parameter = prompt.merge( answers: answers, repeat_counter: repeat_counter, ) prompt = prompt[:manipulate].call( manipulate_parameter ) next if !prompt end type_parameter = prompt.merge( answers: answers, repeat_counter: repeat_counter, ) object = Kernel.const_get(prompt[:type].to_s.split('_').collect(&:capitalize).join) answer = object.prompt(type_parameter) if prompt[:filter] && prompt[:filter].is_a?(Proc) answer = prompt[:filter].call( answer ) end prompt_answers.push answer } if prompt[:repeat].is_a?(Integer) (1..prompt[:repeat]).each(&repeat_prompt) else begin repeat_counter = 1 loop { repeat_prompt.call(repeat_counter) repeat_counter += 1 } rescue Interrupt end end if prompt[:repeat] == 1 answers[ prompt[:name] ] = prompt_answers.first else answers[ prompt[:name] ] = prompt_answers end } answers end
use_inquirer(describe_block, opts)
click to toggle source
# File lib/inquirer/spec_helpers.rb, line 35 def use_inquirer(describe_block, opts) describe_block.before opts[:with] do IOHelper.reset end describe_block.after opts[:with] do IOHelper.reset end end