149 lines
4.3 KiB
Diff
149 lines
4.3 KiB
Diff
From 33222dbc543b600c91621770f34d62cd81903c32 Mon Sep 17 00:00:00 2001
|
|
From: Matijs van Zuijlen <matijs@matijs.net>
|
|
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
|