diff --git a/gash/pattern.scm b/gash/pattern.scm index a9170d1..a8c17e5 100644 --- a/gash/pattern.scm +++ b/gash/pattern.scm @@ -249,7 +249,7 @@ source string is the only string that will match it." (let ((start* (+ m (vector-length part)))) (parts-match? rest start*))))))) - (match-let ((($ parts) pattern)) + (let ((parts (pattern-parts pattern))) (if (and explicit-initial-period? (< start end) (char=? (string-ref str start) #\.)) @@ -276,13 +276,12 @@ source string is the only string that will match it." (#f str) (m (match-parts rest (+ m (vector-length part)))))))) - (match-let ((($ parts) pattern)) - (match parts - (() str) - ((part . rest) - (if (string-starts-with-part str part) - (match-parts rest (vector-length part)) - str))))) + (match (pattern-parts pattern) + (() str) + ((part . rest) + (if (string-starts-with-part str part) + (match-parts rest (vector-length part)) + str)))) (define* (pattern-drop-right pattern str #:key greedy?) (define (match-parts parts i) @@ -295,12 +294,11 @@ source string is the only string that will match it." (#f str) (m (match-parts rest m)))))) - (match-let ((($ parts) pattern)) - (let ((strap (reverse parts))) - (match strap - (() str) - ((part . rest) - (if (string-ends-with-part str part) - (let ((i (- (string-length str) (vector-length part)))) - (match-parts rest i)) - str)))))) + (let ((strap (reverse (pattern-parts pattern)))) + (match strap + (() str) + ((part . rest) + (if (string-ends-with-part str part) + (let ((i (- (string-length str) (vector-length part)))) + (match-parts rest i)) + str)))))