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