Sha256: 99b625d079828a5c66aa23762fb49156b8226b5a9f55c42c4a3ef22da28bbc4e

Contents?: true

Size: 1.9 KB

Versions: 25

Compression:

Stored size: 1.9 KB

Contents

# frozen_string_literal: true

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

25 entries across 25 versions & 1 rubygems

Version Path
narou-3.9.1 lib/input.rb
narou-3.9.0 lib/input.rb
narou-3.8.2 lib/input.rb
narou-3.8.1 lib/input.rb
narou-3.8.0 lib/input.rb
narou-3.7.2 lib/input.rb
narou-3.7.1 lib/input.rb
narou-3.7.0 lib/input.rb
narou-3.6.0 lib/input.rb
narou-3.5.1 lib/input.rb
narou-3.5.0.1 lib/input.rb
narou-3.5.0 lib/input.rb
narou-3.4.8 lib/input.rb
narou-3.4.7.1 lib/input.rb
narou-3.4.7 lib/input.rb
narou-3.4.6.1 lib/input.rb
narou-3.4.6 lib/input.rb
narou-3.4.5 lib/input.rb
narou-3.4.3 lib/input.rb
narou-3.4.2 lib/input.rb