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]} "