Sha256: 9254959b9045f210b37dee2691fb3e968190b29244e653506707e06f7112ceca
Contents?: true
Size: 1006 Bytes
Versions: 1
Compression:
Stored size: 1006 Bytes
Contents
module Stairs module Util module CLI class << self def get(prompt) print prompt response = $stdin.gets.strip response.present? ? response : nil end def collect(*args, &block) Collector.new(*args, &block).run end end class Collector def initialize(prompt, options = {}, &block) @prompt = prompt @options = options.reverse_merge required: true @validator = block end def run times = 0 value = nil until valid?(value, times) value = CLI.get(prompt.blue) times += 1 end value end private def valid?(value, times) if validator validator.call(value, times) else !!value || (!options[:required] && times > 0) end end attr_reader :prompt, :options, :validator end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
stairs-0.10.0 | lib/stairs/util/cli.rb |