@@ -100,27 +100,20 @@ pub fn serialize_identifier(value: &str, css: &mut ~str) {
100100 let mut c = iter. next ( ) . unwrap ( ) ;
101101 if c == '-' {
102102 c = match iter. next ( ) {
103- None => {
104- css. push_str ( "\\ -" ) ;
105- return
106- }
107- Some ( c) => {
108- css. push_char ( '-' ) ;
109- c
110- } ,
103+ None => { css. push_str ( "\\ -" ) ; return } ,
104+ Some ( c) => { css. push_char ( '-' ) ; c } ,
111105 }
112106 } ;
113- match c {
114- 'A' ..'Z' | 'a' ..'z' | '_' => css. push_char ( c) ,
115- _ if c > '\x7F' => css. push_char ( c) ,
116- '\n' => css. push_str ( "\\ A " ) ,
117- '\r' => css. push_str ( "\\ D " ) ,
118- '\x0C' => css. push_str ( "\\ C " ) ,
119- '0' ..'9' => css. push_str ( format ! ( "\\ \\ 3{} " , c) ) ,
120- _ => { css. push_char ( '\\' ) ; css. push_char ( c) } ,
121- }
107+ serialize_char ( c, css, /* is_start = */ true ) ;
122108 for c in iter {
109+ serialize_char ( c, css, /* is_start = */ false ) ;
110+ }
111+
112+ #[ inline]
113+ fn serialize_char ( c : char , css : & mut ~str , is_start : bool ) {
123114 match c {
115+ '0' ..'9' if is_start => css. push_str ( format ! ( "\\ \\ 3{} " , c) ) ,
116+ '-' if is_start => css. push_str ( "\\ -" ) ,
124117 '0' ..'9' | 'A' ..'Z' | 'a' ..'z' | '_' | '-' => css. push_char ( c) ,
125118 _ if c > '\x7F' => css. push_char ( c) ,
126119 '\n' => css. push_str ( "\\ A " ) ,
0 commit comments