html.templates: adding meta tag and some chloe tests.

flac
John Benediktsson 2020-03-02 15:57:19 -08:00 committed by Steve Ayerhart
parent 94378fb7c2
commit 2597a4a8f6
No known key found for this signature in database
GPG Key ID: 5BFD39C5359E967D
3 changed files with 49 additions and 5 deletions

View File

@ -194,3 +194,21 @@ TUPLE: person first-name last-name ;
] run-template
] with-scope
] [ error>> tag-not-allowed-here? ] must-fail-with
{ "This is <style type=\"text/css\"> * { font-family: monospace; } </style>" } [
SBUF" " clone style [
[ "test16" test-template call-template ] run-template
] with-variable
] unit-test
{ "<script type=\"text/javascript\"> function testAlerts() { window.alert(\"Hello, world!\");} </script>" } [
SBUF" " clone script [
[ "test17" test-template call-template ] run-template
] with-variable
] unit-test
{ "<meta name=\"author\" content=\"John Doe\"/><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"/>" } [
V{ } clone meta [
[ "test18" test-template call-template ] run-template
] with-variable
] unit-test

View File

@ -1,6 +1,6 @@
! Copyright (C) 2008 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
USING: accessors assocs html.components html.forms
USING: accessors arrays assocs fry html.components html.forms
html.templates html.templates.chloe.compiler
html.templates.chloe.components html.templates.chloe.syntax
io.encodings.utf8 io.files io.files.info kernel logging make
@ -49,6 +49,14 @@ CHLOE: write-script
[XML <script type="text/javascript"> <-> </script> XML]
] [xml-code] ;
CHLOE: meta
[ "name" optional-attr ]
[ "content" optional-attr ] bi
'[ _ _ add-meta ] [code] ;
CHLOE: write-meta
drop [ get-meta ] [xml-code] ;
CHLOE: even
[ "index" value even? swap when ] process-children ;

View File

@ -1,9 +1,13 @@
! Copyright (C) 2008, 2009 Slava Pestov.
! 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 io.streams.string assocs
quotations xml.data xml.writer xml.syntax ;
USING: accessors arrays assocs boxes continuations debugger io
io.encodings.utf8 io.files io.streams.string kernel namespaces
prettyprint quotations sequences strings xml.data xml.syntax
xml.writer ;
! USING: accessors kernel fry io io.encodings.utf8 io.files
! debugger prettyprint continuations namespaces boxes sequences
! arrays strings html io.streams.string assocs
! quotations xml.data xml.writer xml.syntax ;
IN: html.templates
MIXIN: template
@ -71,6 +75,19 @@ SYMBOL: script
: write-script ( -- )
get-script write ;
SYMBOL: meta
: add-meta ( name content -- )
2array meta get push ;
: get-meta ( -- xml )
meta get [
[XML <meta name=<-> content=<->/> XML]
] { } assoc>map ;
: write-meta ( -- )
get-meta write-xml ;
SYMBOL: atom-feeds
: add-atom-feed ( title url -- )
@ -104,6 +121,7 @@ M: f call-template* drop call-next-template ;
title [ [ <box> ] unless* ] change
style [ [ SBUF" " clone ] unless* ] change
script [ [ SBUF" " clone ] unless* ] change
meta [ [ V{ } clone ] unless* ] change
atom-feeds [ V{ } like ] change
[