From d4f865d5f063d0b0e5ece331990c00fea049d7b4 Mon Sep 17 00:00:00 2001 From: Daniel Ehrenberg Date: Fri, 30 Jan 2009 19:28:16 -0600 Subject: [PATCH] Fixing some things I broke --- basis/farkup/farkup.factor | 2 +- basis/furnace/actions/actions.factor | 1 - basis/furnace/chloe-tags/chloe-tags.factor | 19 ++++++----- basis/help/html/html.factor | 4 +-- basis/html/components/components.factor | 2 +- basis/html/elements/elements-docs.factor | 2 +- basis/html/elements/elements.factor | 32 +---------------- basis/html/forms/forms.factor | 9 +++-- basis/html/html.factor | 34 +++++++++++++++++++ basis/html/streams/streams.factor | 2 +- basis/html/templates/chloe/chloe.factor | 3 +- .../html/templates/chloe/syntax/syntax.factor | 1 - basis/html/templates/fhtml/fhtml.factor | 2 +- basis/html/templates/templates.factor | 14 +++++--- basis/http/server/responses/responses.factor | 14 ++++---- basis/http/server/server.factor | 7 ++-- basis/http/server/static/static.factor | 16 ++++----- basis/xmode/code2html/code2html.factor | 2 +- 18 files changed, 86 insertions(+), 80 deletions(-) create mode 100644 basis/html/html.factor diff --git a/basis/farkup/farkup.factor b/basis/farkup/farkup.factor index a752694764..bad41296ee 100755 --- a/basis/farkup/farkup.factor +++ b/basis/farkup/farkup.factor @@ -1,6 +1,6 @@ ! Copyright (C) 2008 Doug Coleman. ! 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 sequences sequences.deep strings xml.entities xml.literals vectors splitting xmode.code2html urls.encoding xml.data diff --git a/basis/furnace/actions/actions.factor b/basis/furnace/actions/actions.factor index 72a7b76d23..97cb73c9cb 100644 --- a/basis/furnace/actions/actions.factor +++ b/basis/furnace/actions/actions.factor @@ -10,7 +10,6 @@ furnace.utilities furnace.redirection furnace.conversations html.forms -html.elements html.components html.components html.templates.chloe diff --git a/basis/furnace/chloe-tags/chloe-tags.factor b/basis/furnace/chloe-tags/chloe-tags.factor index 1c320182bf..dd24d8dcde 100644 --- a/basis/furnace/chloe-tags/chloe-tags.factor +++ b/basis/furnace/chloe-tags/chloe-tags.factor @@ -8,6 +8,7 @@ xml.data xml.entities xml.writer xml.utilities +xml.literals html.components html.elements html.forms @@ -20,7 +21,6 @@ http.server http.server.redirection http.server.responses furnace.utilities ; -QUALIFIED-WITH: assocs a IN: furnace.chloe-tags ! Chloe tags @@ -56,11 +56,11 @@ CHLOE: write-atom drop [ write-atom-feeds ] [code] ; : compile-link-attrs ( tag -- ) #! Side-effects current namespace. - attrs>> '[ [ [ _ ] dip link-attr ] each-responder ] [code] ; + '[ [ [ _ ] dip link-attr ] each-responder ] [code] ; : a-start-tag ( tag -- ) [ > non-chloe-attrs-only compile-attrs ] [ compile-link-attrs ] [ compile-a-url ] tri @@ -116,17 +116,18 @@ CHLOE: form } cleave ] compile-with-scope ; -STRING: button-tag-markup - -
-
-; +: button-tag-markup ( -- xml ) + +
+ + XML> ; : add-tag-attrs ( attrs tag -- ) attrs>> swap update ; CHLOE: button - button-tag-markup string>xml body>> + button-tag-markup body>> { [ [ attrs>> chloe-attrs-only ] dip add-tag-attrs ] [ [ attrs>> non-chloe-attrs-only ] dip "button" deep-tag-named add-tag-attrs ] diff --git a/basis/help/html/html.factor b/basis/help/html/html.factor index ec52264643..820261dd32 100644 --- a/basis/help/html/html.factor +++ b/basis/help/html/html.factor @@ -1,11 +1,11 @@ ! Copyright (C) 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. 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 tools.vocabs tools.vocabs.browser namespaces prettyprint io vocabs.loader serialize fry memoize unicode.case math.order -sorting debugger ; +sorting debugger html.elements html ; IN: help.html : escape-char ( ch -- ) diff --git a/basis/html/components/components.factor b/basis/html/components/components.factor index eec7508c5e..be197d10e6 100644 --- a/basis/html/components/components.factor +++ b/basis/html/components/components.factor @@ -6,7 +6,7 @@ hashtables combinators continuations math strings inspector fry locals calendar calendar.format xml.entities xml.data validators urls present xml.writer xml.literals xml xmode.code2html lcs.diff2html farkup io.streams.string -html.elements html.streams html.forms ; +html html.streams html.forms ; IN: html.components GENERIC: render* ( value name renderer -- xml ) diff --git a/basis/html/elements/elements-docs.factor b/basis/html/elements/elements-docs.factor index dab9376413..05b202e08e 100644 --- a/basis/html/elements/elements-docs.factor +++ b/basis/html/elements/elements-docs.factor @@ -1,5 +1,5 @@ +USING: help.markup help.syntax io present html ; IN: html.elements -USING: help.markup help.syntax io present ; 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." diff --git a/basis/html/elements/elements.factor b/basis/html/elements/elements.factor index 005d67f221..b0e46984d7 100644 --- a/basis/html/elements/elements.factor +++ b/basis/html/elements/elements.factor @@ -3,18 +3,9 @@ USING: io io.styles kernel namespaces prettyprint quotations sequences strings words xml.entities compiler.units effects 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 -SYMBOL: html - -: write-html ( str -- ) - H{ { html t } } format ; - -: print-html ( str -- ) - write-html "\n" write-html ; - << : elements-vocab ( -- vocab-name ) "html.elements" ; @@ -127,24 +118,3 @@ SYMBOL: html ] [ define-attribute-word ] each >> - -: xhtml-preamble ( -- ) - "" write-html - "" write-html ; - -: simple-page ( title head-quot body-quot -- ) - [ with-string-writer ] bi@ - - - - - <-> - <-> - - <-> - - XML> write-xml ; inline - -: render-error ( message -- ) - [XML <-> XML] write-xml ; diff --git a/basis/html/forms/forms.factor b/basis/html/forms/forms.factor index f92f8d0764..0a69e2ed70 100644 --- a/basis/html/forms/forms.factor +++ b/basis/html/forms/forms.factor @@ -1,8 +1,8 @@ ! Copyright (C) 2008 Slava Pestov ! See http://factorcode.org/license.txt for BSD license. USING: kernel accessors strings namespaces assocs hashtables io -mirrors math fry sequences words continuations html.elements -xml.entities ; +mirrors math fry sequences words continuations +xml.entities xml.writer xml.literals ; IN: html.forms TUPLE: form errors values validation-failed ; @@ -109,7 +109,6 @@ C: validation-error : render-validation-errors ( -- ) form get errors>> [ -
    - [
  • escape-string write
  • ] each -
+ [ [XML
  • <->
  • XML] ] map + [XML
      <->
    XML] write-xml ] unless-empty ; diff --git a/basis/html/html.factor b/basis/html/html.factor new file mode 100644 index 0000000000..5469941972 --- /dev/null +++ b/basis/html/html.factor @@ -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 ( -- ) + "" write-html + "" write-html ; + +: simple-page ( title head-quot body-quot -- ) + [ with-string-writer ] bi@ + + + + + <-> + <-> + + <-> + + XML> write-xml ; inline + +: render-error ( message -- ) + [XML <-> XML] write-xml ; diff --git a/basis/html/streams/streams.factor b/basis/html/streams/streams.factor index 24d9dceb80..483ace064e 100644 --- a/basis/html/streams/streams.factor +++ b/basis/html/streams/streams.factor @@ -4,7 +4,7 @@ USING: combinators generic assocs help http io io.styles io.files continuations io.streams.string kernel math math.order math.parser namespaces make quotations assocs sequences strings words html.elements xml.entities sbufs continuations destructors -accessors arrays urls.encoding ; +accessors arrays urls.encoding html ; IN: html.streams GENERIC: browser-link-href ( presented -- href ) diff --git a/basis/html/templates/chloe/chloe.factor b/basis/html/templates/chloe/chloe.factor index c3c1ec2b9e..47c7934c83 100644 --- a/basis/html/templates/chloe/chloe.factor +++ b/basis/html/templates/chloe/chloe.factor @@ -5,8 +5,9 @@ namespaces make classes.tuple assocs splitting words arrays io io.files io.files.info io.encodings.utf8 io.streams.string unicode.case mirrors math urls present multiline quotations xml logging continuations -xml.data +xml.data xml.writer xml.literals strings html.forms +html html.elements html.components html.templates diff --git a/basis/html/templates/chloe/syntax/syntax.factor b/basis/html/templates/chloe/syntax/syntax.factor index fb457ff1df..c2ecd4506b 100644 --- a/basis/html/templates/chloe/syntax/syntax.factor +++ b/basis/html/templates/chloe/syntax/syntax.factor @@ -6,7 +6,6 @@ classes.tuple assocs splitting words arrays memoize parser lexer io io.files io.encodings.utf8 io.streams.string unicode.case mirrors fry math urls multiline xml xml.data xml.writer xml.utilities -html.elements html.components html.templates ; diff --git a/basis/html/templates/fhtml/fhtml.factor b/basis/html/templates/fhtml/fhtml.factor index 992b660070..23bb469627 100644 --- a/basis/html/templates/fhtml/fhtml.factor +++ b/basis/html/templates/fhtml/fhtml.factor @@ -5,7 +5,7 @@ USING: continuations sequences kernel namespaces debugger combinators math quotations generic strings splitting accessors assocs fry vocabs.parser parser lexer io io.files io.streams.string io.encodings.utf8 -html.elements +html html.templates ; IN: html.templates.fhtml diff --git a/basis/html/templates/templates.factor b/basis/html/templates/templates.factor index 57418a3e02..6951f09efe 100644 --- a/basis/html/templates/templates.factor +++ b/basis/html/templates/templates.factor @@ -2,8 +2,8 @@ ! See http://factorcode.org/license.txt for BSD license. USING: accessors kernel fry io io.encodings.utf8 io.files debugger prettyprint continuations namespaces boxes sequences -arrays strings html.elements io.streams.string -quotations xml.data xml.writer ; +arrays strings html io.streams.string +quotations xml.data xml.writer xml.literals ; IN: html.templates MIXIN: template @@ -53,9 +53,13 @@ SYMBOL: atom-feeds : write-atom-feeds ( -- ) atom-feeds get [ - + first2 [XML + + href=<->/> + XML] write-xml ] each ; SYMBOL: nested-template? diff --git a/basis/http/server/responses/responses.factor b/basis/http/server/responses/responses.factor index 4056f0c7f0..c9b4600ac8 100644 --- a/basis/http/server/responses/responses.factor +++ b/basis/http/server/responses/responses.factor @@ -1,6 +1,6 @@ ! Copyright (C) 2008 Slava Pestov. ! 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 ; IN: http.server.responses @@ -13,11 +13,13 @@ IN: http.server.responses swap >>body ; : trivial-response-body ( code message -- ) - - -

    [ number>string write bl ] [ write ] bi*

    - - ; + + +

    <-> <->

    + + + XML> write-xml ; : ( code message -- response ) 2dup [ trivial-response-body ] with-string-writer diff --git a/basis/http/server/server.factor b/basis/http/server/server.factor index a886d7bae7..90a8ddb51a 100755 --- a/basis/http/server/server.factor +++ b/basis/http/server/server.factor @@ -24,7 +24,7 @@ http.parsers http.server.responses http.server.remapping html.templates -html.elements +html html.streams ; IN: http.server @@ -174,8 +174,9 @@ main-responder global [ <404> or ] change-at [ add-responder-nesting ] [ call-responder* ] 2bi ; : http-error. ( error -- ) - "Internal server error" [ ] [ - [ print-error nl :c ] with-html-writer + ! TODO: get rid of rot + "Internal server error" [ ] rot '[ + [ _ print-error nl :c ] with-html-writer ] simple-page ; : <500> ( error -- response ) diff --git a/basis/http/server/static/static.factor b/basis/http/server/static/static.factor index c910529d73..67ce0237a4 100644 --- a/basis/http/server/static/static.factor +++ b/basis/http/server/static/static.factor @@ -4,9 +4,9 @@ USING: calendar kernel math math.order math.parser namespaces parser sequences strings assocs hashtables debugger mime.types sorting logging calendar.format accessors splitting io io.files 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 -http.server.redirection ; +http.server.redirection xml.writer ; IN: http.server.static 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 -: file. ( name -- ) +: file. ( name -- xml ) dup link-info directory? [ "/" append ] when - dup
    escape-string write ; + dup [XML
  • ><->
  • XML] ; : directory. ( path -- ) dup file-name [ ] [ - [

    file-name escape-string write

    ] - [ - - ] bi + [ file-name ] [ directory-files [ file. ] map ] bi + [XML

    <->

    XML] write-xml ] simple-page ; : list-directory ( directory -- response ) diff --git a/basis/xmode/code2html/code2html.factor b/basis/xmode/code2html/code2html.factor index 665d334fd2..9889a98a99 100644 --- a/basis/xmode/code2html/code2html.factor +++ b/basis/xmode/code2html/code2html.factor @@ -1,5 +1,5 @@ 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 ; IN: xmode.code2html