diff --git a/extra/furnace/furnace.factor b/extra/furnace/furnace.factor
index f2ce0ddf18..076b506112 100644
--- a/extra/furnace/furnace.factor
+++ b/extra/furnace/furnace.factor
@@ -101,36 +101,10 @@ SYMBOL: request-params
: service-post ( url -- ) "response" get swap service-request ;
-: explode-tuple ( tuple -- )
- dup tuple-slots swap class "slot-names" word-prop
- [ set ] 2each ;
-
-SYMBOL: model
-
-: call-template ( model template -- )
- [
- >r [ dup model set explode-tuple ] when* r>
- ".furnace" append resource-path run-template-file
- ] with-scope ;
-
-: render-template ( model template -- )
- template-path get swap path+ call-template ;
-
-: render-page* ( model body-template head-template -- )
- [
- [ render-template ] [ f rot render-template ] html-document
- ] serve-html ;
-
-: render-titled-page* ( model body-template head-template title -- )
- [
- [ render-template ] swap [
write f rot render-template ] curry html-document
- ] serve-html ;
-
-
-: render-page ( model template title -- )
- [
- [ render-template ] simple-html-document
- ] serve-html ;
+: render-template ( template -- )
+ template-path get swap path+
+ ".furnace" append resource-path
+ run-template-file ;
: web-app ( name default path -- )
[
@@ -141,3 +115,34 @@ SYMBOL: model
[ service-post ] "post" set
! [ service-head ] "head" set
] make-responder ;
+
+: explode-tuple ( tuple -- )
+ dup tuple-slots swap class "slot-names" word-prop
+ [ set ] 2each ;
+
+SYMBOL: model
+
+: with-slots ( model quot -- )
+ [
+ >r [ dup model set explode-tuple ] when* r> call
+ ] with-scope ;
+
+: render-component ( model template -- )
+ swap [ render-template ] with-slots ;
+
+! Deprecated stuff
+
+: render-page* ( model body-template head-template -- )
+ [
+ [ render-component ] [ f rot render-component ] html-document
+ ] serve-html ;
+
+: render-titled-page* ( model body-template head-template title -- )
+ [
+ [ render-component ] swap [ write f rot render-component ] curry html-document
+ ] serve-html ;
+
+: render-page ( model template title -- )
+ [
+ [ render-component ] simple-html-document
+ ] serve-html ;
diff --git a/extra/webapps/pastebin/annotate-paste.furnace b/extra/webapps/pastebin/annotate-paste.furnace
index c963e2f88f..301726209b 100644
--- a/extra/webapps/pastebin/annotate-paste.furnace
+++ b/extra/webapps/pastebin/annotate-paste.furnace
@@ -1,4 +1,4 @@
-<% USING: io math math.parser namespaces ; %>
+<% USING: io math math.parser namespaces furnace ; %>
Annotate
@@ -18,6 +18,11 @@
|
+
+File type: |
+<% "modes" render-template %> |
+
+
Contents: |
|
diff --git a/extra/webapps/pastebin/modes.furnace b/extra/webapps/pastebin/modes.furnace
new file mode 100644
index 0000000000..cc09ae90ed
--- /dev/null
+++ b/extra/webapps/pastebin/modes.furnace
@@ -0,0 +1,7 @@
+<% USING: xmode.catalog sequences kernel html.elements assocs io ; %>
+
+
diff --git a/extra/webapps/pastebin/new-paste.furnace b/extra/webapps/pastebin/new-paste.furnace
index 8a2544e801..98b9bae8b7 100644
--- a/extra/webapps/pastebin/new-paste.furnace
+++ b/extra/webapps/pastebin/new-paste.furnace
@@ -1,3 +1,5 @@
+<% USING: furnace ; %>
+