Add "All Versions" page with a table of all versions and all packages.
This commit is contained in:
parent
626627fcc7
commit
bb3dbeb2c0
|
@ -79,6 +79,9 @@
|
||||||
["plt" "Racket Package"]
|
["plt" "Racket Package"]
|
||||||
["sit" "StuffIt Archive"]))
|
["sit" "StuffIt Archive"]))
|
||||||
|
|
||||||
|
;; Used to sort packages when more then one is rendered on a page
|
||||||
|
(define -package-order- '(racket racket-textual))
|
||||||
|
|
||||||
(define -mirrors-
|
(define -mirrors-
|
||||||
;; This is a sequence of
|
;; This is a sequence of
|
||||||
;; (location url reposnisble-name email [techincal-contact])
|
;; (location url reposnisble-name email [techincal-contact])
|
||||||
|
@ -139,10 +142,13 @@
|
||||||
|
|
||||||
;; ----------------------------------------------------------------------------
|
;; ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
;; accepts "053"
|
||||||
|
(define (version->integer* v)
|
||||||
|
(version->integer (regexp-replace #rx"^0+" v "")))
|
||||||
|
|
||||||
(define versions+dates
|
(define versions+dates
|
||||||
(sort -versions+dates- <
|
(sort -versions+dates- <
|
||||||
#:key (lambda (vd)
|
#:key (lambda (vd) (version->integer* (car vd)))
|
||||||
(version->integer (regexp-replace #rx"^0+" (car vd) "")))
|
|
||||||
#:cache-keys? #t))
|
#:cache-keys? #t))
|
||||||
|
|
||||||
;; sorted from oldest to newest
|
;; sorted from oldest to newest
|
||||||
|
@ -176,6 +182,7 @@
|
||||||
(path ; path to file from the installers directory
|
(path ; path to file from the installers directory
|
||||||
file ; just the file name
|
file ; just the file name
|
||||||
version ; version of the installer (as a string)
|
version ; version of the installer (as a string)
|
||||||
|
version-number ; version as a number (via version->integer*)
|
||||||
size ; human-readable size string
|
size ; human-readable size string
|
||||||
package ; package kind symbol 'racket or 'racket-textual
|
package ; package kind symbol 'racket or 'racket-textual
|
||||||
binary? ; #t = binary distribution, #f = source distribution
|
binary? ; #t = binary distribution, #f = source distribution
|
||||||
|
@ -200,8 +207,8 @@
|
||||||
"))$")))
|
"))$")))
|
||||||
|
|
||||||
(define (make-installer size path version package file type platform suffix)
|
(define (make-installer size path version package file type platform suffix)
|
||||||
(installer path file version size (string->symbol package)
|
(installer path file version (version->integer* version) size
|
||||||
(equal? "bin" type) platform suffix))
|
(string->symbol package) (equal? "bin" type) platform suffix))
|
||||||
|
|
||||||
(define (parse-installers in)
|
(define (parse-installers in)
|
||||||
(port-count-lines! in)
|
(port-count-lines! in)
|
||||||
|
@ -211,7 +218,19 @@
|
||||||
(error 'installers "bad installer data line#~a: ~s"
|
(error 'installers "bad installer data line#~a: ~s"
|
||||||
num line))))))
|
num line))))))
|
||||||
|
|
||||||
(define all-installers (call-with-input-file installers-data parse-installers))
|
;; sorted by version (newest first), and then by -package-order-
|
||||||
|
(define all-installers
|
||||||
|
(sort (call-with-input-file installers-data parse-installers)
|
||||||
|
(lambda (i1 i2)
|
||||||
|
(let ([v1 (installer-version-number i1)]
|
||||||
|
[v2 (installer-version-number i2)])
|
||||||
|
(or (> v1 v2)
|
||||||
|
(and (= v1 v2)
|
||||||
|
(let* ([p1 (installer-package i1)]
|
||||||
|
[p2 (installer-package i2)]
|
||||||
|
[t1 (memq p1 -package-order-)])
|
||||||
|
(and t1 (or (memq p2 (cdr t1))
|
||||||
|
(not (memq p2 -package-order-)))))))))))
|
||||||
|
|
||||||
(define package->name
|
(define package->name
|
||||||
(let ([t (make-hasheq)])
|
(let ([t (make-hasheq)])
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#lang at-exp s-exp "shared.rkt"
|
#lang at-exp s-exp "shared.rkt"
|
||||||
|
|
||||||
(require "data.rkt" "installer-pages.rkt"
|
(require "data.rkt" "installer-pages.rkt" (prefix-in pre: "../stubs/pre.rkt")
|
||||||
(prefix-in pre: "../stubs/pre.rkt"))
|
racket/list)
|
||||||
|
|
||||||
(provide render-download-page)
|
(provide render-download-page)
|
||||||
|
|
||||||
|
@ -21,7 +21,8 @@
|
||||||
@input[type: 'submit value: "Download" onclick: "do_jump();"]
|
@input[type: 'submit value: "Download" onclick: "do_jump();"]
|
||||||
@|br hr|
|
@|br hr|
|
||||||
@div[align: "center"]{
|
@div[align: "center"]{
|
||||||
@small{@license @nbsp @bull @nbsp @pre:installers}}
|
@small{@all-version-pages @nbsp @bull @nbsp
|
||||||
|
@license @nbsp @bull @nbsp @pre:installers}}
|
||||||
@hr
|
@hr
|
||||||
@div[id: "linux_explain"
|
@div[id: "linux_explain"
|
||||||
style: '("font-size: 75%; display: none; width: 28em;"
|
style: '("font-size: 75%; display: none; width: 28em;"
|
||||||
|
@ -38,8 +39,36 @@
|
||||||
(equal? package (installer-package i))))
|
(equal? package (installer-package i))))
|
||||||
@li{@(installer->page i 'only-platform)})}}})
|
@li{@(installer->page i 'only-platform)})}}})
|
||||||
|
|
||||||
|
(define all-version-pages
|
||||||
|
(let ()
|
||||||
|
(define all-versions
|
||||||
|
(remove-duplicates (map installer-version all-installers)))
|
||||||
|
(define all-packages
|
||||||
|
(remove-duplicates (map installer-package all-installers)))
|
||||||
|
(define (make-page ver pkg)
|
||||||
|
(define file (format "~a-v~a.html" pkg ver))
|
||||||
|
(define title @list{@(package->name pkg) v@ver})
|
||||||
|
(define label @list{v@ver @small{(@(version->date ver))}})
|
||||||
|
(define the-page
|
||||||
|
@page[#:file file #:title title #:part-of 'download]{
|
||||||
|
@(render-download-page ver pkg)})
|
||||||
|
(the-page label))
|
||||||
|
@page[#:id 'all-versions #:title "All Versions" #:part-of 'download]{
|
||||||
|
@table[width: "90%" align: 'center cellspacing: 10 cellpadding: 10
|
||||||
|
rules: 'cols frame: 'box]{
|
||||||
|
@thead{
|
||||||
|
@tr[style: "border-bottom: 1px solid;"]{
|
||||||
|
@(map (lambda (p)
|
||||||
|
@th[width: "50%" align: 'center]{@(package->name p)})
|
||||||
|
all-packages)}}
|
||||||
|
@tbody{
|
||||||
|
@(map (lambda (v)
|
||||||
|
(tr (map (lambda (p) (td align: 'center (make-page v p)))
|
||||||
|
all-packages)))
|
||||||
|
all-versions)}}}))
|
||||||
|
|
||||||
(define license
|
(define license
|
||||||
@page[#:title "Software License"]{
|
@page[#:title "Software License" #:part-of 'download]{
|
||||||
@p{Racket is distributed under the
|
@p{Racket is distributed under the
|
||||||
@a[href: "http://www.gnu.org/copyleft/lesser.html"]{
|
@a[href: "http://www.gnu.org/copyleft/lesser.html"]{
|
||||||
GNU Lesser General Public License (LGPL)}.
|
GNU Lesser General Public License (LGPL)}.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user