From db607ed3305fa4fa82269aa792a4118134bb3d6c Mon Sep 17 00:00:00 2001 From: pvincent Date: Sun, 9 Jun 2024 19:11:16 +0400 Subject: [PATCH] ansi_filter --- lib/formatters/ansi_filter.rb | 44 ++++++++++++++++++++++------------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/lib/formatters/ansi_filter.rb b/lib/formatters/ansi_filter.rb index f5f1f92..38d3439 100644 --- a/lib/formatters/ansi_filter.rb +++ b/lib/formatters/ansi_filter.rb @@ -1,32 +1,44 @@ require_relative 'ansi_dimensions' +require_relative 'ansi_colors' # filter log message module AnsiFilter $memory = nil + + CHAR_FATAL = '⯶'.freeze + def self.reject(log) # log.name == 'ScoresController' || false false end def self.alter(log) - if log.name == 'Rails' && log.message - log.message.chomp!('') - if log.message.starts_with?('Started') - rails = '╓─╖' - rails = "╓#{$memory}╖" if $memory - log.dimensions = AnsiDimensions.new(rails:) - $memory = nil - elsif log.message.starts_with?('Completed 2') - log.dimensions = AnsiDimensions.new(rails: '╙─╜', after: 2) - elsif log.message.starts_with?('Completed 3') - $memory = '║' - log.dimensions = AnsiDimensions.new(rails: "╙#{$memory}╜") - elsif log.message.starts_with?('Completed 4') - log.dimensions = AnsiDimensions.new(rails: '╙╨╜') - elsif log.message.starts_with?('Completed 5') - log.dimensions = AnsiDimensions.new(rails: '╙⯶╜') + if log.name == 'Rails' + if log.message + log.message.chomp!('') + if log.message.starts_with?('Started') + rails = '╓─╖' + rails = "╓#{$memory}╖" if $memory + log.dimensions = AnsiDimensions.new(rails:) + $memory = nil + elsif log.message.starts_with?('Completed 2') + log.dimensions = AnsiDimensions.new(rails: '╙─╜', after: 2) + elsif log.message.starts_with?('Completed 3') + $memory = '║' + log.dimensions = AnsiDimensions.new(rails: "╙#{$memory}╜") + elsif log.message.starts_with?('Completed 4') + log.dimensions = AnsiDimensions.new(rails: '╙╨╜') + elsif log.message.starts_with?('Completed 5') + log.dimensions = AnsiDimensions.new(rails: "╙#{draw_fatal}╜") + end + elsif log.exception + log.dimensions = AnsiDimensions.new(rails: "╓#{draw_fatal(log.level.to_s.chr.upcase)}╖", after: 2) end end log end + + private_class_method def self.draw_fatal(char = CHAR_FATAL) + AnsiColors::BG_MAGENTA + AnsiColors::BOLD + AnsiColors::TEXT_WHITE + char + AnsiColors::CLEAR + end end