Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
141 changes: 74 additions & 67 deletions spec/std/colorize_spec.cr
Original file line number Diff line number Diff line change
Expand Up @@ -87,78 +87,78 @@ describe "colorize" do
end

it "colorizes foreground" do
colorize("hello").black.to_s.should eq("\e[30mhello\e[0m")
colorize("hello").red.to_s.should eq("\e[31mhello\e[0m")
colorize("hello").green.to_s.should eq("\e[32mhello\e[0m")
colorize("hello").yellow.to_s.should eq("\e[33mhello\e[0m")
colorize("hello").blue.to_s.should eq("\e[34mhello\e[0m")
colorize("hello").magenta.to_s.should eq("\e[35mhello\e[0m")
colorize("hello").cyan.to_s.should eq("\e[36mhello\e[0m")
colorize("hello").light_gray.to_s.should eq("\e[37mhello\e[0m")
colorize("hello").dark_gray.to_s.should eq("\e[90mhello\e[0m")
colorize("hello").light_red.to_s.should eq("\e[91mhello\e[0m")
colorize("hello").light_green.to_s.should eq("\e[92mhello\e[0m")
colorize("hello").light_yellow.to_s.should eq("\e[93mhello\e[0m")
colorize("hello").light_blue.to_s.should eq("\e[94mhello\e[0m")
colorize("hello").light_magenta.to_s.should eq("\e[95mhello\e[0m")
colorize("hello").light_cyan.to_s.should eq("\e[96mhello\e[0m")
colorize("hello").white.to_s.should eq("\e[97mhello\e[0m")
colorize("hello").black.to_s.should eq("\e[30mhello\e[39m")
colorize("hello").red.to_s.should eq("\e[31mhello\e[39m")
colorize("hello").green.to_s.should eq("\e[32mhello\e[39m")
colorize("hello").yellow.to_s.should eq("\e[33mhello\e[39m")
colorize("hello").blue.to_s.should eq("\e[34mhello\e[39m")
colorize("hello").magenta.to_s.should eq("\e[35mhello\e[39m")
colorize("hello").cyan.to_s.should eq("\e[36mhello\e[39m")
colorize("hello").light_gray.to_s.should eq("\e[37mhello\e[39m")
colorize("hello").dark_gray.to_s.should eq("\e[90mhello\e[39m")
colorize("hello").light_red.to_s.should eq("\e[91mhello\e[39m")
colorize("hello").light_green.to_s.should eq("\e[92mhello\e[39m")
colorize("hello").light_yellow.to_s.should eq("\e[93mhello\e[39m")
colorize("hello").light_blue.to_s.should eq("\e[94mhello\e[39m")
colorize("hello").light_magenta.to_s.should eq("\e[95mhello\e[39m")
colorize("hello").light_cyan.to_s.should eq("\e[96mhello\e[39m")
colorize("hello").white.to_s.should eq("\e[97mhello\e[39m")
end

it "colorizes foreground with 8-bit color" do
colorize("hello").fore(Colorize::Color256.new(123u8)).to_s.should eq("\e[38;5;123mhello\e[0m")
colorize("hello").fore(123u8).to_s.should eq("\e[38;5;123mhello\e[0m")
colorize("hello", 123_u8).to_s.should eq("\e[38;5;123mhello\e[0m")
colorize("hello").fore(Colorize::Color256.new(123u8)).to_s.should eq("\e[38;5;123mhello\e[39m")
colorize("hello").fore(123u8).to_s.should eq("\e[38;5;123mhello\e[39m")
colorize("hello", 123_u8).to_s.should eq("\e[38;5;123mhello\e[39m")
end

it "colorizes foreground with true color" do
colorize("hello").fore(Colorize::ColorRGB.new(12u8, 34u8, 56u8)).to_s.should eq("\e[38;2;12;34;56mhello\e[0m")
colorize("hello").fore(12u8, 34u8, 56u8).to_s.should eq("\e[38;2;12;34;56mhello\e[0m")
colorize("hello", 12u8, 34u8, 56u8).to_s.should eq("\e[38;2;12;34;56mhello\e[0m")
colorize("hello").fore(Colorize::ColorRGB.new(12u8, 34u8, 56u8)).to_s.should eq("\e[38;2;12;34;56mhello\e[39m")
colorize("hello").fore(12u8, 34u8, 56u8).to_s.should eq("\e[38;2;12;34;56mhello\e[39m")
colorize("hello", 12u8, 34u8, 56u8).to_s.should eq("\e[38;2;12;34;56mhello\e[39m")
end

it "colorizes background" do
colorize("hello").on_black.to_s.should eq("\e[40mhello\e[0m")
colorize("hello").on_red.to_s.should eq("\e[41mhello\e[0m")
colorize("hello").on_green.to_s.should eq("\e[42mhello\e[0m")
colorize("hello").on_yellow.to_s.should eq("\e[43mhello\e[0m")
colorize("hello").on_blue.to_s.should eq("\e[44mhello\e[0m")
colorize("hello").on_magenta.to_s.should eq("\e[45mhello\e[0m")
colorize("hello").on_cyan.to_s.should eq("\e[46mhello\e[0m")
colorize("hello").on_light_gray.to_s.should eq("\e[47mhello\e[0m")
colorize("hello").on_dark_gray.to_s.should eq("\e[100mhello\e[0m")
colorize("hello").on_light_red.to_s.should eq("\e[101mhello\e[0m")
colorize("hello").on_light_green.to_s.should eq("\e[102mhello\e[0m")
colorize("hello").on_light_yellow.to_s.should eq("\e[103mhello\e[0m")
colorize("hello").on_light_blue.to_s.should eq("\e[104mhello\e[0m")
colorize("hello").on_light_magenta.to_s.should eq("\e[105mhello\e[0m")
colorize("hello").on_light_cyan.to_s.should eq("\e[106mhello\e[0m")
colorize("hello").on_white.to_s.should eq("\e[107mhello\e[0m")
colorize("hello").on_black.to_s.should eq("\e[40mhello\e[49m")
colorize("hello").on_red.to_s.should eq("\e[41mhello\e[49m")
colorize("hello").on_green.to_s.should eq("\e[42mhello\e[49m")
colorize("hello").on_yellow.to_s.should eq("\e[43mhello\e[49m")
colorize("hello").on_blue.to_s.should eq("\e[44mhello\e[49m")
colorize("hello").on_magenta.to_s.should eq("\e[45mhello\e[49m")
colorize("hello").on_cyan.to_s.should eq("\e[46mhello\e[49m")
colorize("hello").on_light_gray.to_s.should eq("\e[47mhello\e[49m")
colorize("hello").on_dark_gray.to_s.should eq("\e[100mhello\e[49m")
colorize("hello").on_light_red.to_s.should eq("\e[101mhello\e[49m")
colorize("hello").on_light_green.to_s.should eq("\e[102mhello\e[49m")
colorize("hello").on_light_yellow.to_s.should eq("\e[103mhello\e[49m")
colorize("hello").on_light_blue.to_s.should eq("\e[104mhello\e[49m")
colorize("hello").on_light_magenta.to_s.should eq("\e[105mhello\e[49m")
colorize("hello").on_light_cyan.to_s.should eq("\e[106mhello\e[49m")
colorize("hello").on_white.to_s.should eq("\e[107mhello\e[49m")
end

it "colorizes background with 8-bit color" do
colorize("hello").back(Colorize::Color256.new(123u8)).to_s.should eq("\e[48;5;123mhello\e[0m")
colorize("hello").back(123u8).to_s.should eq("\e[48;5;123mhello\e[0m")
colorize("hello").back(Colorize::Color256.new(123u8)).to_s.should eq("\e[48;5;123mhello\e[49m")
colorize("hello").back(123u8).to_s.should eq("\e[48;5;123mhello\e[49m")
end

it "colorizes background with true color" do
colorize("hello").back(Colorize::ColorRGB.new(12u8, 34u8, 56u8)).to_s.should eq("\e[48;2;12;34;56mhello\e[0m")
colorize("hello").back(12u8, 34u8, 56u8).to_s.should eq("\e[48;2;12;34;56mhello\e[0m")
colorize("hello").back(Colorize::ColorRGB.new(12u8, 34u8, 56u8)).to_s.should eq("\e[48;2;12;34;56mhello\e[49m")
colorize("hello").back(12u8, 34u8, 56u8).to_s.should eq("\e[48;2;12;34;56mhello\e[49m")
end

it "colorizes mode" do
colorize("hello").bold.to_s.should eq("\e[1mhello\e[0m")
colorize("hello").bright.to_s.should eq("\e[1mhello\e[0m")
colorize("hello").dim.to_s.should eq("\e[2mhello\e[0m")
colorize("hello").italic.to_s.should eq("\e[3mhello\e[0m")
colorize("hello").underline.to_s.should eq("\e[4mhello\e[0m")
colorize("hello").blink.to_s.should eq("\e[5mhello\e[0m")
colorize("hello").blink_fast.to_s.should eq("\e[6mhello\e[0m")
colorize("hello").reverse.to_s.should eq("\e[7mhello\e[0m")
colorize("hello").hidden.to_s.should eq("\e[8mhello\e[0m")
colorize("hello").strikethrough.to_s.should eq("\e[9mhello\e[0m")
colorize("hello").double_underline.to_s.should eq("\e[21mhello\e[0m")
colorize("hello").overline.to_s.should eq("\e[53mhello\e[0m")
colorize("hello").bold.to_s.should eq("\e[1mhello\e[22m")
colorize("hello").bright.to_s.should eq("\e[1mhello\e[22m")
colorize("hello").dim.to_s.should eq("\e[2mhello\e[22m")
colorize("hello").italic.to_s.should eq("\e[3mhello\e[23m")
colorize("hello").underline.to_s.should eq("\e[4mhello\e[24m")
colorize("hello").blink.to_s.should eq("\e[5mhello\e[25m")
colorize("hello").blink_fast.to_s.should eq("\e[6mhello\e[26m")
colorize("hello").reverse.to_s.should eq("\e[7mhello\e[27m")
colorize("hello").hidden.to_s.should eq("\e[8mhello\e[28m")
colorize("hello").strikethrough.to_s.should eq("\e[9mhello\e[29m")
colorize("hello").double_underline.to_s.should eq("\e[21mhello\e[24m")
colorize("hello").overline.to_s.should eq("\e[53mhello\e[55m")
end

it "prints colorize ANSI escape codes" do
Expand All @@ -182,24 +182,24 @@ describe "colorize" do
end

it "colorizes mode combination" do
colorize("hello").bold.dim.underline.blink.reverse.hidden.to_s.should eq("\e[1;2;4;5;7;8mhello\e[0m")
colorize("hello").bold.dim.underline.blink.reverse.hidden.to_s.should eq("\e[1;2;4;5;7;8mhello\e[22;22;24;25;27;28m")
end

it "colorizes foreground with background" do
colorize("hello").blue.on_green.to_s.should eq("\e[34;42mhello\e[0m")
colorize("hello").blue.on_green.to_s.should eq("\e[34;42mhello\e[39;49m")
end

it "colorizes foreground with background with mode" do
colorize("hello").blue.on_green.bold.to_s.should eq("\e[34;42;1mhello\e[0m")
colorize("hello").blue.on_green.bold.to_s.should eq("\e[34;42;1mhello\e[39;49;22m")
end

it "colorizes foreground with symbol" do
colorize("hello", :red).to_s.should eq("\e[31mhello\e[0m")
colorize("hello").fore(:red).to_s.should eq("\e[31mhello\e[0m")
colorize("hello", :red).to_s.should eq("\e[31mhello\e[39m")
colorize("hello").fore(:red).to_s.should eq("\e[31mhello\e[39m")
end

it "colorizes mode with symbol" do
colorize("hello").mode(:bold).to_s.should eq("\e[1mhello\e[0m")
colorize("hello").mode(:bold).to_s.should eq("\e[1mhello\e[22m")
end

it "raises on unknown foreground color" do
Expand All @@ -215,7 +215,7 @@ describe "colorize" do
end

it "inspects" do
colorize("hello", :red).inspect.should eq("\e[31m\"hello\"\e[0m")
colorize("hello", :red).inspect.should eq("\e[31m\"hello\"\e[39m")
end

it "colorizes with surround" do
Expand All @@ -227,7 +227,7 @@ describe "colorize" do
end
io << "bye"
end
io.to_s.should eq("\e[31mhello\e[0;32mworld\e[0;31mbye\e[0m")
io.to_s.should eq("\e[31mhello\e[39;32mworld\e[39;31mbye\e[39m")
end

it "colorizes with surround and reset" do
Expand All @@ -239,7 +239,7 @@ describe "colorize" do
end
io << "bye"
end
io.to_s.should eq("\e[31mhello\e[0;32;1mworld\e[0;31mbye\e[0m")
io.to_s.should eq("\e[31mhello\e[39;32;1mworld\e[39;22;31mbye\e[39m")
end

it "colorizes with surround and no reset" do
Expand All @@ -251,7 +251,7 @@ describe "colorize" do
end
io << "bye"
end
io.to_s.should eq("\e[31mhelloworldbye\e[0m")
io.to_s.should eq("\e[31mhelloworldbye\e[39m")
end

it "colorizes with surround and default" do
Expand All @@ -263,11 +263,11 @@ describe "colorize" do
end
io << "bye"
end
io.to_s.should eq("\e[31mhello\e[0mworld\e[31mbye\e[0m")
io.to_s.should eq("\e[31mhello\e[39mworld\e[31mbye\e[39m")
end

it "colorizes with to_s" do
colorize(ColorizeToS.new).red.to_s.should eq("\e[31mhello\e[0;34mworld\e[0;31mbye\e[0m")
colorize(ColorizeToS.new).red.to_s.should eq("\e[31mhello\e[39;34mworld\e[39;31mbye\e[39m")
end

it "toggles off" do
Expand All @@ -276,6 +276,13 @@ describe "colorize" do
end

it "toggles off and on" do
colorize("hello").toggle(false).black.toggle(true).to_s.should eq("\e[30mhello\e[0m")
colorize("hello").toggle(false).black.toggle(true).to_s.should eq("\e[30mhello\e[39m")
end

it "colorizes nested strings" do
colorize("hello #{colorize("foo").red} bar").underline.to_s.should eq("\e[4mhello \e[31mfoo\e[39m bar\e[24m")

# TODO: Ideally this should work
# colorize("hello #{colorize("foo").red} bar").green.to_s.should eq "\e[32mhello \e[39m\e[31mfoo\e[39m\e[32m bar\e[39m"
end
end
104 changes: 52 additions & 52 deletions spec/std/crystal/syntax_highlighter/colorize_spec.cr
Original file line number Diff line number Diff line change
Expand Up @@ -27,29 +27,29 @@ end

describe Crystal::SyntaxHighlighter::Colorize do
describe ".highlight" do
it_highlights %(foo = bar("baz\#{PI + 1}") # comment), %(foo \e[91m=\e[0m bar(\e[93m"baz\#{\e[0m\e[36mPI\e[0m \e[91m+\e[0m \e[35m1\e[0m\e[93m}"\e[0m) \e[90m# comment\e[0m)
it_highlights %(foo = bar("baz\#{PI + 1}") # comment), %(foo \e[91m=\e[39m bar(\e[93m"baz\#{\e[39m\e[36mPI\e[39m \e[91m+\e[39m \e[35m1\e[39m\e[93m}"\e[39m) \e[90m# comment\e[39m)

it_highlights "foo", "foo"
it_highlights "foo bar", "foo bar"
it_highlights "foo\nbar", "foo\nbar"

it_highlights "# foo", %(\e[90m# foo\e[0m)
it_highlights "# bar\n", %(\e[90m# bar\e[0m\n)
it_highlights "# foo\n# bar\n", %(\e[90m# foo\e[0m\n\e[90m# bar\e[0m\n)
it_highlights %(# <">), %(\e[90m# <">\e[0m)
it_highlights "# foo", %(\e[90m# foo\e[39m)
it_highlights "# bar\n", %(\e[90m# bar\e[39m\n)
it_highlights "# foo\n# bar\n", %(\e[90m# foo\e[39m\n\e[90m# bar\e[39m\n)
it_highlights %(# <">), %(\e[90m# <">\e[39m)

it_highlights "42", %(\e[35m42\e[0m)
it_highlights "3.14", %(\e[35m3.14\e[0m)
it_highlights "123_i64", %(\e[35m123_i64\e[0m)
it_highlights "42", %(\e[35m42\e[39m)
it_highlights "3.14", %(\e[35m3.14\e[39m)
it_highlights "123_i64", %(\e[35m123_i64\e[39m)

it_highlights "'a'", %(\e[93m'a'\e[0m)
it_highlights "'<'", %(\e[93m'<'\e[0m)
it_highlights "'a'", %(\e[93m'a'\e[39m)
it_highlights "'<'", %(\e[93m'<'\e[39m)

it_highlights ":foo", %(\e[35m:foo\e[0m)
it_highlights %(:"foo"), %(\e[35m:"foo"\e[0m)
it_highlights ":foo", %(\e[35m:foo\e[39m)
it_highlights %(:"foo"), %(\e[35m:"foo"\e[39m)

it_highlights "Foo", %(\e[36mFoo\e[0m)
it_highlights "Foo::Bar", %(\e[36mFoo\e[0m\e[36m::\e[0m\e[36mBar\e[0m)
it_highlights "Foo", %(\e[36mFoo\e[39m)
it_highlights "Foo::Bar", %(\e[36mFoo\e[39m\e[36m::\e[39m\e[36mBar\e[39m)

%w(
def if else elsif end class module include
Expand All @@ -61,71 +61,71 @@ describe Crystal::SyntaxHighlighter::Colorize do
protected uninitialized instance_sizeof instance_alignof offsetof
annotation verbatim
).each do |kw|
it_highlights kw, %(\e[91m#{kw}\e[0m)
it_highlights kw, %(\e[91m#{kw}\e[39m)
end

it_highlights "self", %(\e[34mself\e[0m)
it_highlights "self", %(\e[34mself\e[39m)

%w(true false nil).each do |lit|
it_highlights lit, %(\e[35m#{lit}\e[0m)
it_highlights lit, %(\e[35m#{lit}\e[39m)
end

it_highlights "def foo", %(\e[91mdef\e[0m \e[92mfoo\e[0m)
it_highlights "def foo", %(\e[91mdef\e[39m \e[92mfoo\e[39m)

%w(
[] []? []= <=>
+ - * /
== < <= > >= != =~ !~
& | ^ ~ ** >> << %
).each do |op|
it_highlights %(def #{op}), %(\e[91mdef\e[0m \e[92m#{op}\e[0m)
it_highlights %(def #{op}), %(\e[91mdef\e[39m \e[92m#{op}\e[39m)
end

it_highlights %(def //), %(\e[91mdef\e[0m \e[92m/\e[0m\e[92m/\e[0m)
it_highlights %(def //), %(\e[91mdef\e[39m \e[92m/\e[39m\e[92m/\e[39m)

%w(
+ - * &+ &- &* &** / // = == < <= > >= ! != =~ !~ & | ^ ~ **
>> << % [] []? []= <=> === && ||
+= -= *= /= //= &= |= ^= **= >>= <<= %= &+= &-= &*= &&= ||=
).each do |op|
it_highlights "1 #{op} 2", %(\e[35m1\e[0m \e[91m#{op}\e[0m \e[35m2\e[0m)
it_highlights "1 #{op} 2", %(\e[35m1\e[39m \e[91m#{op}\e[39m \e[35m2\e[39m)
end

it_highlights %(1/2), %(\e[35m1\e[0m\e[91m/\e[0m\e[35m2\e[0m)
it_highlights %(1 /2), %(\e[35m1\e[0m \e[91m/\e[0m\e[35m2\e[0m)
it_highlights %(1/ 2), %(\e[35m1\e[0m\e[91m/\e[0m \e[35m2\e[0m)
it_highlights %(1/2), %(\e[35m1\e[39m\e[91m/\e[39m\e[35m2\e[39m)
it_highlights %(1 /2), %(\e[35m1\e[39m \e[91m/\e[39m\e[35m2\e[39m)
it_highlights %(1/ 2), %(\e[35m1\e[39m\e[91m/\e[39m \e[35m2\e[39m)

it_highlights %(a/b), %(a\e[91m/\e[0mb)
it_highlights %(a/ b), %(a\e[91m/\e[0m b)
it_highlights %(a / b), %(a \e[91m/\e[0m b)
it_highlights %(a/b), %(a\e[91m/\e[39mb)
it_highlights %(a/ b), %(a\e[91m/\e[39m b)
it_highlights %(a / b), %(a \e[91m/\e[39m b)

it_highlights %(a /b/), %(a \e[93m/b/\e[0m)
it_highlights %(a /b/), %(a \e[93m/b/\e[39m)

it_highlights %($1), %($1)
it_highlights %($2?), %($2?)
it_highlights %($?), %($?)
it_highlights %($~), %($~)

it_highlights %("foo"), %(\e[93m"foo"\e[0m)
it_highlights %("<>"), %(\e[93m"<>"\e[0m)
it_highlights %("foo\#{bar}baz"), %(\e[93m"foo\#{\e[0mbar\e[93m}baz"\e[0m)
it_highlights %("foo\#{[1, bar, "str"]}baz"), %(\e[93m"foo\#{\e[0m[\e[35m1\e[0m, bar, \e[93m"str"\e[0m]\e[93m}baz"\e[0m)
it_highlights %("nest1\#{foo + "nest2\#{1 + 1}bar"}baz"), %(\e[93m"nest1\#{\e[0mfoo \e[91m+\e[0m \e[93m"nest2\#{\e[0m\e[35m1\e[0m \e[91m+\e[0m \e[35m1\e[0m\e[93m}bar"\e[0m\e[93m}baz"\e[0m)
it_highlights "/foo/xim", %(\e[93m/foo/\e[0mxim)
it_highlights "`foo`", %(\e[93m`foo`\e[0m)
it_highlights "%(foo)", %(\e[93m%(foo)\e[0m)
it_highlights "%<foo>", %(\e[93m%<foo>\e[0m)
it_highlights "%q(foo)", %(\e[93m%q(foo)\e[0m)
it_highlights "%Q(foo)", %(\e[93m%Q(foo)\e[0m)
it_highlights "%r(foo)xim", %(\e[93m%r(foo)\e[0mxim)
it_highlights "%x(foo)", %(\e[93m%x(foo)\e[0m)

it_highlights "%w(foo bar baz)", %(\e[93m%w(foo bar baz)\e[0m)
it_highlights "%w(foo bar\n baz)", %(\e[93m%w(foo bar\n baz)\e[0m)
it_highlights "%w<foo bar baz>", %(\e[93m%w<foo bar baz>\e[0m)
it_highlights "%i(foo bar baz)", %(\e[93m%i(foo bar baz)\e[0m)

it_highlights "Set{1, 2, 3}", %(\e[36mSet\e[0m{\e[35m1\e[0m, \e[35m2\e[0m, \e[35m3\e[0m})
it_highlights %("foo"), %(\e[93m"foo"\e[39m)
it_highlights %("<>"), %(\e[93m"<>"\e[39m)
it_highlights %("foo\#{bar}baz"), %(\e[93m"foo\#{\e[39mbar\e[93m}baz"\e[39m)
it_highlights %("foo\#{[1, bar, "str"]}baz"), %(\e[93m"foo\#{\e[39m[\e[35m1\e[39m, bar, \e[93m"str"\e[39m]\e[93m}baz"\e[39m)
it_highlights %("nest1\#{foo + "nest2\#{1 + 1}bar"}baz"), %(\e[93m"nest1\#{\e[39mfoo \e[91m+\e[39m \e[93m"nest2\#{\e[39m\e[35m1\e[39m \e[91m+\e[39m \e[35m1\e[39m\e[93m}bar"\e[39m\e[93m}baz"\e[39m)
it_highlights "/foo/xim", %(\e[93m/foo/\e[39mxim)
it_highlights "`foo`", %(\e[93m`foo`\e[39m)
it_highlights "%(foo)", %(\e[93m%(foo)\e[39m)
it_highlights "%<foo>", %(\e[93m%<foo>\e[39m)
it_highlights "%q(foo)", %(\e[93m%q(foo)\e[39m)
it_highlights "%Q(foo)", %(\e[93m%Q(foo)\e[39m)
it_highlights "%r(foo)xim", %(\e[93m%r(foo)\e[39mxim)
it_highlights "%x(foo)", %(\e[93m%x(foo)\e[39m)

it_highlights "%w(foo bar baz)", %(\e[93m%w(foo bar baz)\e[39m)
it_highlights "%w(foo bar\n baz)", %(\e[93m%w(foo bar\n baz)\e[39m)
it_highlights "%w<foo bar baz>", %(\e[93m%w<foo bar baz>\e[39m)
it_highlights "%i(foo bar baz)", %(\e[93m%i(foo bar baz)\e[39m)

it_highlights "Set{1, 2, 3}", %(\e[36mSet\e[39m{\e[35m1\e[39m, \e[35m2\e[39m, \e[35m3\e[39m})

it_highlights <<-CRYSTAL, <<-ANSI
foo, bar = <<-FOO, <<-BAR
Expand All @@ -134,16 +134,16 @@ describe Crystal::SyntaxHighlighter::Colorize do
bar
BAR
CRYSTAL
foo, bar \e[91m=\e[0m \e[93m<<-FOO\e[0m, \e[93m<<-BAR\e[0m
foo, bar \e[91m=\e[39m \e[93m<<-FOO\e[39m, \e[93m<<-BAR\e[39m
\e[93m foo
FOO\e[0m
FOO\e[39m
\e[93m bar
BAR\e[0m
BAR\e[39m
ANSI
end

describe ".highlight!" do
it_highlights! %(foo = bar("baz\#{PI + 1}") # comment), %(foo \e[91m=\e[0m bar(\e[93m"baz\#{\e[0m\e[36mPI\e[0m \e[91m+\e[0m \e[35m1\e[0m\e[93m}"\e[0m) \e[90m# comment\e[0m)
it_highlights! %(foo = bar("baz\#{PI + 1}") # comment), %(foo \e[91m=\e[39m bar(\e[93m"baz\#{\e[39m\e[36mPI\e[39m \e[91m+\e[39m \e[35m1\e[39m\e[93m}"\e[39m) \e[90m# comment\e[39m)

it_highlights! <<-CRYSTAL
foo, bar = <<-FOO, <<-BAR
Expand Down
Loading