diff --git a/extra/webapps/calculator/calculator.factor b/extra/webapps/calculator/calculator.factor new file mode 100644 index 0000000000..f1416fb02d --- /dev/null +++ b/extra/webapps/calculator/calculator.factor @@ -0,0 +1,44 @@ +! Copyright (C) 2008 Slava Pestov. +! See http://factorcode.org/license.txt for BSD license. +USING: furnace.actions furnace.redirection +http.server.dispatchers html.forms validators urls accessors +math ; +IN: webapps.calculator + +TUPLE: calculator < dispatcher ; + +: ( -- action ) + + + [ + { { "z" [ [ v-number ] v-optional ] } } validate-params + ] >>init + + { calculator "calculator" } >>template + + [ + { + { "x" [ v-number ] } + { "y" [ v-number ] } + } validate-params + + URL" $calculator" "x" value "y" value + "z" set-query-param + + ] >>submit ; + +: ( -- responder ) + calculator new-dispatcher + >>default ; + +! Deployment example +USING: db.sqlite furnace.alloy namespaces http.server ; + +: calculator-db ( -- params db ) "calculator.db" sqlite-db ; + +: run-calculator ( -- ) + + calculator-db + main-responder set-global + 8080 httpd ; + +MAIN: run-calculator diff --git a/extra/webapps/calculator/calculator.xml b/extra/webapps/calculator/calculator.xml new file mode 100644 index 0000000000..ed8e60d89a --- /dev/null +++ b/extra/webapps/calculator/calculator.xml @@ -0,0 +1,28 @@ + + + + + Calculator + + +

Calculator

+ + + + + + +
First value:
Second value:
+ + + + +
+ + Result: +
+ +
+ + +