1 ! Copyright (C) 2008 Slava Pestov.
2 ! See https://factorcode.org/license.txt for BSD license.
3 USING: accessors assocs kernel lexer namespaces parser sequences
5 IN: html.templates.chloe.syntax
9 chloe-tags [ H{ } clone ] initialize
11 : define-chloe-tag ( name quot -- ) swap chloe-tags get set-at ;
14 scan-token parse-definition define-chloe-tag ;
16 CONSTANT: chloe-ns "https://factorcode.org/chloe/1.0"
18 : chloe-name? ( name -- ? )
21 XML-NS: chloe-name https://factorcode.org/chloe/1.0
23 : required-attr ( tag name -- value )
24 [ nip ] [ chloe-name attr ] 2bi
25 [ ] [ " attribute is required" append throw ] ?if ;
27 : optional-attr ( tag name -- value )