@@ -9,10 +9,10 @@ use std::{
99 sync:: { Arc , Mutex , MutexGuard } ,
1010} ;
1111
12- use anstyle:: AnsiColor ;
13- use anstyle_termcolor:: to_termcolor_color ;
12+ use anstyle:: Style ;
13+ use anstyle_termcolor:: to_termcolor_spec ;
1414use termcolor:: ColorChoice ;
15- use termcolor:: { ColorSpec , StandardStream , StandardStreamLock , WriteColor } ;
15+ use termcolor:: { StandardStream , StandardStreamLock , WriteColor } ;
1616
1717use super :: Process ;
1818#[ cfg( feature = "test" ) ]
@@ -60,12 +60,8 @@ impl ColorableTerminal {
6060 _ => ColorChoice :: Never ,
6161 } ;
6262 let inner = match stream {
63- StreamSelector :: Stdout => {
64- TerminalInner :: StandardStream ( StandardStream :: stdout ( choice) , ColorSpec :: new ( ) )
65- }
66- StreamSelector :: Stderr => {
67- TerminalInner :: StandardStream ( StandardStream :: stderr ( choice) , ColorSpec :: new ( ) )
68- }
63+ StreamSelector :: Stdout => TerminalInner :: StandardStream ( StandardStream :: stdout ( choice) ) ,
64+ StreamSelector :: Stderr => TerminalInner :: StandardStream ( StandardStream :: stderr ( choice) ) ,
6965 #[ cfg( feature = "test" ) ]
7066 StreamSelector :: TestWriter ( w) => TerminalInner :: TestWriter ( w, choice) ,
7167 #[ cfg( all( test, feature = "test" ) ) ]
@@ -99,7 +95,7 @@ impl ColorableTerminal {
9995 addr_of_mut ! ( ( * ptr) . guard) . write ( ( * ptr) . inner . lock ( ) . unwrap ( ) ) ;
10096 // let locked = match *guard {....}
10197 addr_of_mut ! ( ( * ptr) . locked) . write ( match ( * ptr) . guard . deref_mut ( ) {
102- TerminalInner :: StandardStream ( s, _ ) => {
98+ TerminalInner :: StandardStream ( s) => {
10399 let locked = s. lock ( ) ;
104100 TerminalInnerLocked :: StandardStream ( locked)
105101 }
@@ -111,39 +107,17 @@ impl ColorableTerminal {
111107 }
112108 }
113109
114- pub fn fg ( & mut self , color : AnsiColor ) -> io:: Result < ( ) > {
110+ pub fn style ( & mut self , new : & Style ) -> io:: Result < ( ) > {
115111 match self . inner . lock ( ) . unwrap ( ) . deref_mut ( ) {
116- TerminalInner :: StandardStream ( s, spec) => {
117- spec. set_fg ( Some ( to_termcolor_color ( color. into ( ) ) ) ) ;
118- s. set_color ( spec)
119- }
120- #[ cfg( feature = "test" ) ]
121- TerminalInner :: TestWriter ( _, _) => Ok ( ( ) ) ,
122- }
123- }
124-
125- pub fn attr ( & mut self , attr : Attr ) -> io:: Result < ( ) > {
126- match self . inner . lock ( ) . unwrap ( ) . deref_mut ( ) {
127- TerminalInner :: StandardStream ( s, spec) => {
128- match attr {
129- Attr :: Bold => spec. set_bold ( true ) ,
130- Attr :: ForegroundColor ( color) => {
131- spec. set_fg ( Some ( to_termcolor_color ( color. into ( ) ) ) )
132- }
133- } ;
134- s. set_color ( spec)
135- }
112+ TerminalInner :: StandardStream ( s) => s. set_color ( & to_termcolor_spec ( * new) ) ,
136113 #[ cfg( feature = "test" ) ]
137114 TerminalInner :: TestWriter ( _, _) => Ok ( ( ) ) ,
138115 }
139116 }
140117
141118 pub fn reset ( & mut self ) -> io:: Result < ( ) > {
142119 match self . inner . lock ( ) . unwrap ( ) . deref_mut ( ) {
143- TerminalInner :: StandardStream ( s, color) => {
144- color. clear ( ) ;
145- s. reset ( )
146- }
120+ TerminalInner :: StandardStream ( s) => s. reset ( ) ,
147121 #[ cfg( feature = "test" ) ]
148122 TerminalInner :: TestWriter ( _, _) => Ok ( ( ) ) ,
149123 }
@@ -311,7 +285,7 @@ impl TerminalInnerLocked {
311285
312286/// Internal state for ColorableTerminal
313287enum TerminalInner {
314- StandardStream ( StandardStream , ColorSpec ) ,
288+ StandardStream ( StandardStream ) ,
315289 #[ cfg( feature = "test" ) ]
316290 #[ allow( dead_code) ] // ColorChoice only read in test code
317291 TestWriter ( TestWriter , ColorChoice ) ,
@@ -320,7 +294,7 @@ enum TerminalInner {
320294impl TerminalInner {
321295 fn as_write ( & mut self ) -> & mut dyn io:: Write {
322296 match self {
323- TerminalInner :: StandardStream ( s, _ ) => s,
297+ TerminalInner :: StandardStream ( s) => s,
324298 #[ cfg( feature = "test" ) ]
325299 TerminalInner :: TestWriter ( w, _) => w,
326300 }
@@ -358,12 +332,6 @@ impl StreamSelector {
358332 }
359333}
360334
361- #[ derive( Copy , Clone , Debug ) ]
362- pub enum Attr {
363- Bold ,
364- ForegroundColor ( AnsiColor ) ,
365- }
366-
367335#[ cfg( test) ]
368336mod tests {
369337 use std:: collections:: HashMap ;
0 commit comments