summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/pry/helpers/text.rb2
-rw-r--r--spec/helpers/text_spec.rb18
-rw-r--r--spec/pry_repl_spec.rb2
3 files changed, 20 insertions, 2 deletions
diff --git a/lib/pry/helpers/text.rb b/lib/pry/helpers/text.rb
index b7301e99..e004c961 100644
--- a/lib/pry/helpers/text.rb
+++ b/lib/pry/helpers/text.rb
@@ -44,7 +44,7 @@ class Pry
# @param [String, #to_s] text
# @return [String] _text_ stripped of any color codes.
def strip_color(text)
- text.to_s.gsub(/(\001)?\e\[.*?(\d)+m(\002)?/, '')
+ text.to_s.gsub(/(\001)?(\e\[(\d[;\d]?)*m)(\002)?/, '')
end
# Returns _text_ as bold text for use on a terminal.
diff --git a/spec/helpers/text_spec.rb b/spec/helpers/text_spec.rb
new file mode 100644
index 00000000..e45bc8ab
--- /dev/null
+++ b/spec/helpers/text_spec.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+describe Pry::Helpers::Text do
+ describe "#strip_color" do
+ [
+ ["\e[1A\e[0G[2] pry(main)> puts \e[31m\e[1;31m'\e[0m\e[31m"\
+ "hello\e[1;31m'\e[0m\e[31m\e[0m\e[1B\e[0G",
+ "\e[1A\e[0G[2] pry(main)> puts 'hello'\e[1B\e[0G"],
+ ["\e[31m\e[1;31m'\e[0m\e[31mhello\e[1;31m'\e[0m\e[31m\e[0m\e[1B\e[0G",
+ "'hello'\e[1B\e[0G"],
+ %w[string string]
+ ].each do |(text, text_without_color)|
+ it "removes color code from text #{text.inspect}" do
+ expect(subject.strip_color(text)).to eql(text_without_color)
+ end
+ end
+ end
+end
diff --git a/spec/pry_repl_spec.rb b/spec/pry_repl_spec.rb
index 946b92e8..b7f5870a 100644
--- a/spec/pry_repl_spec.rb
+++ b/spec/pry_repl_spec.rb
@@ -135,7 +135,7 @@ loop do
break #note the tab here
end
TAB
- output("do\n break #note the tab here\nend\n\e[1B\e[0G=> nil")
+ output("do\n break #note the tab here\nend\n\e\\[1B\e\\[0G=> nil")
end
end
end