Sha256: 77684b3bb78f36fa2a551069dbdfc768ae7069479a493de6f45d7cb283a0717f

Contents?: true

Size: 913 Bytes

Versions: 7

Compression:

Stored size: 913 Bytes

Contents

require 'cliutils/pretty-io'

module CLIUtils
  #  CLIMessenger Module
  #  Outputs coordinated messages to a variety of targets.
  module Messenging
    include PrettyIO

    # Hook that triggers when this module is included.
    # @param [Object] k The includer object
    # @return [void]
    def self.included(k)
      k.extend(self)
    end

    # Returns a default instance of LoggerDelegator that
    # delegates to STDOUT only.
    # @return [LoggerDelegator]
    def default_instance
      stdout_logger = Logger.new(STDOUT)
      stdout_logger.formatter = proc do |severity, datetime, progname, msg|
        send(severity.downcase, msg)
      end
      
      LoggerDelegator.new(STDOUT: stdout_logger)
    end

    # Singleton method to return (or initialize, if needed)
    # a LoggerDelegator.
    # @return [LoggerDelegator]
    def messenger
      @@messenger ||= default_instance
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
cliutils-1.2.3 lib/cliutils/messenging.rb
cliutils-1.2.2 lib/cliutils/messenging.rb
cliutils-1.2.1 lib/cliutils/messenging.rb
cliutils-1.2.0 lib/cliutils/messenging.rb
cliutils-1.1.1 lib/cliutils/messenging.rb
cliutils-1.1.0 lib/cliutils/messenging.rb
cliutils-1.0.7 lib/cliutils/messenging.rb