commit c51b4cf52e1b42577a5f929efdeedfe765e21555
parent 6b7db8a6867f30857da123cad6206540eac613f9
Author: Eli Barzilay <eli@racket-lang.org>
Date: Sat, 31 May 2008 16:26:44 +0000
force library order
svn: r10070
original commit: cf5b2dba5b667ed1315ba117fb08b83e17aef4d2
Diffstat:
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/collects/scribble/basic.ss b/collects/scribble/basic.ss
@@ -230,6 +230,15 @@
;; parts first, then modules, then bindings, delayed means it's not
;; the last round, and #f means no desc
(define desc-order '(part mod libs delayed #f))
+ ;; this defines an imposed ordering for module names
+ (define lib-order '(#rx"^scheme(?:/|$)" #rx"^r.rs(?:/|$)" #rx"^lang(?:/|$)"))
+ (define (lib<? lib1 lib2)
+ (define (lib-level lib)
+ (let loop ([i 0] [rxs lib-order])
+ (if (or (null? rxs) (regexp-match? (car rxs) lib))
+ i (loop (add1 i) (cdr rxs)))))
+ (let ([l1 (lib-level lib1)] [l2 (lib-level lib2)])
+ (if (= l1 l2) (string<? lib1 lib2) (< l1 l2))))
(define (compare-desc e1 e2)
(let* ([d1 (get-desc e1)] [d2 (get-desc e2)]
[t1 (car d1)] [t2 (car d2)])
@@ -238,7 +247,7 @@
[else (case t1 ; equal to t2
[(part) '=] ; will just compare tags
[(mod) '=] ; the text fields are the names of the modules
- [(libs) (compare-lists (cdr d1) (cdr d2) string<?)]
+ [(libs) (compare-lists (cdr d1) (cdr d2) lib<?)]
[(delayed) '>] ; dosn't matter, will run again
[(#f) '=])])))
(define (entry<? e1 e2)