Sha256: c1e703cbcafa7552d85e2117b1a35acbfebaa7cb91871e9fdf4b06a230e35fae

Contents?: true

Size: 1003 Bytes

Versions: 4

Compression:

Stored size: 1003 Bytes

Contents

module CSD
  class UI
    
    include Gem::UserInteraction
    
    # These are all possible user interactions provided by the UI
    #
    INTERACTIONS = %w{ separator debug info warn error ask ask_yes_no }
    
    def separator
      say
    end
    
    def debug(message)
      say "DEBUG: #{message}".magenta if Options.debug and !Options.silent
    end
    
    def info(message)
      say message if !Options.silent
    end
    
    def warn(message)
      say message.red if !Options.silent
    end

    def error(message)
      if !Options.silent
        say 'ERROR: '.red.blink + message.red
      end
    end
    
    def die(message)
      say message.red.blink if !Options.silent
      exit
    end
    
    protected
    
    # This is just a convenience wrapper so that +UI.myinteraction+ will map to +CSD.ui.myinteraction+
    #
    def self.method_missing(meth, *args, &block)
      INTERACTIONS.include?(meth.to_s) ? CSD.ui.send(meth.to_sym, *args, &block) : super
    end

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
csd-0.1.2 lib/csd/ui/ui.rb
csd-0.1.1 lib/csd/ui/ui.rb
csd-0.1.0 lib/csd/ui/ui.rb
csd-0.0.16 lib/csd/ui/ui.rb