define-annotation ( NAME -- )


Vocabulary
annotations

Definition
USING: functors.backend functors.private io io.streams.string
kernel locals parser present sequences tools.crossref words ;

IN: annotations

:: define-annotation ( NAME -- )
[ "(" write NAME present write ")" write ]
with-string-writer create-in :> (NAME)
[ "!" write NAME present write ] with-string-writer
create-in :> !NAME
[ "" write NAME present write "s" write ]
with-string-writer create-in :> NAMEs
[ "" write NAME present write "s." write ]
with-string-writer create-in :> NAMEs. (NAME)
T{ fake-quotation { seq { drop } } } fake-quotations> first
( str -- ) define-declared* last-word make-inline !NAME T{
fake-quotation
{ seq { (parse-annotation) \ (NAME) suffix! } }
} fake-quotations> first define-syntax NAMEs T{
fake-quotation
{ seq { \ (NAME) (non-annotation-usage) } }
} fake-quotations> first ( -- usages ) define-declared*
NAMEs.
T{ fake-quotation { seq { NAMEs sorted-definitions. } } }
fake-quotations> first ( -- ) define-declared* ;