1 ! Copyright (C) 2010 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors assocs db.tuples furnace.actions
4 furnace.utilities http.server.responses kernel locals sequences
5 splitting urls xml.syntax xml.writer webapps.mason.backend
6 webapps.mason.version.data webapps.mason.utils ;
7 IN: webapps.mason.grids
9 : render-grid-cell ( cpu os quot -- xml )
10 call( cpu os -- url label )
12 [ link [XML <td class="supported"><div class="bigdiv"><-></div></td> XML] ]
13 [ 2drop [XML <td class="doesnotexist" /> XML] ]
19 { "macosx" "Mac OS X" }
21 { "freebsd" "FreeBSD" }
22 { "openbsd" "OpenBSD" }
31 : render-grid-header ( -- xml )
32 oses values [ [XML <th align='center' scope='col'><-></th> XML] ] map ;
34 :: render-grid-row ( cpu quot -- xml )
35 cpu second oses keys [| os | cpu os quot render-grid-cell ] map
36 [XML <tr><th align='center' scope='row'><-></th><-></tr> XML] ;
38 :: render-grid ( quot -- xml )
40 cpus [ quot render-grid-row ] map
42 <table id="downloads" cellspacing="0">
43 <tr><th class="nobg">OS/CPU</th><-></tr>
48 : package-date ( filename -- date )
49 "." split1 drop 16 tail* 6 head* ;
51 : package-grid-cell ( cpu os -- url label )
52 builder new swap >>os swap >>cpu select-tuple [
54 [ last-release>> [ package-date ] [ "N/A" ] if* ] bi
57 : package-grid ( -- xml )
58 [ package-grid-cell ] render-grid ;
60 : <package-grid-action> ( -- action )
64 package-grid xml>string
69 : release-version ( filename -- release )
70 ".tar.gz" ?tail drop ".zip" ?tail drop ".dmg" ?tail drop
73 : release-grid-cell ( cpu os -- url label )
74 release new swap >>os swap >>cpu select-tuple [
76 [ last-release>> [ release-version ] [ "N/A" ] if* ] bi
79 : release-grid ( -- xml )
80 [ release-grid-cell ] render-grid ;
82 : <release-grid-action> ( -- action )
86 release-grid xml>string