1- use termcolor:: { ColorSpec , WriteColor } ;
1+ use termcolor:: ColorSpec ;
22use { human, json, Error , Render } ;
33
44/// Construct a new, empty span
@@ -96,7 +96,7 @@ impl Span {
9696
9797impl Render for Span {
9898 fn render_for_humans ( & self , fmt : & mut human:: Formatter ) -> Result < ( ) , Error > {
99- fmt. writer . set_color (
99+ fmt. set_color (
100100 ColorSpec :: new ( )
101101 . set_fg ( self . fg )
102102 . set_bg ( self . bg )
@@ -107,13 +107,17 @@ impl Render for Span {
107107 for item in & self . items {
108108 item. render_for_humans ( fmt) ?;
109109 }
110- fmt. writer . reset ( ) ?;
110+ fmt. reset ( ) ?;
111111 Ok ( ( ) )
112112 }
113113
114114 fn render_json ( & self , fmt : & mut json:: Formatter ) -> Result < ( ) , Error > {
115- for item in & self . items {
116- item. render_json ( fmt) ?;
115+ let len = self . items . len ( ) ;
116+ for i in 0 ..len {
117+ self . items [ i] . render_json ( fmt) ?;
118+ if i < len - 1 {
119+ fmt. write_separator ( ) ?;
120+ }
117121 }
118122 Ok ( ( ) )
119123 }
@@ -138,15 +142,18 @@ mod test {
138142
139143 let json = json:: test ( ) ;
140144 item. render_json ( & mut json. formatter ( ) ) ?;
141- assert_eq ! ( json. to_string( ) , "\" one\" \n \" two\" \n \" three\" \n " ) ;
145+ assert_eq ! ( json. to_string( ) , "\" one\" \n \" two\" \n \" three\" " ) ;
142146 Ok ( ( ) )
143147 }
144148
145149 #[ test]
146150 fn test_colored_output ( ) -> Result < ( ) , Error > {
147151 let test_target = human:: test_with_color ( ) ;
148152 let mut out = :: new ( ) . add_target ( test_target. target ( ) ) ;
153+
149154 out. print ( span ( ) . add_item ( "hello" ) . fg ( "green" ) ?. bg ( "blue" ) ?) ?;
155+ out. flush ( ) ?;
156+
150157 assert_eq ! (
151158 test_target. to_string( ) ,
152159 "\u{1b} [0m\u{1b} [32m\u{1b} [44mhello\u{1b} [0m\n "
@@ -158,7 +165,10 @@ mod test {
158165 fn test_bold_output ( ) -> Result < ( ) , Error > {
159166 let test_target = human:: test_with_color ( ) ;
160167 let mut out = :: new ( ) . add_target ( test_target. target ( ) ) ;
168+
161169 out. print ( span ( ) . add_item ( "hello" ) . bold ( true ) ?) ?;
170+ out. flush ( ) ?;
171+
162172 assert_eq ! (
163173 test_target. to_string( ) ,
164174 "\u{1b} [0m\u{1b} [1mhello\u{1b} [0m\n "
@@ -170,7 +180,10 @@ mod test {
170180 fn test_intense_output ( ) -> Result < ( ) , Error > {
171181 let test_target = human:: test_with_color ( ) ;
172182 let mut out = :: new ( ) . add_target ( test_target. target ( ) ) ;
183+
173184 out. print ( span ( ) . add_item ( "hello" ) . fg ( "green" ) ?. intense ( true ) ?) ?;
185+ out. flush ( ) ?;
186+
174187 assert_eq ! (
175188 test_target. to_string( ) ,
176189 "\u{1b} [0m\u{1b} [38;5;10mhello\u{1b} [0m\n "
@@ -182,7 +195,10 @@ mod test {
182195 fn test_underline_output ( ) -> Result < ( ) , Error > {
183196 let test_target = human:: test_with_color ( ) ;
184197 let mut out = :: new ( ) . add_target ( test_target. target ( ) ) ;
198+
185199 out. print ( span ( ) . add_item ( "hello" ) . underline ( true ) ?) ?;
200+ out. flush ( ) ?;
201+
186202 assert_eq ! (
187203 test_target. to_string( ) ,
188204 "\u{1b} [0m\u{1b} [4mhello\u{1b} [0m\n "
0 commit comments