even better code

svn: r4937
This commit is contained in:
Eli Barzilay 2006-11-23 17:56:06 +00:00
parent a0243b4616
commit ed58b58c90

View File

@ -456,19 +456,15 @@
pfx)] pfx)]
[(subq) (lambda xs (regexp-quote (apply sub xs)))]) [(subq) (lambda xs (regexp-quote (apply sub xs)))])
(let loop ([i 0] [ps (regexp-match-positions* item glob)] [r '()]) (let loop ([i 0] [ps (regexp-match-positions* item glob)] [r '()])
(cond [(null? ps) (if (null? ps)
(let ([r (apply app (reverse! (cons (subq glob i) r)))]) (let ([r (apply app (reverse! (cons (subq glob i) r)))])
(rx (app pfx r sfx)))] (rx (app pfx r sfx)))
[(= 1 (- (cdar ps) (caar ps))) (loop (cdar ps) (cdr ps)
(loop (cdar ps) ;; length=1 is only for `*' or `?'
(cdr ps) (cons (if (= 1 (- (cdar ps) (caar ps)))
(cons (if (equal? star (ref glob (caar ps))) any one) (if (equal? star (ref glob (caar ps))) any one)
(sub glob (caar ps) (cdar ps)))
(if (= i (caar ps)) (if (= i (caar ps))
r (cons (subq glob i (caar ps)) r))))] r (cons (subq glob i (caar ps)) r))))))))))
[else (loop (cdar ps)
(cdr ps)
(cons (sub glob (caar ps) (cdar ps))
(if (= i (caar ps))
r (cons (subq glob i (caar ps)) r))))]))))))
) )