diff options
author | Kyrylo Silin <silin@kyrylo.org> | 2021-03-28 00:51:10 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-28 00:51:10 +0200 |
commit | 438ce376b0b0f1ca501d6a712d1b26ca0dde5c15 (patch) | |
tree | b967e89282ef85f6020e7e719a90908e37bc95e0 | |
parent | cee7b4d5b43c682cc37fb2cb52c4bf4168551fdd (diff) | |
parent | 8b5a70b234433c5533dab7bfa468a4be5056f38e (diff) | |
download | pry-438ce376b0b0f1ca501d6a712d1b26ca0dde5c15.tar.gz |
Merge pull request #2154 from xjunior/patch-1
Escape non-printing characters
-rw-r--r-- | lib/pry/helpers/text.rb | 10 | ||||
-rw-r--r-- | spec/commands/wtf_spec.rb | 38 |
2 files changed, 24 insertions, 24 deletions
diff --git a/lib/pry/helpers/text.rb b/lib/pry/helpers/text.rb index b1fee03f..b7301e99 100644 --- a/lib/pry/helpers/text.rb +++ b/lib/pry/helpers/text.rb @@ -21,20 +21,20 @@ class Pry COLORS.each_pair do |color, value| define_method color do |text| - "\033[0;#{30 + value}m#{text}\033[0m" + "\001\033[0;#{30 + value}m\002#{text}\001\033[0m\002" end define_method "bright_#{color}" do |text| - "\033[1;#{30 + value}m#{text}\033[0m" + "\001\033[1;#{30 + value}m\002#{text}\001\033[0m\002" end COLORS.each_pair do |bg_color, bg_value| define_method "#{color}_on_#{bg_color}" do |text| - "\033[0;#{30 + value};#{40 + bg_value}m#{text}\033[0m" + "\001\033[0;#{30 + value};#{40 + bg_value}m\002#{text}\001\033[0m\002" end define_method "bright_#{color}_on_#{bg_color}" do |text| - "\033[1;#{30 + value};#{40 + bg_value}m#{text}\033[0m" + "\001\033[1;#{30 + value};#{40 + bg_value}m\002#{text}\001\033[0m\002" end end end @@ -52,7 +52,7 @@ class Pry # @param [String, #to_s] text # @return [String] _text_ def bold(text) - "\e[1m#{text}\e[0m" + "\001\e[1m\002#{text}\001\e[0m\002" end # Returns `text` in the default foreground colour. diff --git a/spec/commands/wtf_spec.rb b/spec/commands/wtf_spec.rb index 52ad0251..c4af0cc5 100644 --- a/spec/commands/wtf_spec.rb +++ b/spec/commands/wtf_spec.rb @@ -38,7 +38,7 @@ RSpec.describe Pry::Command::Wtf do it "prints only a part of the exception backtrace" do subject.process expect(subject.output.string).to eq( - "\e[1mException:\e[0m RuntimeError: oops\n" \ + "\001\e[1m\002Exception:\001\e[0m\002 RuntimeError: oops\n" \ "--\n" \ "0: /bin/pry:23:in `<main>'\n" \ "1: /bin/pry:23:in `<main>'\n" \ @@ -55,7 +55,7 @@ RSpec.describe Pry::Command::Wtf do it "prints full exception backtrace" do subject.process expect(subject.output.string).to eq( - "\e[1mException:\e[0m RuntimeError: oops\n" \ + "\001\e[1m\002Exception:\001\e[0m\002 RuntimeError: oops\n" \ "--\n" \ "0: /bin/pry:23:in `<main>'\n" \ "1: /bin/pry:23:in `<main>'\n" \ @@ -73,7 +73,7 @@ RSpec.describe Pry::Command::Wtf do it "prints more of backtrace" do subject.process expect(subject.output.string).to eq( - "\e[1mException:\e[0m RuntimeError: oops\n" \ + "\001\e[1m\002Exception:\001\e[0m\002 RuntimeError: oops\n" \ "--\n" \ "0: /bin/pry:23:in `<main>'\n" \ "1: /bin/pry:23:in `<main>'\n" \ @@ -116,14 +116,14 @@ RSpec.describe Pry::Command::Wtf do it "prints parts of both original and nested exception backtrace" do subject.process expect(subject.output.string).to eq( - "\e[1mException:\e[0m RuntimeError: outer\n" \ + "\001\e[1m\002Exception:\001\e[0m\002 RuntimeError: outer\n" \ "--\n" \ "0: /bin/pry:23:in `<main>'\n" \ "1: /bin/pry:23:in `<main>'\n" \ "2: /bin/pry:23:in `<main>'\n" \ "3: /bin/pry:23:in `<main>'\n" \ "4: /bin/pry:23:in `<main>'\n" \ - "\e[1mCaused by:\e[0m RuntimeError: inner\n" \ + "\001\e[1m\002Caused by:\001\e[0m\002 RuntimeError: inner\n" \ "--\n" \ "0: /bin/pry:23:in `<main>'\n" \ "1: /bin/pry:23:in `<main>'\n" \ @@ -140,7 +140,7 @@ RSpec.describe Pry::Command::Wtf do it "prints both original and nested exception backtrace" do subject.process expect(subject.output.string).to eq( - "\e[1mException:\e[0m RuntimeError: outer\n" \ + "\001\e[1m\002Exception:\001\e[0m\002 RuntimeError: outer\n" \ "--\n" \ "0: /bin/pry:23:in `<main>'\n" \ "1: /bin/pry:23:in `<main>'\n" \ @@ -148,7 +148,7 @@ RSpec.describe Pry::Command::Wtf do "3: /bin/pry:23:in `<main>'\n" \ "4: /bin/pry:23:in `<main>'\n" \ "5: /bin/pry:23:in `<main>'\n" \ - "\e[1mCaused by:\e[0m RuntimeError: inner\n" \ + "\001\e[1m\002Caused by:\001\e[0m\002 RuntimeError: inner\n" \ "--\n" \ "0: /bin/pry:23:in `<main>'\n" \ "1: /bin/pry:23:in `<main>'\n" \ @@ -177,17 +177,17 @@ RSpec.describe Pry::Command::Wtf do it "prints lines of code that exception frame references" do subject.process expect(subject.output.string).to eq( - "\e[1mException:\e[0m RuntimeError: oops\n" \ + "\001\e[1m\002Exception:\001\e[0m\002 RuntimeError: oops\n" \ "--\n" \ - "0: \e[1m#{__FILE__}:168:in `<main>'\e[0m\n" \ + "0: \001\e[1m\002#{__FILE__}:168:in `<main>'\001\e[0m\002\n" \ " Array.new(6) { \"\#{__FILE__}:\#{__LINE__}:in `<main>'\" }\n" \ - "1: \e[1m#{__FILE__}:168:in `<main>'\e[0m\n" \ + "1: \001\e[1m\002#{__FILE__}:168:in `<main>'\001\e[0m\002\n" \ " Array.new(6) { \"\#{__FILE__}:\#{__LINE__}:in `<main>'\" }\n" \ - "2: \e[1m#{__FILE__}:168:in `<main>'\e[0m\n" \ + "2: \001\e[1m\002#{__FILE__}:168:in `<main>'\001\e[0m\002\n" \ " Array.new(6) { \"\#{__FILE__}:\#{__LINE__}:in `<main>'\" }\n" \ - "3: \e[1m#{__FILE__}:168:in `<main>'\e[0m\n" \ + "3: \001\e[1m\002#{__FILE__}:168:in `<main>'\001\e[0m\002\n" \ " Array.new(6) { \"\#{__FILE__}:\#{__LINE__}:in `<main>'\" }\n" \ - "4: \e[1m#{__FILE__}:168:in `<main>'\e[0m\n" \ + "4: \001\e[1m\002#{__FILE__}:168:in `<main>'\001\e[0m\002\n" \ " Array.new(6) { \"\#{__FILE__}:\#{__LINE__}:in `<main>'\" }\n" ) end @@ -200,13 +200,13 @@ RSpec.describe Pry::Command::Wtf do it "skips code and prints only the backtrace frame" do subject.process expect(subject.output.string).to eq( - "\e[1mException:\e[0m RuntimeError: oops\n" \ + "\001\e[1m\002Exception:\001\e[0m\002 RuntimeError: oops\n" \ "--\n" \ - "0: \e[1m#{__FILE__}:168:in `<main>'\e[0m\n" \ - "1: \e[1m#{__FILE__}:168:in `<main>'\e[0m\n" \ - "2: \e[1m#{__FILE__}:168:in `<main>'\e[0m\n" \ - "3: \e[1m#{__FILE__}:168:in `<main>'\e[0m\n" \ - "4: \e[1m#{__FILE__}:168:in `<main>'\e[0m\n" + "0: \001\e[1m\002#{__FILE__}:168:in `<main>'\001\e[0m\002\n" \ + "1: \001\e[1m\002#{__FILE__}:168:in `<main>'\001\e[0m\002\n" \ + "2: \001\e[1m\002#{__FILE__}:168:in `<main>'\001\e[0m\002\n" \ + "3: \001\e[1m\002#{__FILE__}:168:in `<main>'\001\e[0m\002\n" \ + "4: \001\e[1m\002#{__FILE__}:168:in `<main>'\001\e[0m\002\n" ) end end |