lib/multi_process/logger.rb in multi_process-1.1.1 vs lib/multi_process/logger.rb in multi_process-1.2.0
- old
+ new
@@ -1,5 +1,7 @@
+# frozen_string_literal: true
+
module MultiProcess
# Can create pipes and multiplex pipe content to put into
# given IO objects e.g. multiple output from multiple
# processes to current stdout.
#
@@ -10,11 +12,11 @@
# default created logger pipes.
# @param err [IO] IO to push formatted output from
# error sources.
#
def initialize(*args)
- @opts = Hash === args.last ? args.pop : {}
+ @opts = args.last.is_a?(Hash) ? args.pop : {}
@out = args[0] || $stdout
@err = args[1] || $stderr
@colwidth = 0
@@ -23,16 +25,16 @@
protected
def received(process, name, line)
case name
- when :err, :stderr
- output process, line, io: @err, delimiter: 'E>'
- when :out, :stdout
- output process, line
- when :sys
- output(process, line, delimiter: '$>') if @opts[:sys]
+ when :err, :stderr
+ output process, line, io: @err, delimiter: 'E>'
+ when :out, :stdout
+ output process, line
+ when :sys
+ output(process, line, delimiter: '$>') if @opts[:sys]
end
end
def connected(process, _)
@colwidth = [process.title.to_s.length, @colwidth].max
@@ -47,18 +49,16 @@
end
private
def output(process, line, opts = {})
- opts[:delimiter] ||= ' |'
+ opts[:delimiter] ||= ' |'
name = if opts[:name]
opts[:name].to_s.dup
+ elsif process
+ process.title.to_s.rjust(@colwidth, ' ')
else
- if process
- process.title.to_s.rjust(@colwidth, ' ')
- else
- (' ' * @colwidth)
- end
+ (' ' * @colwidth)
end
io = opts[:io] || @out
if @last_name == name && collapse?
io.print " #{' ' * name.length} #{opts[:delimiter]} "