Sha256: 795fae443aaee28a221bca01d6ea6d93c4a32b8bca919f11dbd883c0ed2518a9

Contents?: true

Size: 949 Bytes

Versions: 1

Compression:

Stored size: 949 Bytes

Contents

require 'colorize'

module Sord
  module Logging
    @@hooks = []

    def self.generic(kind, header, msg, item)
      if item
        puts "#{header} (#{item.path.light_white}) #{msg}"
      else
        puts "#{header} #{msg}"
      end

      invoke_hooks(kind, msg, item)
    end

    def self.warn(msg, item=nil)
      generic(:warn, '[WARN ]'.yellow, msg, item)
    end

    def self.error(msg, item=nil)
      generic(:error, '[ERROR]'.red, msg, item)
    end

    def self.infer(msg, item=nil)
      generic(:infer, '[INFER]'.light_blue, msg, item)
    end

    def self.omit(msg, item=nil)
      generic(:omit, '[OMIT ]'.magenta, msg, item)
    end

    def self.done(msg, item=nil)
      generic(:done, '[DONE ]'.green, msg, item)
    end

    def self.invoke_hooks(type, msg, item)
      @@hooks.each do |hook|
        hook.(type, msg, item) rescue nil
      end
    end

    def self.add_hook(&blk)
      @@hooks << blk
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sord-0.1.0 lib/sord/logging.rb