Sha256: d4b5e5e7cb7fdc7a0116ba920a644e5f07caebcb809c186c993e732be3eed774

Contents?: true

Size: 1.97 KB

Versions: 12

Compression:

Stored size: 1.97 KB

Contents

# Author::    Eric Crane  (mailto:eric.crane@mac.com)
# Copyright:: Copyright (c) 2024 Eric Crane.  All rights reserved.
#
# CLI input.
#
require 'active_support'
require 'colorize'
require 'colorized_string'
require 'inquirer'
require "reline"

module Gloo
  module App
    class Prompt

      #
      # Set up Prompt.
      #
      def initialize platform
        @platform = platform
      end

      #
      # Show the prompt and get input.
      # Use the default prompt if none is provided.
      #
      def ask( prompt=nil )
        prompt ||= default_prompt

        response = Reline.readline( "#{prompt} ", true)

        # I don't like this one because it appends a ':' to the prompt.
        # response = Ask.input prompt

        # This was just the brute force way to do it.
        # puts prompt
        # return $stdin.gets.chomp

        return response
      end

      # 
      # Prompt for multiline input.
      # 
      def multiline( prompt )
        puts 'To end input, type a period on a line by itself.'
        text = Reline.readmultiline( "#{prompt} ", true ) do |input|
          input.split.last == '.'
        end
    
        return text.lines[0..-2]
      end

      # 
      # Confirmation prompt.
      # Answer is yes or no.
      # 
      def yes?( prompt )
        value = Ask.confirm "#{prompt} "
        return value
      end

      # 
      # Show a selection list to choose from.
      # 
      def select( prompt, options )
        i = Ask.list prompt, options
        return options[ i ]
      end


      # ---------------------------------------------------------------------
      #    Private Functions
      # ---------------------------------------------------------------------

      private

      #
      # Get the default prompt text.
      #
      def default_prompt
        dt = DateTime.now
        d = dt.strftime( '%Y.%m.%d' )
        t = dt.strftime( '%I:%M:%S' )
        return "#{'gloo'.blue} #{d.yellow} #{t.white} >"
      end

    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
gloo-3.10.1 lib/gloo/app/prompt.rb
gloo-3.10.0 lib/gloo/app/prompt.rb
gloo-3.9.1 lib/gloo/app/prompt.rb
gloo-3.9.0 lib/gloo/app/prompt.rb
gloo-3.8.0 lib/gloo/app/prompt.rb
gloo-3.7.0 lib/gloo/app/prompt.rb
gloo-3.6.2 lib/gloo/app/prompt.rb
gloo-3.6.1 lib/gloo/app/prompt.rb
gloo-3.6.0 lib/gloo/app/prompt.rb
gloo-3.5.0 lib/gloo/app/prompt.rb
gloo-3.4.1 lib/gloo/app/prompt.rb
gloo-3.4.0 lib/gloo/app/prompt.rb