Sha256: 1038f574e2888b00e7e31c1bd8e2d811e2ab700488c692db7249bd968fadcb5f

Contents?: true

Size: 1.56 KB

Versions: 4

Compression:

Stored size: 1.56 KB

Contents

require 'thor'
require 'active_support/concern'
require 'colorize'

module Daigaku
  module Terminal

    module Output
      extend ActiveSupport::Concern

      included do
        private

        def say(text)
          output = text.split("\n").map {|line| "\t#{line}" }.join("\n")
          $stdout.puts output
        end

        def empty_line
          $stdout.puts ''
        end

        def get(string)
          $stdout.print "\n\t#{string} "
          $stdin.gets.strip
        end

        def say_info(text)
          say_box(text, ' ℹ', :light_blue)
        end

        def say_warning(text)
          say_box(text, '⚠ ', :light_red)
        end

        def say_box(text, symbol, color)
          empty_line
          say line.send(color)
          empty_line

          indented_text = text.split("\n").join("\n#{' ' * (symbol.length + 1)}")
          say indented_text.prepend("#{symbol} ").send(color)

          empty_line
          say line.send(color)
          empty_line
        end

        def line(symbol = '-')
          symbol * 70
        end

        def get_command(command, description)
          say description

          loop do
            cmd = get '>'

            unless cmd == command
              say "This was something else. Try \"#{command}\"."
              next
            end

            system cmd
            break
          end
        end

        def get_confirm(description)
          say_warning description
          confirm = get '(yes|no)'
          yield if confirm == 'yes' && block_given?
        end
      end
    end

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
daigaku-0.3.0 lib/daigaku/terminal/output.rb
daigaku-0.2.0 lib/daigaku/terminal/output.rb
daigaku-0.1.1 lib/daigaku/terminal/output.rb
daigaku-0.1.0 lib/daigaku/terminal/output.rb