Sha256: 7bd64e9cb56ae345bcf9f90501c18d3cdc1a165584bf5a03cd65a1937b8c7d74

Contents?: true

Size: 1.9 KB

Versions: 54

Compression:

Stored size: 1.9 KB

Contents

# -*- coding: utf-8 -*-
#
# Copyright 2013 whiteleaf. All rights reserved.
#

require "termcolorlight"

module Narou
  module Input
    module_function

    #
    # 肯定か否定かの確認を入力
    #
    # default: エンターを押した場合に返ってくる値
    # nontty_default: pipe等から接続された場合に返ってくる値
    # @return: yes = true, no = false
    #
    def confirm(message, default = false, nontty_default = true)
      return nontty_default unless $stdin.tty?
      confirm_msg = "#{message} (y/n)?: "
      print confirm_msg
      while input = $stdin.getch
        puts input
        case input.downcase
        when "y"
          return true
        when "n"
          return false
        else
          return default if input.strip == ""
          print confirm_msg
        end
      end
    end

    #
    # 選択肢を表示して選択させる
    #
    # choices: { 選択肢: 説明 } のハッシュ形式で渡す。選択出来ない状況(pipe等)の場合に返す
    #          値は :default の要素を返す。:default がない場合は先頭の要素
    # @return: 選ばれた選択肢を返す
    #
    # @example:
    #   choices = { "ja" => "日本語", "en" => "English", default: "ja" }
    #   Narou::Input.choose("Title: Select language", "Please select a language?", choices)
    #
    def choose(title, message, choices)
      default = choices[:default] || choices.first[0]
      return default unless $stdin.tty?
      puts title
      puts message
      choices.each do |name, help|
        next if name == :default
        puts "<bold>#{name}</bold>: #{help}".termcolor
      end
      loop do
        print "> "
        input = $stdin.gets.strip.downcase
        if key = choices.keys.delete(input)
          return key
        end
        puts "選択肢の中にありません。もう一度入力して下さい"
      end
    end
  end
end

Version data entries

54 entries across 54 versions & 1 rubygems

Version Path
narou-3.2.5.1 lib/input.rb
narou-3.2.5 lib/input.rb
narou-3.2.4 lib/input.rb
narou-3.2.3 lib/input.rb
narou-3.2.2 lib/input.rb
narou-3.2.1 lib/input.rb
narou-3.2.0.1 lib/input.rb
narou-3.2.0 lib/input.rb
narou-3.1.11 lib/input.rb
narou-3.1.10 lib/input.rb
narou-3.1.9 lib/input.rb
narou-3.1.8 lib/input.rb
narou-3.1.7 lib/input.rb
narou-3.1.6 lib/input.rb
narou-3.1.5 lib/input.rb
narou-3.1.4 lib/input.rb
narou-3.1.3 lib/input.rb
narou-3.1.2 lib/input.rb
narou-3.1.1 lib/input.rb
narou-3.0.5.1 lib/input.rb