remove math.blas.syntax and merge parsing words into math.blas.vectors/matrices
[factor/jcg.git] / basis / html / templates / chloe / components / components.factor
blob3041120d43d222470e2d11cae62265496f07ad30
1 ! Copyright (C) 2008 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
5 html.components
6 html.templates.chloe.compiler
7 html.templates.chloe.syntax ;
8 IN: html.templates.chloe.components
9   
10 GENERIC: component-tag ( tag class -- )
12 M: singleton-class component-tag ( tag class -- )
13     [ "name" required-attr compile-attr ]
14     [ literalize [ render ] [code-with] ]
15     bi* ;
17 : compile-component-attrs ( tag class -- )
18     [ attrs>> [ drop main>> "name" = not ] assoc-filter ] dip
19     [ all-slots swap '[ name>> _ at compile-attr ] each ]
20     [ [ boa ] [code-with] ]
21     bi ;
23 M: tuple-class component-tag ( tag class -- )
24     [ drop "name" required-attr compile-attr ] [ compile-component-attrs ] 2bi
25     [ render ] [code] ;
27 : COMPONENT:
28     scan-word
29     [ name>> ] [ '[ _ component-tag ] ] bi
30     define-chloe-tag ;
31     parsing