From d3fb9eeb968d6548218e70d179c0ade6923bb6bb Mon Sep 17 00:00:00 2001 From: Abdulaziz Ghuloum Date: Thu, 23 Oct 2008 00:40:50 -0400 Subject: [PATCH] Added an "_" to the file name obtained from library-name->file-name if the last symbol of the library name matches the regex "^main_*$". --- scheme/last-revision | 2 +- scheme/psyntax.library-manager.ss | 26 ++++++++++++++++---------- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/scheme/last-revision b/scheme/last-revision index ff0f690..5b2b56c 100644 --- a/scheme/last-revision +++ b/scheme/last-revision @@ -1 +1 @@ -1644 +1645 diff --git a/scheme/psyntax.library-manager.ss b/scheme/psyntax.library-manager.ss index 7361e26..33ad176 100644 --- a/scheme/psyntax.library-manager.ss +++ b/scheme/psyntax.library-manager.ss @@ -91,19 +91,24 @@ (assertion-violation 'library-extensions "not a list of strings" x))))) - (define (library-name->file-name x) + (define (library-name->file-name ls) (let-values (((p extract) (open-string-output-port))) (define (display-hex n) (cond ((<= 0 n 9) (display n p)) - (else (display + (else (write-char (integer->char (+ (char->integer #\A) (- n 10))) p)))) - (let f ((ls x)) - (unless (null? ls) - (display "/" p) + (define (main*? x) + (and (>= (string-length x) 4) + (string=? (substring x 0 4) "main") + (for-all (lambda (x) (char=? x #\_)) + (string->list (substring x 4 (string-length x)))))) + (let f ((x (car ls)) (ls (cdr ls))) + (write-char #\/ p) + (let ([name (symbol->string x)]) (for-each (lambda (c) (cond @@ -111,15 +116,16 @@ (char<=? #\A c #\Z) (char<=? #\0 c #\9) (memv c '(#\- #\. #\_ #\~))) - (display c p)) + (write-char c p)) (else - (display "%" p) + (write-char #\% p) (let ((n (char->integer c))) (display-hex (quotient n 16)) (display-hex (remainder n 16)))))) - (string->list - (symbol->string (car ls)))) - (f (cdr ls)))) + (string->list name)) + (if (null? ls) + (when (main*? name) (write-char #\_ p)) + (f (car ls) (cdr ls))))) (extract))) (define file-locator