Class: Morpheus::Logging::DarkPrinter

Inherits:
Object
  • Object
show all
Includes:
Term::ANSIColor
Defined in:
lib/morpheus/logging.rb

Overview

An IO class for printing debugging info This is used as a proxy for ::RestClient.log printing right now.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(io, color = nil, is_dark = true) ⇒ DarkPrinter

Returns a new instance of DarkPrinter.



137
138
139
140
141
# File 'lib/morpheus/logging.rb', line 137

def initialize(io, color=nil, is_dark=true)
  @io = io # || $stdout
  @color = color # || cyan
  @is_dark = is_dark
end

Instance Attribute Details

#colorObject

String

ansi color code for output. Default is dark



118
119
120
# File 'lib/morpheus/logging.rb', line 118

def color
  @color
end

#ioObject

IO

to write to



115
116
117
# File 'lib/morpheus/logging.rb', line 115

def io
  @io
end

Class Method Details

.<<(*messages) ⇒ Object



133
134
135
# File 'lib/morpheus/logging.rb', line 133

def self.<<(*messages)
  instance.<<(*messages)
end

.instanceObject

DarkPrinter with io STDOUT



121
122
123
# File 'lib/morpheus/logging.rb', line 121

def self.instance
  @instance ||= self.new(STDOUT, nil, true)
end


125
126
127
# File 'lib/morpheus/logging.rb', line 125

def self.print(*messages)
  instance.print(*messages)
end

.puts(*messages) ⇒ Object



129
130
131
# File 'lib/morpheus/logging.rb', line 129

def self.puts(*messages)
  instance.puts(*messages)
end

Instance Method Details

#<<(*messages) ⇒ Object



179
180
181
# File 'lib/morpheus/logging.rb', line 179

def <<(*messages)
  print(*messages)
end


159
160
161
162
163
164
165
166
167
# File 'lib/morpheus/logging.rb', line 159

def print(*messages)
  if @io
    print_with_color do
      messages.flatten.each do |msg|
        @io.print scrub_message(msg)
      end
    end
  end
end


147
148
149
150
151
152
153
154
155
156
157
# File 'lib/morpheus/logging.rb', line 147

def print_with_color(&block)
  if Term::ANSIColor.coloring?
    @io.print Term::ANSIColor.reset
    @io.print @color if @color
    @io.print Term::ANSIColor.dark if @is_dark
  end
  yield
  if Term::ANSIColor.coloring?
    @io.print Term::ANSIColor.reset
  end
end

#puts(*messages) ⇒ Object



169
170
171
172
173
174
175
176
177
# File 'lib/morpheus/logging.rb', line 169

def puts(*messages)
  if @io
    print_with_color do
      messages.flatten.each do |msg|
        @io.puts scrub_message(msg)
      end
    end
  end
end

#scrub_message(msg) ⇒ Object



143
144
145
# File 'lib/morpheus/logging.rb', line 143

def scrub_message(msg)
  Morpheus::Logging.scrub_message(msg)
end