Skip to content

Commit ee74590

Browse files
committed
De-duplicate identifier serializer logic.
1 parent 66acc85 commit ee74590

File tree

1 file changed

+10
-17
lines changed

1 file changed

+10
-17
lines changed

serializer.rs

+10-17
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)