Sha256: 1a2eb3ed028805ca49e8abdb67a3ca85667faf51e3c1928fdbecd3e9ead93d59

Contents?: true

Size: 912 Bytes

Versions: 9

Compression:

Stored size: 912 Bytes

Contents

require 'logirel/queries/query'

module Logirel
  module Queries
    class StrQ < Query
      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

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

      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
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
logirel-0.1.6 lib/logirel/queries/str_q.rb
logirel-0.1.5 lib/logirel/queries/str_q.rb
logirel-0.1.4 lib/logirel/queries/str_q.rb
logirel-0.1.3 lib/logirel/queries/str_q.rb
logirel-0.1.2 lib/logirel/queries/str_q.rb
logirel-0.1.1 lib/logirel/queries/str_q.rb
logirel-0.1.0 lib/logirel/queries/str_q.rb
logirel-0.0.18 lib/logirel/queries/str_q.rb
logirel-0.0.17 lib/logirel/queries/str_q.rb