Source responder with syntax highlighting
parent
0e60982aca
commit
59566c20e9
|
@ -1,4 +1,4 @@
|
||||||
! Copyright (C) 2004, 2006 Slava Pestov.
|
! Copyright (C) 2004, 2007 Slava Pestov.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
USING: calendar html io io.files kernel math math.parser
|
USING: calendar html io io.files kernel math math.parser
|
||||||
http.server.responders http.server.templating namespaces parser
|
http.server.responders http.server.templating namespaces parser
|
||||||
|
@ -31,15 +31,24 @@ IN: webapps.file
|
||||||
"304 Not Modified" response
|
"304 Not Modified" response
|
||||||
now timestamp>http-string "Date" associate print-header ;
|
now timestamp>http-string "Date" associate print-header ;
|
||||||
|
|
||||||
|
! You can override how files are served in a custom responder
|
||||||
|
SYMBOL: serve-file-hook
|
||||||
|
|
||||||
|
[
|
||||||
|
nip
|
||||||
|
file-response
|
||||||
|
stdio get stream-copy
|
||||||
|
] serve-file-hook set-global
|
||||||
|
|
||||||
: serve-static ( filename mime-type -- )
|
: serve-static ( filename mime-type -- )
|
||||||
over last-modified-matches? [
|
over last-modified-matches? [
|
||||||
2drop not-modified-response
|
2drop not-modified-response
|
||||||
] [
|
] [
|
||||||
dupd file-response
|
|
||||||
"method" get "head" = [
|
"method" get "head" = [
|
||||||
drop
|
file-response
|
||||||
] [
|
] [
|
||||||
<file-reader> stdio get stream-copy
|
>r dup <file-reader> r>
|
||||||
|
serve-file-hook get call
|
||||||
] if
|
] if
|
||||||
] if ;
|
] if ;
|
||||||
|
|
||||||
|
@ -53,9 +62,13 @@ SYMBOL: page
|
||||||
: include-page ( filename -- )
|
: include-page ( filename -- )
|
||||||
"doc-root" get swap path+ run-page ;
|
"doc-root" get swap path+ run-page ;
|
||||||
|
|
||||||
|
: serve-fhtml ( filename -- )
|
||||||
|
serving-html
|
||||||
|
"method" get "head" = [ drop ] [ run-page ] if ;
|
||||||
|
|
||||||
: serve-file ( filename -- )
|
: serve-file ( filename -- )
|
||||||
dup mime-type dup "application/x-factor-server-page" =
|
dup mime-type dup "application/x-factor-server-page" =
|
||||||
[ drop serving-html run-page ] [ serve-static ] if ;
|
[ drop serve-fhtml ] [ serve-static ] if ;
|
||||||
|
|
||||||
: file. ( name dirp -- )
|
: file. ( name dirp -- )
|
||||||
[ "/" append ] when
|
[ "/" append ] when
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
! Copyright (C) 2007 Slava Pestov.
|
||||||
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
|
USING: io.files namespaces webapps.file http.server.responders
|
||||||
|
xmode.code2html kernel ;
|
||||||
|
IN: webapps.source
|
||||||
|
|
||||||
|
global [
|
||||||
|
! Serve up our own source code
|
||||||
|
"source" [
|
||||||
|
[
|
||||||
|
"" resource-path "doc-root" set
|
||||||
|
[
|
||||||
|
drop
|
||||||
|
serving-html
|
||||||
|
htmlize-stream
|
||||||
|
] serve-file-hook set
|
||||||
|
file-responder
|
||||||
|
] with-scope
|
||||||
|
] add-simple-responder
|
||||||
|
] bind
|
Loading…
Reference in New Issue