Merge branch 'master' into new_ui

db4
Slava Pestov 2009-01-31 03:03:39 -06:00
commit 42c3c3383a
25 changed files with 124 additions and 117 deletions

View File

@ -1,9 +1,13 @@
! Copyright (C) 2008 Doug Coleman. ! Copyright (C) 2008 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: classes help.markup help.syntax io.streams.string kernel USING: classes help.markup help.syntax io.streams.string kernel
quotations sequences strings multiline math db.types db ; quotations sequences strings multiline math db.types
db.tuples.private db ;
IN: db.tuples IN: db.tuples
HELP: random-id-generator
{ $description "Used to tell " { $link eval-generator } " to generate a random number for use as a key." } ;
HELP: create-sql-statement HELP: create-sql-statement
{ $values { $values
{ "class" class } { "class" class }

View File

@ -1,7 +1,7 @@
! Copyright (C) 2008 Doug Coleman. ! Copyright (C) 2008 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: classes hashtables help.markup help.syntax io.streams.string USING: classes hashtables help.markup help.syntax io.streams.string
kernel sequences strings math db.tuples db.tuples.private ; kernel sequences strings math ;
IN: db.types IN: db.types
HELP: +db-assigned-id+ HELP: +db-assigned-id+
@ -89,31 +89,31 @@ HELP: VARCHAR
HELP: user-assigned-id-spec? HELP: user-assigned-id-spec?
{ $values { $values
{ "specs" "a sequence of sql specs" } { "specs" "a sequence of SQL specs" }
{ "?" "a boolean" } } { "?" "a boolean" } }
{ $description "Tests if any of the sql specs has the type " { $link +user-assigned-id+ } "." } ; { $description "Tests if any of the SQL specs has the type " { $link +user-assigned-id+ } "." } ;
HELP: bind# HELP: bind#
{ $values { $values
{ "spec" "a sql spec" } { "obj" object } } { "spec" "a SQL spec" } { "obj" object } }
{ $description "A generic word that lets a database construct a literal binding." } ; { $description "A generic word that lets a database construct a literal binding." } ;
HELP: bind% HELP: bind%
{ $values { $values
{ "spec" "a sql spec" } } { "spec" "a SQL spec" } }
{ $description "A generic word that lets a database output a binding." } ; { $description "A generic word that lets a database output a binding." } ;
HELP: db-assigned-id-spec? HELP: db-assigned-id-spec?
{ $values { $values
{ "specs" "a sequence of sql specs" } { "specs" "a sequence of SQL specs" }
{ "?" "a boolean" } } { "?" "a boolean" } }
{ $description "Tests if any of the sql specs has the type " { $link +db-assigned-id+ } "." } ; { $description "Tests if any of the SQL specs has the type " { $link +db-assigned-id+ } "." } ;
HELP: find-primary-key HELP: find-primary-key
{ $values { $values
{ "specs" "a sequence of sql-specs" } { "specs" "a sequence of SQL specs" }
{ "seq" "a sequence of sql-specs" } } { "seq" "a sequence of SQL specs" } }
{ $description "Returns the rows from the sql-specs array that are part of the primary key. Composite primary keys are supported, so this word must return a sequence." } { $description "Returns the rows from the SQL specs array that are part of the primary key. Composite primary keys are supported, so this word must return a sequence." }
{ $notes "This is a low-level word." } ; { $notes "This is a low-level word." } ;
HELP: get-slot-named HELP: get-slot-named
@ -124,13 +124,13 @@ HELP: get-slot-named
HELP: no-sql-type HELP: no-sql-type
{ $values { $values
{ "type" "a sql type" } } { "type" "a SQL type" } }
{ $description "Throws an error containing a sql type that is unsupported or the result of a typo." } ; { $description "Throws an error containing a SQL type that is unsupported or the result of a typo." } ;
HELP: normalize-spec HELP: normalize-spec
{ $values { $values
{ "spec" "a sql spec" } } { "spec" "a SQL spec" } }
{ $description "Normalizes a sql spec." } ; { $description "Normalizes a SQL spec." } ;
HELP: offset-of-slot HELP: offset-of-slot
{ $values { $values
@ -140,22 +140,19 @@ HELP: offset-of-slot
HELP: primary-key? HELP: primary-key?
{ $values { $values
{ "spec" "a sql spec" } { "spec" "a SQL spec" }
{ "?" "a boolean" } } { "?" "a boolean" } }
{ $description "Returns true if a sql spec is a primary key." } ; { $description "Returns true if a SQL spec is a primary key." } ;
HELP: random-id-generator
{ $description "Used to tell " { $link eval-generator } " to generate a random number for use as a key." } ;
HELP: relation? HELP: relation?
{ $values { $values
{ "spec" "a sql spec" } { "spec" "a SQL spec" }
{ "?" "a boolean" } } { "?" "a boolean" } }
{ $description "Returns true if a sql spec is a relation." } ; { $description "Returns true if a SQL spec is a relation." } ;
HELP: unknown-modifier HELP: unknown-modifier
{ $values { "modifier" string } } { $values { "modifier" string } }
{ $description "Throws an error containing an unknown sql modifier." } ; { $description "Throws an error containing an unknown SQL modifier." } ;
ARTICLE: "db.types" "Database types" ARTICLE: "db.types" "Database types"
"The " { $vocab-link "db.types" } " vocabulary maps Factor types to database types." $nl "The " { $vocab-link "db.types" } " vocabulary maps Factor types to database types." $nl

View File

@ -1,6 +1,6 @@
! Copyright (C) 2008 Doug Coleman. ! Copyright (C) 2008 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: accessors arrays combinators html.elements io USING: accessors arrays combinators io
io.streams.string kernel math namespaces peg peg.ebnf io.streams.string kernel math namespaces peg peg.ebnf
sequences sequences.deep strings xml.entities xml.literals sequences sequences.deep strings xml.entities xml.literals
vectors splitting xmode.code2html urls.encoding xml.data vectors splitting xmode.code2html urls.encoding xml.data

View File

@ -10,7 +10,6 @@ furnace.utilities
furnace.redirection furnace.redirection
furnace.conversations furnace.conversations
html.forms html.forms
html.elements
html.components html.components
html.components html.components
html.templates.chloe html.templates.chloe

View File

@ -105,9 +105,8 @@ ARTICLE: "furnace.auth.realm-config" "Authentication realm configuration"
"Instances of subclasses of " { $link realm } " have the following slots which may be set:" "Instances of subclasses of " { $link realm } " have the following slots which may be set:"
{ $table { $table
{ { $slot "name" } "A string identifying the realm for user interface purposes" } { { $slot "name" } "A string identifying the realm for user interface purposes" }
{ { $slot "users" } { "An authentication provider (see " { $link "furnace.auth.providers" } ". By default, the " { $link users-in-db } " provider is used." } } { { $slot "users" } { "An authentication provider (see " { $link "furnace.auth.providers" } "). By default, the " { $link users-in-db } " provider is used." } }
{ { $slot "checksum" } { "An implementation of the checksum protocol used for verifying passwords (see " { $link "checksums" } "). The " { $link sha-256 } " checksum is used by default." } } { { $slot "checksum" } { "An implementation of the checksum protocol used for verifying passwords (see " { $link "checksums" } "). The " { $link sha-256 } " checksum is used by default." } }
{ { $slot "users" } { "An authentication provider (see " { $link "furnace.auth.providers" } } }
{ { $slot "secure" } { "A boolean, that when set to a true value, forces the client to access the authentication realm via HTTPS. An attempt to access the realm via HTTP results in a redirect to the corresponding HTTPS URL. On by default." } } { { $slot "secure" } { "A boolean, that when set to a true value, forces the client to access the authentication realm via HTTPS. An attempt to access the realm via HTTP results in a redirect to the corresponding HTTPS URL. On by default." } }
} ; } ;

View File

@ -8,6 +8,7 @@ xml.data
xml.entities xml.entities
xml.writer xml.writer
xml.utilities xml.utilities
xml.literals
html.components html.components
html.elements html.elements
html.forms html.forms
@ -20,7 +21,6 @@ http.server
http.server.redirection http.server.redirection
http.server.responses http.server.responses
furnace.utilities ; furnace.utilities ;
QUALIFIED-WITH: assocs a
IN: furnace.chloe-tags IN: furnace.chloe-tags
! Chloe tags ! Chloe tags
@ -56,11 +56,11 @@ CHLOE: write-atom drop [ write-atom-feeds ] [code] ;
: compile-link-attrs ( tag -- ) : compile-link-attrs ( tag -- )
#! Side-effects current namespace. #! Side-effects current namespace.
attrs>> '[ [ [ _ ] dip link-attr ] each-responder ] [code] ; '[ [ [ _ ] dip link-attr ] each-responder ] [code] ;
: a-start-tag ( tag -- ) : a-start-tag ( tag -- )
[ <a ] [code] [ <a ] [code]
[ non-chloe-attrs-only compile-attrs ] [ attrs>> non-chloe-attrs-only compile-attrs ]
[ compile-link-attrs ] [ compile-link-attrs ]
[ compile-a-url ] [ compile-a-url ]
tri tri
@ -116,17 +116,18 @@ CHLOE: form
} cleave } cleave
] compile-with-scope ; ] compile-with-scope ;
STRING: button-tag-markup : button-tag-markup ( -- xml )
<XML
<t:form class="inline" xmlns:t="http://factorcode.org/chloe/1.0"> <t:form class="inline" xmlns:t="http://factorcode.org/chloe/1.0">
<div style="display: inline;"><button type="submit"></button></div> <div style="display: inline;"><button type="submit"></button></div>
</t:form> </t:form>
; XML> ;
: add-tag-attrs ( attrs tag -- ) : add-tag-attrs ( attrs tag -- )
attrs>> swap update ; attrs>> swap update ;
CHLOE: button CHLOE: button
button-tag-markup string>xml body>> button-tag-markup body>>
{ {
[ [ attrs>> chloe-attrs-only ] dip add-tag-attrs ] [ [ attrs>> chloe-attrs-only ] dip add-tag-attrs ]
[ [ attrs>> non-chloe-attrs-only ] dip "button" deep-tag-named add-tag-attrs ] [ [ attrs>> non-chloe-attrs-only ] dip "button" deep-tag-named add-tag-attrs ]

View File

@ -1,11 +1,11 @@
! Copyright (C) 2008 Slava Pestov. ! Copyright (C) 2008 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: io.encodings.utf8 io.encodings.ascii io.encodings.binary USING: io.encodings.utf8 io.encodings.ascii io.encodings.binary
io.files io.files.temp io.directories html.streams html.elements help kernel io.files io.files.temp io.directories html.streams help kernel
assocs sequences make words accessors arrays help.topics vocabs assocs sequences make words accessors arrays help.topics vocabs
tools.vocabs tools.vocabs.browser namespaces prettyprint io tools.vocabs tools.vocabs.browser namespaces prettyprint io
vocabs.loader serialize fry memoize unicode.case math.order vocabs.loader serialize fry memoize unicode.case math.order
sorting debugger ; sorting debugger html.elements html ;
IN: help.html IN: help.html
: escape-char ( ch -- ) : escape-char ( ch -- )

View File

@ -6,7 +6,7 @@ hashtables combinators continuations math strings inspector
fry locals calendar calendar.format xml.entities xml.data fry locals calendar calendar.format xml.entities xml.data
validators urls present xml.writer xml.literals xml validators urls present xml.writer xml.literals xml
xmode.code2html lcs.diff2html farkup io.streams.string xmode.code2html lcs.diff2html farkup io.streams.string
html.elements html.streams html.forms ; html html.streams html.forms ;
IN: html.components IN: html.components
GENERIC: render* ( value name renderer -- xml ) GENERIC: render* ( value name renderer -- xml )

View File

@ -1,5 +1,5 @@
USING: help.markup help.syntax io present html ;
IN: html.elements IN: html.elements
USING: help.markup help.syntax io present ;
ARTICLE: "html.elements" "HTML elements" ARTICLE: "html.elements" "HTML elements"
"The " { $vocab-link "html.elements" } " vocabulary provides words for writing HTML tags to the " { $link output-stream } " with a familiar look and feel in the code." "The " { $vocab-link "html.elements" } " vocabulary provides words for writing HTML tags to the " { $link output-stream } " with a familiar look and feel in the code."

View File

@ -3,18 +3,9 @@
USING: io io.styles kernel namespaces prettyprint quotations USING: io io.styles kernel namespaces prettyprint quotations
sequences strings words xml.entities compiler.units effects sequences strings words xml.entities compiler.units effects
xml.data xml.literals urls math math.parser combinators xml.data xml.literals urls math math.parser combinators
present fry io.streams.string xml.writer ; present fry io.streams.string xml.writer html ;
IN: html.elements IN: html.elements
SYMBOL: html
: write-html ( str -- )
H{ { html t } } format ;
: print-html ( str -- )
write-html "\n" write-html ;
<< <<
: elements-vocab ( -- vocab-name ) "html.elements" ; : elements-vocab ( -- vocab-name ) "html.elements" ;
@ -127,24 +118,3 @@ SYMBOL: html
] [ define-attribute-word ] each ] [ define-attribute-word ] each
>> >>
: xhtml-preamble ( -- )
"<?xml version=\"1.0\"?>" write-html
"<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">" write-html ;
: simple-page ( title head-quot body-quot -- )
[ with-string-writer <unescaped> ] bi@
<XML
<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title><-></title>
<->
</head>
<body><-></body>
</html>
XML> write-xml ; inline
: render-error ( message -- )
[XML <span class="error"><-></span> XML] write-xml ;

View File

@ -1,8 +1,8 @@
! Copyright (C) 2008 Slava Pestov ! Copyright (C) 2008 Slava Pestov
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: kernel accessors strings namespaces assocs hashtables io USING: kernel accessors strings namespaces assocs hashtables io
mirrors math fry sequences words continuations html.elements mirrors math fry sequences words continuations
xml.entities ; xml.entities xml.writer xml.literals ;
IN: html.forms IN: html.forms
TUPLE: form errors values validation-failed ; TUPLE: form errors values validation-failed ;
@ -109,7 +109,6 @@ C: <validation-error> validation-error
: render-validation-errors ( -- ) : render-validation-errors ( -- )
form get errors>> form get errors>>
[ [
<ul "errors" =class ul> [ [XML <li><-></li> XML] ] map
[ <li> escape-string write </li> ] each [XML <ul class="errors"><-></ul> XML] write-xml
</ul>
] unless-empty ; ] unless-empty ;

34
basis/html/html.factor Normal file
View File

@ -0,0 +1,34 @@
! Copyright (C) 2004, 2009 Chris Double, Daniel Ehrenberg.
! See http://factorcode.org/license.txt for BSD license.
USING: io kernel xml.data xml.writer io.streams.string
xml.literals io.styles ;
IN: html
SYMBOL: html
: write-html ( str -- )
H{ { html t } } format ;
: print-html ( str -- )
write-html "\n" write-html ;
: xhtml-preamble ( -- )
"<?xml version=\"1.0\"?>" write-html
"<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">" write-html ;
: simple-page ( title head-quot body-quot -- )
[ with-string-writer <unescaped> ] bi@
<XML
<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title><-></title>
<->
</head>
<body><-></body>
</html>
XML> write-xml ; inline
: render-error ( message -- )
[XML <span class="error"><-></span> XML] write-xml ;

View File

@ -4,7 +4,7 @@ USING: combinators generic assocs io io.styles
io.files continuations io.streams.string kernel math math.order io.files continuations io.streams.string kernel math math.order
math.parser namespaces make quotations assocs sequences strings math.parser namespaces make quotations assocs sequences strings
words html.elements xml.entities sbufs continuations destructors words html.elements xml.entities sbufs continuations destructors
accessors arrays urls.encoding ; accessors arrays urls.encoding html ;
IN: html.streams IN: html.streams
GENERIC: browser-link-href ( presented -- href ) GENERIC: browser-link-href ( presented -- href )

View File

@ -5,8 +5,9 @@ namespaces make classes.tuple assocs splitting words arrays io
io.files io.files.info io.encodings.utf8 io.streams.string io.files io.files.info io.encodings.utf8 io.streams.string
unicode.case mirrors math urls present multiline quotations xml unicode.case mirrors math urls present multiline quotations xml
logging continuations logging continuations
xml.data xml.data xml.writer xml.literals strings
html.forms html.forms
html
html.elements html.elements
html.components html.components
html.templates html.templates
@ -15,7 +16,6 @@ html.templates.chloe.components
html.templates.chloe.syntax ; html.templates.chloe.syntax ;
IN: html.templates.chloe IN: html.templates.chloe
! Chloe is Ed's favorite web designer
TUPLE: chloe path ; TUPLE: chloe path ;
C: <chloe> chloe C: <chloe> chloe

View File

@ -73,8 +73,8 @@ DEFER: compile-element
[ compile-start-tag ] [ compile-start-tag ]
[ compile-children ] [ compile-children ]
[ compile-end-tag ] [ compile-end-tag ]
[ drop tag-stack get pop* ] } cleave
} cleave ; tag-stack get pop* ;
ERROR: unknown-chloe-tag tag ; ERROR: unknown-chloe-tag tag ;

View File

@ -21,7 +21,8 @@ M: singleton-class component-tag ( tag class -- )
bi ; bi ;
M: tuple-class component-tag ( tag class -- ) M: tuple-class component-tag ( tag class -- )
[ drop "name" required-attr compile-attr ] [ compile-component-attrs ] 2bi [ drop "name" required-attr compile-attr ]
[ compile-component-attrs ] 2bi
[ render ] [code] ; [ render ] [code] ;
: COMPONENT: : COMPONENT:

View File

@ -6,7 +6,6 @@ classes.tuple assocs splitting words arrays memoize parser lexer
io io.files io.encodings.utf8 io.streams.string io io.files io.encodings.utf8 io.streams.string
unicode.case mirrors fry math urls unicode.case mirrors fry math urls
multiline xml xml.data xml.writer xml.utilities multiline xml xml.data xml.writer xml.utilities
html.elements
html.components html.components
html.templates ; html.templates ;

View File

@ -5,7 +5,7 @@ USING: continuations sequences kernel namespaces debugger
combinators math quotations generic strings splitting combinators math quotations generic strings splitting
accessors assocs fry vocabs.parser accessors assocs fry vocabs.parser
parser lexer io io.files io.streams.string io.encodings.utf8 parser lexer io io.files io.streams.string io.encodings.utf8
html.elements html
html.templates ; html.templates ;
IN: html.templates.fhtml IN: html.templates.fhtml

View File

@ -2,8 +2,8 @@
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: accessors kernel fry io io.encodings.utf8 io.files USING: accessors kernel fry io io.encodings.utf8 io.files
debugger prettyprint continuations namespaces boxes sequences debugger prettyprint continuations namespaces boxes sequences
arrays strings html.elements io.streams.string arrays strings html io.streams.string
quotations xml.data xml.writer ; quotations xml.data xml.writer xml.literals ;
IN: html.templates IN: html.templates
MIXIN: template MIXIN: template
@ -53,9 +53,13 @@ SYMBOL: atom-feeds
: write-atom-feeds ( -- ) : write-atom-feeds ( -- )
atom-feeds get [ atom-feeds get [
<link "alternate" =rel "application/atom+xml" =type first2 [XML
first2 [ =title ] [ =href ] bi* <link
link/> rel="alternate"
type="application/atom+xml"
title=<->
href=<->/>
XML] write-xml
] each ; ] each ;
SYMBOL: nested-template? SYMBOL: nested-template?

View File

@ -1,6 +1,6 @@
! Copyright (C) 2008 Slava Pestov. ! Copyright (C) 2008 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: html.elements math.parser http accessors kernel USING: math.parser http accessors kernel xml.literals xml.writer
io io.streams.string io.encodings.utf8 ; io io.streams.string io.encodings.utf8 ;
IN: http.server.responses IN: http.server.responses
@ -13,11 +13,13 @@ IN: http.server.responses
swap >>body ; swap >>body ;
: trivial-response-body ( code message -- ) : trivial-response-body ( code message -- )
<XML
<html> <html>
<body> <body>
<h1> [ number>string write bl ] [ write ] bi* </h1> <h1><-> <-></h1>
</body> </body>
</html> ; </html>
XML> write-xml ;
: <trivial-response> ( code message -- response ) : <trivial-response> ( code message -- response )
2dup [ trivial-response-body ] with-string-writer 2dup [ trivial-response-body ] with-string-writer

View File

@ -24,7 +24,7 @@ http.parsers
http.server.responses http.server.responses
http.server.remapping http.server.remapping
html.templates html.templates
html.elements html
html.streams ; html.streams ;
IN: http.server IN: http.server
@ -174,8 +174,9 @@ main-responder global [ <404> <trivial-responder> or ] change-at
[ add-responder-nesting ] [ call-responder* ] 2bi ; [ add-responder-nesting ] [ call-responder* ] 2bi ;
: http-error. ( error -- ) : http-error. ( error -- )
"Internal server error" [ ] [ ! TODO: get rid of rot
[ print-error nl :c ] with-html-writer "Internal server error" [ ] rot '[
[ _ print-error nl :c ] with-html-writer
] simple-page ; ] simple-page ;
: <500> ( error -- response ) : <500> ( error -- response )

View File

@ -4,9 +4,9 @@ USING: calendar kernel math math.order math.parser namespaces
parser sequences strings assocs hashtables debugger mime.types parser sequences strings assocs hashtables debugger mime.types
sorting logging calendar.format accessors splitting io io.files sorting logging calendar.format accessors splitting io io.files
io.files.info io.directories io.pathnames io.encodings.binary io.files.info io.directories io.pathnames io.encodings.binary
fry xml.entities destructors urls html.elements fry xml.entities destructors urls html xml.literals
html.templates.fhtml http http.server http.server.responses html.templates.fhtml http http.server http.server.responses
http.server.redirection ; http.server.redirection xml.writer ;
IN: http.server.static IN: http.server.static
TUPLE: file-responder root hook special allow-listings ; TUPLE: file-responder root hook special allow-listings ;
@ -56,18 +56,14 @@ TUPLE: file-responder root hook special allow-listings ;
\ serve-file NOTICE add-input-logging \ serve-file NOTICE add-input-logging
: file. ( name -- ) : file. ( name -- xml )
dup link-info directory? [ "/" append ] when dup link-info directory? [ "/" append ] when
dup <a =href a> escape-string write </a> ; dup [XML <li><a href=<->><-></a></li> XML] ;
: directory. ( path -- ) : directory. ( path -- )
dup file-name [ ] [ dup file-name [ ] [
[ <h1> file-name escape-string write </h1> ] [ file-name ] [ directory-files [ file. ] map ] bi
[ [XML <h1><-></h1> <ul><-></ul> XML] write-xml
<ul>
directory-files [ <li> file. </li> ] each
</ul>
] bi
] simple-page ; ] simple-page ;
: list-directory ( directory -- response ) : list-directory ( directory -- response )

View File

@ -1,5 +1,5 @@
USING: xmode.tokens xmode.marker xmode.catalog kernel locals USING: xmode.tokens xmode.marker xmode.catalog kernel locals
html.elements io io.files sequences words io.encodings.utf8 io io.files sequences words io.encodings.utf8
namespaces xml.entities accessors xml.literals locals xml.writer ; namespaces xml.entities accessors xml.literals locals xml.writer ;
IN: xmode.code2html IN: xmode.code2html
@ -15,7 +15,8 @@ IN: xmode.code2html
tokenize-line htmlize-tokens ; tokenize-line htmlize-tokens ;
: htmlize-lines ( lines mode -- xml ) : htmlize-lines ( lines mode -- xml )
[ f ] 2dip load-mode [ htmlize-line "\n" suffix ] curry map nip ; [ f ] 2dip load-mode [ htmlize-line ] curry map nip
{ "\n" } join ;
: default-stylesheet ( -- xml ) : default-stylesheet ( -- xml )
"resource:basis/xmode/code2html/stylesheet.css" "resource:basis/xmode/code2html/stylesheet.css"

View File

@ -1,7 +1,7 @@
! Copyright (C) 2007, 2008 Doug Coleman. ! Copyright (C) 2007, 2008 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: accessors alien alien.accessors arrays assocs USING: accessors alien alien.accessors arrays assocs
combinators.short-circuit fry hashtables html.elements io combinators.short-circuit fry hashtables html io
kernel math namespaces prettyprint quotations sequences kernel math namespaces prettyprint quotations sequences
sequences.deep sets slots.private vectors vocabs words sequences.deep sets slots.private vectors vocabs words
kernel.private ; kernel.private ;

View File

@ -55,8 +55,6 @@ TUPLE: factor-website < dispatcher ;
: <factor-website> ( -- responder ) : <factor-website> ( -- responder )
factor-website new-dispatcher factor-website new-dispatcher
<wiki> "wiki" add-responder
<user-admin> "user-admin" add-responder
URL" /wiki/view/Front Page" <redirect-responder> "" add-responder ; URL" /wiki/view/Front Page" <redirect-responder> "" add-responder ;
SYMBOL: key-password SYMBOL: key-password
@ -76,8 +74,10 @@ SYMBOL: dh-file
"password" key-password set-global "password" key-password set-global
common-configuration common-configuration
<factor-website> <factor-website>
<pastebin> <factor-boilerplate> <login-config> "pastebin" add-responder <wiki> <login-config> <factor-boilerplate> "wiki" add-responder
<planet> <factor-boilerplate> <login-config> "planet" add-responder <user-admin> <login-config> <factor-boilerplate> "user-admin" add-responder
<pastebin> <login-config> <factor-boilerplate> "pastebin" add-responder
<planet> <login-config> <factor-boilerplate> "planet" add-responder
"/tmp/docs/" <help-webapp> "docs" add-responder "/tmp/docs/" <help-webapp> "docs" add-responder
test-db <alloy> test-db <alloy>
main-responder set-global ; main-responder set-global ;
@ -90,7 +90,7 @@ SYMBOL: dh-file
: init-production ( -- ) : init-production ( -- )
common-configuration common-configuration
<vhost-dispatcher> <vhost-dispatcher>
<factor-website> <login-config> <factor-boilerplate> test-db <alloy> "concatenative.org" add-responder <factor-website> <wiki> <login-config> <factor-boilerplate> "wiki" add-responder test-db <alloy> "concatenative.org" add-responder
<pastebin> <login-config> <factor-boilerplate> test-db <alloy> "paste.factorcode.org" add-responder <pastebin> <login-config> <factor-boilerplate> test-db <alloy> "paste.factorcode.org" add-responder
<planet> <login-config> <factor-boilerplate> test-db <alloy> "planet.factorcode.org" add-responder <planet> <login-config> <factor-boilerplate> test-db <alloy> "planet.factorcode.org" add-responder
home "docs" append-path <help-webapp> test-db <alloy> "docs.factorcode.org" add-responder home "docs" append-path <help-webapp> test-db <alloy> "docs.factorcode.org" add-responder