class Cabin::NiceOutput
Constants
- CODEMAP
- DIM_CODEMAP
- LEVELMAP
Attributes
io[R]
Public Class Methods
new(io)
click to toggle source
# File lib/cabin/nice_output.rb, line 32 def initialize(io) @io = io end
Public Instance Methods
<<(event)
click to toggle source
# File lib/cabin/nice_output.rb, line 36 def <<(event) data = event.clone if data[:exception].respond_to? :data ed = data[:exception].data if ed.kind_of? Hash data = ed.merge( data ) else data[:exception_data] = ed.inspect end end data.delete(:line) data.delete(:file) level = data.delete(:level) || :normal data.delete(:message) ts = data.delete(:timestamp) color = data.delete(:color) # :bold is expected to be truthy bold = data.delete(:bold) ? :bold : nil backtrace = data.delete(:backtrace) if !backtrace && data[:exception].respond_to?(:backtrace) backtrace = data[:exception].backtrace end # Make 'error' and other log levels have color if color.nil? color = LEVELMAP[level] end message = [event[:level] ? '====> ' : ' ',event[:message]] message.unshift(CODEMAP[color.to_sym]) if !color.nil? message << DIM_CODEMAP[color] if !color.nil? if documentation = data.delete(:documentation) message << "\n\tRead more on this topic here: #{documentation}" end if data.any? message << "\n" << pp(data) end if backtrace message << "\n\t--backtrace---------------\n\t" << backtrace.join("\n\t") end message << CODEMAP[:normal] if !color.nil? @io.puts(message.join("")) @io.flush end
Private Instance Methods
pp(hash)
click to toggle source
# File lib/cabin/nice_output.rb, line 85 def pp(hash) hash.map{|k,v| ' '+k.to_s + ": " + pp_value(v) }.join("\n") end
pp_value(value)
click to toggle source
# File lib/cabin/nice_output.rb, line 89 def pp_value(value) case(value) when String if value.include? "\n" return "\n\t" + value.gsub("\n","\n\t") else return value end else return value.inspect end end