From 33222dbc543b600c91621770f34d62cd81903c32 Mon Sep 17 00:00:00 2001 From: Matijs van Zuijlen Date: Thu, 30 May 2019 17:24:05 +0200 Subject: [PATCH] Replace problematic AnsiColor module with simple implementation Backport from master --- lib/aruba/colorizer.rb | 109 +++---------------------------- lib/aruba/platforms/announcer.rb | 2 +- 2 files changed, 11 insertions(+), 100 deletions(-) diff --git a/lib/aruba/colorizer.rb b/lib/aruba/colorizer.rb index 2db79c710..fc479c68d 100644 --- a/lib/aruba/colorizer.rb +++ b/lib/aruba/colorizer.rb @@ -1,108 +1,19 @@ +# Aruba module Aruba - # The ANSIColor module can be used for namespacing and mixed into your own - # classes. - module AnsiColor - # :stopdoc: - ATTRIBUTES = [ - [ :clear , 0 ], - [ :reset , 0 ], # synonym for :clear - [ :bold , 1 ], - [ :dark , 2 ], - [ :italic , 3 ], # not widely implemented - [ :underline , 4 ], - [ :underscore , 4 ], # synonym for :underline - [ :blink , 5 ], - [ :rapid_blink , 6 ], # not widely implemented - [ :negative , 7 ], # no reverse because of String#reverse - [ :concealed , 8 ], - [ :strikethrough, 9 ], # not widely implemented - [ :black , 30 ], - [ :red , 31 ], - [ :green , 32 ], - [ :yellow , 33 ], - [ :blue , 34 ], - [ :magenta , 35 ], - [ :cyan , 36 ], - [ :white , 37 ], - [ :on_black , 40 ], - [ :on_red , 41 ], - [ :on_green , 42 ], - [ :on_yellow , 43 ], - [ :on_blue , 44 ], - [ :on_magenta , 45 ], - [ :on_cyan , 46 ], - [ :on_white , 47 ] - ].freeze - - ATTRIBUTE_NAMES = ATTRIBUTES.transpose.first - # :startdoc: - - # Returns true, if the coloring function of this module - # is switched on, false otherwise. - def self.coloring? - @coloring - end - - # Turns the coloring on or off globally, so you can easily do - # this for example: - # Cucumber::Term::ANSIColor::coloring = STDOUT.isatty - def self.coloring=(val) - @coloring = val - end - self.coloring = true - - ATTRIBUTES.each do |c, v| - define_method(c) do |string| - result = '' - result << "\e[#{v}m" if Aruba::AnsiColor.coloring? - if block_given? - result << yield - elsif string - result << string - elsif respond_to?(:to_str) - result << to_str - else - return result #only switch on - end - result << "\e[0m" if Aruba::AnsiColor.coloring? - result - end - end - - # Regular expression that is used to scan for ANSI-sequences while - # uncoloring strings. - COLORED_REGEXP = /\e\[(?:[34][0-7]|[0-9])?m/ + # Simple colorizer class. Only supports the color cyan + class Colorizer + class << self + attr_accessor :coloring - def self.included(klass) - if klass == String - ATTRIBUTES.delete(:clear) - ATTRIBUTE_NAMES.delete(:clear) - end + alias coloring? coloring end - # Returns an uncolored version of the string, that is all - # ANSI-sequences are stripped from the string. - def uncolored(string = nil) # :yields: - if block_given? - yield.gsub(COLORED_REGEXP, '') - elsif string - string.gsub(COLORED_REGEXP, '') - elsif respond_to?(:to_str) - to_str.gsub(COLORED_REGEXP, '') + def cyan(string) + if self.class.coloring? + "\e[36m#{string}\e[0m" else - '' + string end end - - # Returns an array of all Aruba::Platforms::AnsiColor attributes as symbols. - def attributes - ATTRIBUTE_NAMES - end - end -end - -module Aruba - class Colorizer - include Aruba::AnsiColor end end diff --git a/lib/aruba/platforms/announcer.rb b/lib/aruba/platforms/announcer.rb index 9b6a65b43..778b56115 100644 --- a/lib/aruba/platforms/announcer.rb +++ b/lib/aruba/platforms/announcer.rb @@ -1,7 +1,7 @@ require 'shellwords' require 'aruba/colorizer' -Aruba::AnsiColor.coloring = false if !STDOUT.tty? && !ENV.key?("AUTOTEST") +Aruba::Colorizer.coloring = false if !STDOUT.tty? && !ENV.key?("AUTOTEST") # Aruba module Aruba