@@ -87,78 +87,78 @@ describe "colorize" do
8787 end
8888
8989 it " colorizes foreground" do
90- colorize(" hello" ).black.to_s.should eq(" \e [30mhello\e [0m " )
91- colorize(" hello" ).red.to_s.should eq(" \e [31mhello\e [0m " )
92- colorize(" hello" ).green.to_s.should eq(" \e [32mhello\e [0m " )
93- colorize(" hello" ).yellow.to_s.should eq(" \e [33mhello\e [0m " )
94- colorize(" hello" ).blue.to_s.should eq(" \e [34mhello\e [0m " )
95- colorize(" hello" ).magenta.to_s.should eq(" \e [35mhello\e [0m " )
96- colorize(" hello" ).cyan.to_s.should eq(" \e [36mhello\e [0m " )
97- colorize(" hello" ).light_gray.to_s.should eq(" \e [37mhello\e [0m " )
98- colorize(" hello" ).dark_gray.to_s.should eq(" \e [90mhello\e [0m " )
99- colorize(" hello" ).light_red.to_s.should eq(" \e [91mhello\e [0m " )
100- colorize(" hello" ).light_green.to_s.should eq(" \e [92mhello\e [0m " )
101- colorize(" hello" ).light_yellow.to_s.should eq(" \e [93mhello\e [0m " )
102- colorize(" hello" ).light_blue.to_s.should eq(" \e [94mhello\e [0m " )
103- colorize(" hello" ).light_magenta.to_s.should eq(" \e [95mhello\e [0m " )
104- colorize(" hello" ).light_cyan.to_s.should eq(" \e [96mhello\e [0m " )
105- colorize(" hello" ).white.to_s.should eq(" \e [97mhello\e [0m " )
90+ colorize(" hello" ).black.to_s.should eq(" \e [30mhello\e [39m " )
91+ colorize(" hello" ).red.to_s.should eq(" \e [31mhello\e [39m " )
92+ colorize(" hello" ).green.to_s.should eq(" \e [32mhello\e [39m " )
93+ colorize(" hello" ).yellow.to_s.should eq(" \e [33mhello\e [39m " )
94+ colorize(" hello" ).blue.to_s.should eq(" \e [34mhello\e [39m " )
95+ colorize(" hello" ).magenta.to_s.should eq(" \e [35mhello\e [39m " )
96+ colorize(" hello" ).cyan.to_s.should eq(" \e [36mhello\e [39m " )
97+ colorize(" hello" ).light_gray.to_s.should eq(" \e [37mhello\e [39m " )
98+ colorize(" hello" ).dark_gray.to_s.should eq(" \e [90mhello\e [39m " )
99+ colorize(" hello" ).light_red.to_s.should eq(" \e [91mhello\e [39m " )
100+ colorize(" hello" ).light_green.to_s.should eq(" \e [92mhello\e [39m " )
101+ colorize(" hello" ).light_yellow.to_s.should eq(" \e [93mhello\e [39m " )
102+ colorize(" hello" ).light_blue.to_s.should eq(" \e [94mhello\e [39m " )
103+ colorize(" hello" ).light_magenta.to_s.should eq(" \e [95mhello\e [39m " )
104+ colorize(" hello" ).light_cyan.to_s.should eq(" \e [96mhello\e [39m " )
105+ colorize(" hello" ).white.to_s.should eq(" \e [97mhello\e [39m " )
106106 end
107107
108108 it " colorizes foreground with 8-bit color" do
109- colorize(" hello" ).fore(Colorize ::Color256 .new(123 u8 )).to_s.should eq(" \e [38;5;123mhello\e [0m " )
110- colorize(" hello" ).fore(123 u8 ).to_s.should eq(" \e [38;5;123mhello\e [0m " )
111- colorize(" hello" , 123 _u8 ).to_s.should eq(" \e [38;5;123mhello\e [0m " )
109+ colorize(" hello" ).fore(Colorize ::Color256 .new(123 u8 )).to_s.should eq(" \e [38;5;123mhello\e [39m " )
110+ colorize(" hello" ).fore(123 u8 ).to_s.should eq(" \e [38;5;123mhello\e [39m " )
111+ colorize(" hello" , 123 _u8 ).to_s.should eq(" \e [38;5;123mhello\e [39m " )
112112 end
113113
114114 it " colorizes foreground with true color" do
115- colorize(" hello" ).fore(Colorize ::ColorRGB .new(12 u8 , 34 u8 , 56 u8 )).to_s.should eq(" \e [38;2;12;34;56mhello\e [0m " )
116- colorize(" hello" ).fore(12 u8 , 34 u8 , 56 u8 ).to_s.should eq(" \e [38;2;12;34;56mhello\e [0m " )
117- colorize(" hello" , 12 u8 , 34 u8 , 56 u8 ).to_s.should eq(" \e [38;2;12;34;56mhello\e [0m " )
115+ colorize(" hello" ).fore(Colorize ::ColorRGB .new(12 u8 , 34 u8 , 56 u8 )).to_s.should eq(" \e [38;2;12;34;56mhello\e [39m " )
116+ colorize(" hello" ).fore(12 u8 , 34 u8 , 56 u8 ).to_s.should eq(" \e [38;2;12;34;56mhello\e [39m " )
117+ colorize(" hello" , 12 u8 , 34 u8 , 56 u8 ).to_s.should eq(" \e [38;2;12;34;56mhello\e [39m " )
118118 end
119119
120120 it " colorizes background" do
121- colorize(" hello" ).on_black.to_s.should eq(" \e [40mhello\e [0m " )
122- colorize(" hello" ).on_red.to_s.should eq(" \e [41mhello\e [0m " )
123- colorize(" hello" ).on_green.to_s.should eq(" \e [42mhello\e [0m " )
124- colorize(" hello" ).on_yellow.to_s.should eq(" \e [43mhello\e [0m " )
125- colorize(" hello" ).on_blue.to_s.should eq(" \e [44mhello\e [0m " )
126- colorize(" hello" ).on_magenta.to_s.should eq(" \e [45mhello\e [0m " )
127- colorize(" hello" ).on_cyan.to_s.should eq(" \e [46mhello\e [0m " )
128- colorize(" hello" ).on_light_gray.to_s.should eq(" \e [47mhello\e [0m " )
129- colorize(" hello" ).on_dark_gray.to_s.should eq(" \e [100mhello\e [0m " )
130- colorize(" hello" ).on_light_red.to_s.should eq(" \e [101mhello\e [0m " )
131- colorize(" hello" ).on_light_green.to_s.should eq(" \e [102mhello\e [0m " )
132- colorize(" hello" ).on_light_yellow.to_s.should eq(" \e [103mhello\e [0m " )
133- colorize(" hello" ).on_light_blue.to_s.should eq(" \e [104mhello\e [0m " )
134- colorize(" hello" ).on_light_magenta.to_s.should eq(" \e [105mhello\e [0m " )
135- colorize(" hello" ).on_light_cyan.to_s.should eq(" \e [106mhello\e [0m " )
136- colorize(" hello" ).on_white.to_s.should eq(" \e [107mhello\e [0m " )
121+ colorize(" hello" ).on_black.to_s.should eq(" \e [40mhello\e [49m " )
122+ colorize(" hello" ).on_red.to_s.should eq(" \e [41mhello\e [49m " )
123+ colorize(" hello" ).on_green.to_s.should eq(" \e [42mhello\e [49m " )
124+ colorize(" hello" ).on_yellow.to_s.should eq(" \e [43mhello\e [49m " )
125+ colorize(" hello" ).on_blue.to_s.should eq(" \e [44mhello\e [49m " )
126+ colorize(" hello" ).on_magenta.to_s.should eq(" \e [45mhello\e [49m " )
127+ colorize(" hello" ).on_cyan.to_s.should eq(" \e [46mhello\e [49m " )
128+ colorize(" hello" ).on_light_gray.to_s.should eq(" \e [47mhello\e [49m " )
129+ colorize(" hello" ).on_dark_gray.to_s.should eq(" \e [100mhello\e [49m " )
130+ colorize(" hello" ).on_light_red.to_s.should eq(" \e [101mhello\e [49m " )
131+ colorize(" hello" ).on_light_green.to_s.should eq(" \e [102mhello\e [49m " )
132+ colorize(" hello" ).on_light_yellow.to_s.should eq(" \e [103mhello\e [49m " )
133+ colorize(" hello" ).on_light_blue.to_s.should eq(" \e [104mhello\e [49m " )
134+ colorize(" hello" ).on_light_magenta.to_s.should eq(" \e [105mhello\e [49m " )
135+ colorize(" hello" ).on_light_cyan.to_s.should eq(" \e [106mhello\e [49m " )
136+ colorize(" hello" ).on_white.to_s.should eq(" \e [107mhello\e [49m " )
137137 end
138138
139139 it " colorizes background with 8-bit color" do
140- colorize(" hello" ).back(Colorize ::Color256 .new(123 u8 )).to_s.should eq(" \e [48;5;123mhello\e [0m " )
141- colorize(" hello" ).back(123 u8 ).to_s.should eq(" \e [48;5;123mhello\e [0m " )
140+ colorize(" hello" ).back(Colorize ::Color256 .new(123 u8 )).to_s.should eq(" \e [48;5;123mhello\e [49m " )
141+ colorize(" hello" ).back(123 u8 ).to_s.should eq(" \e [48;5;123mhello\e [49m " )
142142 end
143143
144144 it " colorizes background with true color" do
145- colorize(" hello" ).back(Colorize ::ColorRGB .new(12 u8 , 34 u8 , 56 u8 )).to_s.should eq(" \e [48;2;12;34;56mhello\e [0m " )
146- colorize(" hello" ).back(12 u8 , 34 u8 , 56 u8 ).to_s.should eq(" \e [48;2;12;34;56mhello\e [0m " )
145+ colorize(" hello" ).back(Colorize ::ColorRGB .new(12 u8 , 34 u8 , 56 u8 )).to_s.should eq(" \e [48;2;12;34;56mhello\e [49m " )
146+ colorize(" hello" ).back(12 u8 , 34 u8 , 56 u8 ).to_s.should eq(" \e [48;2;12;34;56mhello\e [49m " )
147147 end
148148
149149 it " colorizes mode" do
150- colorize(" hello" ).bold.to_s.should eq(" \e [1mhello\e [0m " )
151- colorize(" hello" ).bright.to_s.should eq(" \e [1mhello\e [0m " )
152- colorize(" hello" ).dim.to_s.should eq(" \e [2mhello\e [0m " )
153- colorize(" hello" ).italic.to_s.should eq(" \e [3mhello\e [0m " )
154- colorize(" hello" ).underline.to_s.should eq(" \e [4mhello\e [0m " )
155- colorize(" hello" ).blink.to_s.should eq(" \e [5mhello\e [0m " )
156- colorize(" hello" ).blink_fast.to_s.should eq(" \e [6mhello\e [0m " )
157- colorize(" hello" ).reverse.to_s.should eq(" \e [7mhello\e [0m " )
158- colorize(" hello" ).hidden.to_s.should eq(" \e [8mhello\e [0m " )
159- colorize(" hello" ).strikethrough.to_s.should eq(" \e [9mhello\e [0m " )
160- colorize(" hello" ).double_underline.to_s.should eq(" \e [21mhello\e [0m " )
161- colorize(" hello" ).overline.to_s.should eq(" \e [53mhello\e [0m " )
150+ colorize(" hello" ).bold.to_s.should eq(" \e [1mhello\e [22m " )
151+ colorize(" hello" ).bright.to_s.should eq(" \e [1mhello\e [22m " )
152+ colorize(" hello" ).dim.to_s.should eq(" \e [2mhello\e [22m " )
153+ colorize(" hello" ).italic.to_s.should eq(" \e [3mhello\e [23m " )
154+ colorize(" hello" ).underline.to_s.should eq(" \e [4mhello\e [24m " )
155+ colorize(" hello" ).blink.to_s.should eq(" \e [5mhello\e [25m " )
156+ colorize(" hello" ).blink_fast.to_s.should eq(" \e [6mhello\e [26m " )
157+ colorize(" hello" ).reverse.to_s.should eq(" \e [7mhello\e [27m " )
158+ colorize(" hello" ).hidden.to_s.should eq(" \e [8mhello\e [28m " )
159+ colorize(" hello" ).strikethrough.to_s.should eq(" \e [9mhello\e [29m " )
160+ colorize(" hello" ).double_underline.to_s.should eq(" \e [21mhello\e [24m " )
161+ colorize(" hello" ).overline.to_s.should eq(" \e [53mhello\e [55m " )
162162 end
163163
164164 it " prints colorize ANSI escape codes" do
@@ -182,24 +182,24 @@ describe "colorize" do
182182 end
183183
184184 it " colorizes mode combination" do
185- colorize(" hello" ).bold.dim.underline.blink.reverse.hidden.to_s.should eq(" \e [1;2;4;5;7;8mhello\e [0m " )
185+ 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 " )
186186 end
187187
188188 it " colorizes foreground with background" do
189- colorize(" hello" ).blue.on_green.to_s.should eq(" \e [34;42mhello\e [0m " )
189+ colorize(" hello" ).blue.on_green.to_s.should eq(" \e [34;42mhello\e [39;49m " )
190190 end
191191
192192 it " colorizes foreground with background with mode" do
193- colorize(" hello" ).blue.on_green.bold.to_s.should eq(" \e [34;42;1mhello\e [0m " )
193+ colorize(" hello" ).blue.on_green.bold.to_s.should eq(" \e [34;42;1mhello\e [39;49;22m " )
194194 end
195195
196196 it " colorizes foreground with symbol" do
197- colorize(" hello" , :red ).to_s.should eq(" \e [31mhello\e [0m " )
198- colorize(" hello" ).fore(:red ).to_s.should eq(" \e [31mhello\e [0m " )
197+ colorize(" hello" , :red ).to_s.should eq(" \e [31mhello\e [39m " )
198+ colorize(" hello" ).fore(:red ).to_s.should eq(" \e [31mhello\e [39m " )
199199 end
200200
201201 it " colorizes mode with symbol" do
202- colorize(" hello" ).mode(:bold ).to_s.should eq(" \e [1mhello\e [0m " )
202+ colorize(" hello" ).mode(:bold ).to_s.should eq(" \e [1mhello\e [22m " )
203203 end
204204
205205 it " raises on unknown foreground color" do
@@ -215,7 +215,7 @@ describe "colorize" do
215215 end
216216
217217 it " inspects" do
218- colorize(" hello" , :red ).inspect.should eq(" \e [31m\" hello\"\e [0m " )
218+ colorize(" hello" , :red ).inspect.should eq(" \e [31m\" hello\"\e [39m " )
219219 end
220220
221221 it " colorizes with surround" do
@@ -227,7 +227,7 @@ describe "colorize" do
227227 end
228228 io << " bye"
229229 end
230- io.to_s.should eq(" \e [31mhello\e [0 ;32mworld\e [0 ;31mbye\e [0m " )
230+ io.to_s.should eq(" \e [31mhello\e [39 ;32mworld\e [39 ;31mbye\e [39m " )
231231 end
232232
233233 it " colorizes with surround and reset" do
@@ -239,7 +239,7 @@ describe "colorize" do
239239 end
240240 io << " bye"
241241 end
242- io.to_s.should eq(" \e [31mhello\e [0 ;32;1mworld\e [0; 31mbye\e [0m " )
242+ io.to_s.should eq(" \e [31mhello\e [39 ;32;1mworld\e [39;22; 31mbye\e [39m " )
243243 end
244244
245245 it " colorizes with surround and no reset" do
@@ -251,7 +251,7 @@ describe "colorize" do
251251 end
252252 io << " bye"
253253 end
254- io.to_s.should eq(" \e [31mhelloworldbye\e [0m " )
254+ io.to_s.should eq(" \e [31mhelloworldbye\e [39m " )
255255 end
256256
257257 it " colorizes with surround and default" do
@@ -263,11 +263,11 @@ describe "colorize" do
263263 end
264264 io << " bye"
265265 end
266- io.to_s.should eq(" \e [31mhello\e [0mworld \e [31mbye\e [0m " )
266+ io.to_s.should eq(" \e [31mhello\e [39mworld \e [31mbye\e [39m " )
267267 end
268268
269269 it " colorizes with to_s" do
270- colorize(ColorizeToS .new).red.to_s.should eq(" \e [31mhello\e [0 ;34mworld\e [0 ;31mbye\e [0m " )
270+ colorize(ColorizeToS .new).red.to_s.should eq(" \e [31mhello\e [39 ;34mworld\e [39 ;31mbye\e [39m " )
271271 end
272272
273273 it " toggles off" do
@@ -276,6 +276,13 @@ describe "colorize" do
276276 end
277277
278278 it " toggles off and on" do
279- colorize(" hello" ).toggle(false ).black.toggle(true ).to_s.should eq(" \e [30mhello\e [0m" )
279+ colorize(" hello" ).toggle(false ).black.toggle(true ).to_s.should eq(" \e [30mhello\e [39m" )
280+ end
281+
282+ it " colorizes nested strings" do
283+ colorize(" hello #{ colorize(" foo" ).red } bar" ).underline.to_s.should eq(" \e [4mhello \e [31mfoo\e [39m bar\e [24m" )
284+
285+ # TODO: Ideally this should work
286+ # colorize("hello #{colorize("foo").red} bar").green.to_s.should eq "\e[32mhello \e[39m\e[31mfoo\e[39m\e[32m bar\e[39m"
280287 end
281288end
0 commit comments