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 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"><-></td> XML] ]
13 [ 2drop [XML <td class="doesnotexist" /> XML] ]
18 { "windows" "Windows" }
29 : render-grid-header ( -- xml )
30 oses values [ [XML <th scope='col'><-></th> XML] ] map ;
32 :: render-grid-row ( cpu quot -- xml )
33 cpu second oses keys [| os | cpu os quot render-grid-cell ] map
34 [XML <tr><th scope='row'><-></th><-></tr> XML] ;
36 :: render-grid ( quot -- xml )
38 cpus [ quot render-grid-row ] map
40 <table class="downloads" cellspacing="0">
41 <tr><th class="nobg">OS/CPU</th><-></tr>
46 : package-date ( filename -- date )
47 "." split1 drop 16 tail* 6 head* ;
49 : package-grid-cell ( cpu os -- url label )
50 builder new swap >>os swap >>cpu select-tuple [
52 [ last-release>> [ package-date ] [ "N/A" ] if* ] bi
55 : package-grid ( -- xml )
56 [ package-grid-cell ] render-grid ;
58 : <package-grid-action> ( -- action )
62 package-grid xml>string
67 : release-version ( filename -- release )
68 ".tar.gz" ?tail drop ".zip" ?tail drop ".dmg" ?tail drop
71 : release-grid-cell ( cpu os -- url label )
72 release new swap >>os swap >>cpu select-tuple [
74 [ last-release>> [ release-version ] [ "N/A" ] if* ] bi
77 : release-grid ( -- xml )
78 [ release-grid-cell ] render-grid ;
80 : <release-grid-action> ( -- action )
84 release-grid xml>string