Skip to content

Commit 6d5d0b1

Browse files
committed
---
yaml --- r: 52130 b: refs/heads/dist-snap c: f4bc9e6 h: refs/heads/master v: v3
1 parent cb5fed8 commit 6d5d0b1

File tree

2 files changed

+18
-25
lines changed

2 files changed

+18
-25
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
88
refs/heads/try2: 147ecfdd8221e4a4d4e090486829a06da1e0ca3c
99
refs/heads/incoming: 44d4d6de762f3f9aae1fedcf454c66b79b3ad58d
10-
refs/heads/dist-snap: 51b141e3e499558ddfece1f00dd6714f442c2404
10+
refs/heads/dist-snap: f4bc9e6d57c1e005c6539db59762e4030bd7bd2f
1111
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
1212
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503
1313
refs/heads/try3: 9387340aab40a73e8424c48fd42f0c521a4875c0

branches/dist-snap/src/libcore/extfmt.rs

Lines changed: 17 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -243,31 +243,24 @@ pub mod ct {
243243
}
244244
pub fn parse_flags(s: &str, i: uint, lim: uint) ->
245245
Parsed<~[Flag]> {
246-
let noflags: ~[Flag] = ~[];
247-
if i >= lim { return Parsed::new(move noflags, i); }
248-
249-
fn more(f: Flag, s: &str, i: uint, lim: uint) ->
250-
Parsed<~[Flag]> {
251-
let next = parse_flags(s, i + 1u, lim);
252-
let rest = copy next.val;
253-
let j = next.next;
254-
let curr: ~[Flag] = ~[f];
255-
return Parsed::new(vec::append(move curr, rest), j);
246+
let mut i = i;
247+
let mut flags = ~[];
248+
249+
while i < lim {
250+
let f = match s[i] {
251+
'-' as u8 => FlagLeftJustify,
252+
'0' as u8 => FlagLeftZeroPad,
253+
' ' as u8 => FlagSpaceForSign,
254+
'+' as u8 => FlagSignAlways,
255+
'#' as u8 => FlagAlternate,
256+
_ => break
257+
};
258+
259+
flags.push(f);
260+
i += 1;
256261
}
257-
// Unfortunate, but because s is borrowed, can't use a closure
258-
// fn more(f: Flag, s: &str) { more_(f, s, i, lim); }
259-
let f = s[i];
260-
return if f == '-' as u8 {
261-
more(FlagLeftJustify, s, i, lim)
262-
} else if f == '0' as u8 {
263-
more(FlagLeftZeroPad, s, i, lim)
264-
} else if f == ' ' as u8 {
265-
more(FlagSpaceForSign, s, i, lim)
266-
} else if f == '+' as u8 {
267-
more(FlagSignAlways, s, i, lim)
268-
} else if f == '#' as u8 {
269-
more(FlagAlternate, s, i, lim)
270-
} else { Parsed::new(move noflags, i) };
262+
263+
Parsed::new(flags, i)
271264
}
272265
pub fn parse_count(s: &str, i: uint, lim: uint)
273266
-> Parsed<Count> {

0 commit comments

Comments
 (0)