]> gitweb.factorcode.org Git - factor.git/blob - extra/webapps/calculator/calculator.factor
scryfall: better moxfield words
[factor.git] / extra / webapps / calculator / calculator.factor
1 ! Copyright (C) 2008, 2009 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors furnace.actions furnace.alloy
4 furnace.redirection html.forms http.server
5 http.server.dispatchers kernel math namespaces urls validators
6 webapps.utils ;
7 IN: webapps.calculator
8
9 TUPLE: calculator < dispatcher ;
10
11 : <calculator-action> ( -- action )
12     <page-action>
13
14     [
15         { { "z" [ [ v-number ] v-optional ] } } validate-params
16     ] >>init
17
18     { calculator "calculator" } >>template
19
20     [
21         {
22             { "x" [ v-number ] }
23             { "y" [ v-number ] }
24         } validate-params
25
26         URL" $calculator" clone "x" value "y" value + "z" set-query-param
27         <redirect>
28     ] >>submit ;
29
30 : <calculator> ( -- responder )
31     calculator new-dispatcher
32         <calculator-action> >>default ;
33
34 ! Deployment example
35 : calculator-db ( -- db ) "calculator.db" <temp-sqlite-db> ;
36
37 : <calculator-app> ( -- dispatcher )
38     <calculator> calculator-db <alloy> ;
39
40 ! Calculator runs at port 8081 and 8431
41 : run-calculator ( -- )
42     <calculator-app> main-responder set-global
43     run-test-httpd ;
44
45 MAIN: run-calculator