1 ! Copyright (C) 2008, 2010 Slava Pestov.
2 ! See https://factorcode.org/license.txt for BSD license.
3 USING: accessors assocs classes.singleton classes.tuple
4 html.components html.templates.chloe.compiler
5 html.templates.chloe.syntax kernel namespaces parser quotations
7 IN: html.templates.chloe.components
9 : render-quot ( -- quot )
15 GENERIC: component-tag ( tag class -- )
17 M: singleton-class component-tag
18 [ "name" required-attr compile-attr ]
19 [ literalize render-quot [code-with] ]
22 : compile-component-attrs ( tag class -- )
23 [ attrs>> [ main>> "name" = ] reject-keys ] dip
24 [ all-slots swap '[ name>> _ at compile-attr ] each ]
25 [ [ boa ] [code-with] ]
28 M: tuple-class component-tag
29 [ drop "name" required-attr compile-attr ]
30 [ compile-component-attrs ] 2bi
35 [ name>> ] [ '[ _ component-tag ] ] bi