tuple-class - Factor Documentation (original) (raw)
Class description
The class of tuple class words.
Examples
USING: classes.tuple prettyprint ; IN: scratchpad TUPLE: name title first last ; name tuple-class? .
t
See also
define-tuple-class, TUPLE:
Definition
PREDICATE: tuple-class < class
"metaclass" word-prop tuple-class eq? ;
Methods
USING: classes.algebra classes.algebra.private classes.builtin
classes.tuple combinators kernel ;
M: tuple-class (classes-intersect?)
{
{ [ over builtin-class? ] [ drop tuple eq? ] }
{
[ over tuple-class? ]
[ [ class<= ] [ swap class<= ] 2bi or ]
}
} cond ;
USING: classes.private classes.tuple classes.tuple.private
kernel ;
M: tuple-class (define-tuple-class)
pick reset-final 3dup tuple-class-unchanged?
[ 2drop ?define-symbol ] [ redefine-tuple-class ] if ;
USING: classes.algebra.private classes.tuple make ;
M: tuple-class (flatten-class) , ;
USING: classes.tuple classes.tuple.private kernel words ;
M: tuple-class boa
[ "boa-check" word-prop [ call ] when* ] [ tuple-layout ] bi
;
USING: accessors arrays classes.tuple effects kernel sequences ;
M: tuple-class boa-effect
[ all-slots [ name>> ] map ] [ name>> 1array ] bi ;
USING: classes.tuple classes.tuple.parser kernel ;
M: tuple-class boa>object swap slots>tuple ;
USING: classes.tuple html.templates.chloe.compiler
html.templates.chloe.components html.templates.chloe.syntax
kernel ;
M: tuple-class component-tag
[ drop "name" required-attr compile-attr ]
[ compile-component-attrs ] 2bi render-quot [code] ;
M: tuple-class final-class? "final" word-prop ;
USING: classes.tuple delegate.private ;
M: tuple-class group-words all-slots slot-group-words ;
USING: classes.tuple kernel slots ;
M: tuple-class initial-value* new t ;
USING: classes classes.tuple classes.tuple.private kernel ;
M: tuple-class instance?
dup echelon-of layout-class-offset tuple-instance? ;
USING: classes classes.private classes.tuple kernel words ;
M: tuple-class make-final
[ dup class-usage ?metaclass-changed ]
[ t "final" set-word-prop ] bi ;
USING: classes.tuple mongodb.tuple.collection
mongodb.tuple.collection.private ;
M: tuple-class mdb-index-map (mdb-index-map) ;
USING: classes.tuple mongodb.tuple.collection
mongodb.tuple.collection.private ;
M: tuple-class mdb-slot-map (mdb-slot-map) ;
USING: classes.private classes.tuple kernel words ;
M: tuple-class metaclass-changed
nip tuple over "slots" word-prop define-tuple-class ;
USING: classes.tuple classes.tuple.private kernel words ;
M: tuple-class new
[ "prototype" word-prop ] [ (clone) ]
[ tuple-layout ] ?if ;
USING: classes.private classes.tuple kernel ;
M: tuple-class rank-class drop 1 ;
USING: classes.private classes.tuple generic kernel words ;
M: tuple-class reset-class
[ dup "slots" word-prop forget-slot-accessors ] [
[ M\ tuple-class reset-class (call-next-method) ] [
{ "layout" "slots" "boa-check" "prototype" "final" }
remove-word-props
] bi
] bi ;
USING: classes.tuple combinators prettyprint.backend
prettyprint.sections see.private sequences vocabs.prettyprint
words ;
M: tuple-class see-class*
<colon \ TUPLE: pprint-word {
[ pprint-word ]
[ superclass. ]
[
<block "slots" word-prop [ pprint-slot ] each
block> pprint-;
]
[ tuple-declarations. ]
} cleave block> ;
USING: classes.tuple classes.tuple.private ;
M: tuple-class slots>tuple check-slots pad-slots make-tuple ;
USING: classes.tuple mongodb.tuple.collection
mongodb.tuple.collection.private ;
M: tuple-class tuple-collection (mdb-collection) ;
USING: classes.private classes.tuple classes.tuple.private
combinators ;
M: tuple-class update-class
{
[ define-boa-check ]
[ define-tuple-layout ]
[ define-tuple-slots ]
[ define-tuple-predicate ]
[ define-tuple-prototype ]
} cleave ;