2 USING: calendar kernel namespaces sequences furnace hashtables
5 TUPLE: paste n summary author contents date ;
7 C: paste ( summary author contents -- paste )
8 [ set-paste-contents ] keep
9 [ set-paste-author ] keep
10 [ set-paste-summary ] keep ;
12 TUPLE: pastebin pastes ;
14 C: pastebin ( -- pastebin )
15 V{ } clone over set-pastebin-pastes ;
17 : add-paste ( paste pastebin -- )
18 now timestamp>http-string pick set-paste-date
19 dup pastebin-pastes length pick set-paste-n
20 pastebin-pastes push ;
22 <pastebin> "pastebin" set-global
24 : get-paste ( n -- paste )
25 "pastebin" get pastebin-pastes nth ;
29 swap string>number get-paste
30 "show-paste" render-page ;
32 \ show-paste { { "n" "0" } } define-action
35 "New paste" f "new-paste" render-page ;
37 \ new-paste { } define-action
39 : submit-paste ( summary author contents -- )
40 <paste> "pastebin" get-global add-paste ;
50 [ show-paste ] "show-paste-quot" set
51 [ new-paste ] "new-paste-quot" set
55 "paste-list" render-page
58 \ paste-list { } define-action
60 \ submit-paste [ paste-list ] define-redirect
62 "pastebin" "paste-list" "contrib/furnace-pastebin" web-app