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