Sha256: 14aa80eca1eec08e4f9f8be6dd9b141590ea88c36d6e6212eefa867ce85cbd12

Contents?: true

Size: 1.52 KB

Versions: 10

Compression:

Stored size: 1.52 KB

Contents

module Saber
  class UI
    def initialize
      @quiet = false
      @debug = ENV["DEBUG"]
    end

    def info(msg)
      do_info(msg) if !@quiet
    end

    def debug(msg)
      do_debug(msg) if @debug && !@quiet
    end

    def warn(msg)
      do_warn(msg)
    end

    def error(msg)
      do_error(msg)
    end

    # error with exit
    def error!(msg)
      error(msg)
      exit 1
    end

    def confirm(msg)
      do_confirm(msg) if !@quiet
    end

    def say(msg)
      info(msg)
    end

    def be_quiet!
      @quiet = true
    end

    def debug!
      @debug = true
    end

    class Shell < UI
      attr_writer :shell

      def initialize(shell)
        super()
        @shell = shell
      end

      def do_info(msg)
        @shell.say(msg) if !@quiet
      end

      def do_debug(msg)
        @shell.say(msg) if @debug && !@quiet
      end

      def do_warn(msg)
        @shell.say(msg, :yellow)
      end

      def do_error(msg)
        @shell.say(msg, :red)
      end

      def do_confirm(msg)
        @shell.say(msg, :green) if !@quiet
      end
    end

    class Logger < UI
      attr_accessor :logger

      def initialize(logger)
        super()
        @logger = logger
      end

      def do_debug(msg)
        @logger.debug(msg)
      end

      def do_info(msg)
        @logger.info(msg)
      end

      def do_confirm(msg)
        @logger.confirm(msg) 
      end

      def do_warn(msg)
        @logger.warn(msg)
      end

      def do_error(msg)
        @logger.error(msg)
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
saber-1.2.4 lib/saber/ui.rb
saber-1.2.3 lib/saber/ui.rb
saber-1.2.2 lib/saber/ui.rb
saber-1.2.1 lib/saber/ui.rb
saber-1.2.0 lib/saber/ui.rb
saber-1.1.1 lib/saber/ui.rb
saber-1.1.0 lib/saber/ui.rb
saber-1.0.2 lib/saber/ui.rb
saber-1.0.1 lib/saber/ui.rb
saber-1.0.0 lib/saber/ui.rb