]> gitweb.factorcode.org Git - factor.git/blob - basis/furnace/boilerplate/boilerplate.factor
Merge branch 'master' of git://factorcode.org/git/factor
[factor.git] / basis / furnace / boilerplate / boilerplate.factor
1 ! Copyright (c) 2008 Slava Pestov
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors kernel math.order namespaces furnace combinators.short-circuit
4 html.forms
5 html.templates
6 html.templates.chloe
7 locals
8 http.server
9 http.server.filters ;
10 IN: furnace.boilerplate
11
12 TUPLE: boilerplate < filter-responder template init ;
13
14 : <boilerplate> ( responder -- boilerplate )
15     boilerplate new
16         swap >>responder
17         [ ] >>init ;
18
19 : wrap-boilerplate? ( response -- ? )
20     {
21         [ code>> { [ 200 = ] [ 400 499 between? ] } 1|| ]
22         [ content-type>> "text/html" = ]
23     } 1&& ;
24
25 M:: boilerplate call-responder* ( path responder -- )
26     begin-form
27     path responder call-next-method
28     responder init>> call
29     dup content-type>> "text/html" = [
30         clone [| body |
31             [
32                 body
33                 responder template>> resolve-template-path <chloe>
34                 with-boilerplate
35             ]
36         ] change-body
37     ] when ;