1 ! Copyright (C) 2008, 2010 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors assocs sequences kernel parser fry quotations
4 classes.tuple classes.singleton namespaces
6 html.templates.chloe.compiler
7 html.templates.chloe.syntax ;
8 IN: html.templates.chloe.components
10 : render-quot ( -- quot )
16 GENERIC: component-tag ( tag class -- )
18 M: singleton-class component-tag ( tag class -- )
19 [ "name" required-attr compile-attr ]
20 [ literalize render-quot [code-with] ]
23 : compile-component-attrs ( tag class -- )
24 [ attrs>> [ drop main>> "name" = ] assoc-reject ] dip
25 [ all-slots swap '[ name>> _ at compile-attr ] each ]
26 [ [ boa ] [code-with] ]
29 M: tuple-class component-tag ( tag class -- )
30 [ drop "name" required-attr compile-attr ]
31 [ compile-component-attrs ] 2bi
36 [ name>> ] [ '[ _ component-tag ] ] bi