Class: Console::Terminal::Logger

Inherits:
Object
  • Object
show all
Defined in:
lib/console/terminal/logger.rb

Constant Summary collapse

UNKNOWN =
'unknown'

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(io = $stderr, verbose: nil, **options) ⇒ Logger

Returns a new instance of Logger.



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/console/terminal/logger.rb', line 38

def initialize(io = $stderr, verbose: nil, **options)
  @io = io
  @start = Time.now
  
  @terminal = Terminal.for(io)
  
  if verbose.nil?
    @verbose = !@terminal.colors?
  else
    @verbose = verbose
  end
  
  @terminal[:logger_prefix] ||= @terminal.style(nil, nil, nil)
  @terminal[:logger_suffix] ||= @terminal.style(:white, nil, :faint)
  @terminal[:debug] = @terminal.style(:cyan)
  @terminal[:info] = @terminal.style(:green)
  @terminal[:warn] = @terminal.style(:yellow)
  @terminal[:error] = @terminal.style(:red)
  @terminal[:fatal] = @terminal[:error]
  
  self.register_defaults(@terminal)
end

Instance Attribute Details

#ioObject (readonly)

Returns the value of attribute io.



61
62
63
# File 'lib/console/terminal/logger.rb', line 61

def io
  @io
end

#startObject (readonly)

Returns the value of attribute start.



63
64
65
# File 'lib/console/terminal/logger.rb', line 63

def start
  @start
end

#terminalObject (readonly)

Returns the value of attribute terminal.



64
65
66
# File 'lib/console/terminal/logger.rb', line 64

def terminal
  @terminal
end

#verboseObject

Returns the value of attribute verbose.



62
63
64
# File 'lib/console/terminal/logger.rb', line 62

def verbose
  @verbose
end

Instance Method Details

#call(subject = nil, *arguments, name: nil, severity: UNKNOWN, &block) ⇒ Object



79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/console/terminal/logger.rb', line 79

def call(subject = nil, *arguments, name: nil, severity: UNKNOWN, &block)
  prefix = build_prefix(name || severity.to_s)
  indent = " " * prefix.size
  
  buffer = Buffer.new("#{indent}| ")
  
  if subject
    format_subject(severity, prefix, subject, buffer)
  end
  
  arguments.each do |argument|
    format_argument(argument, buffer)
  end
  
  if block_given?
    if block.arity.zero?
      format_argument(yield, buffer)
    else
      yield(buffer, @terminal)
    end
  end
  
  @io.write buffer.string
end

#register_defaults(terminal) ⇒ Object



70
71
72
73
74
75
# File 'lib/console/terminal/logger.rb', line 70

def register_defaults(terminal)
  Event.constants.each do |constant|
    klass = Event.const_get(constant)
    klass.register(terminal)
  end
end

#verbose!(value = true) ⇒ Object



66
67
68
# File 'lib/console/terminal/logger.rb', line 66

def verbose!(value = true)
  @verbose = value
end