{ f } [ \ a-defined-word empty-examples? ] unit-test
{ f } [ \ keep empty-examples? ] unit-test
-{ { $description $values } } [ \ an-empty-word-with-a-unique-name missing-sections natural-sort ] unit-test
-{ { $description $values } } [ \ a-defined-word missing-sections natural-sort ] unit-test
+{ { $description $inputs $outputs } } [ \ an-empty-word-with-a-unique-name missing-sections natural-sort ] unit-test
+{ { $description $inputs $outputs } } [ \ a-defined-word missing-sections natural-sort ] unit-test
{ { } } [ \ keep missing-sections ] unit-test
{ { "a.b" "a.b.c" } } [ { "a.b" "a.b.private" "a.b.c.private" "a.b.c" } filter-private ] unit-test
{ { $examples } } [ \ an-empty-word-with-a-unique-name word-defines-sections ] unit-test
{ { $examples } } [ \ a-defined-word word-defines-sections ] unit-test
{ { } } [ \ a-nonexistent-word word-defines-sections ] unit-test
-{ { $values $description $examples } } [ \ keep word-defines-sections ] unit-test
-{ { $values $contract $examples } } [ \ <word-help-coverage> word-defines-sections ] unit-test
+{ { $inputs $outputs $description $examples } } [ \ keep word-defines-sections ] unit-test
+{ { $inputs $outputs $contract $examples } } [ \ <word-help-coverage> word-defines-sections ] unit-test
{ an-empty-word-with-a-unique-name } [ "an-empty-word-with-a-unique-name" find-word ] unit-test
: filter-private ( seq -- no-private )
[ ".private" ?tail nip ] reject ; inline
-: ?remove-$values ( word spec -- spec )
- \ $values over member? [
- swap "declared-effect" word-prop [
- [ in>> ] [ out>> ] bi append [
- \ $values swap remove
- ] [ drop ] if-empty
- ] when* ] [ nip ] if ;
+: ?remove-$inputs ( word spec -- word spec )
+ over "declared-effect" word-prop [
+ in>> empty? [ \ $inputs swap remove ] when
+ ] when* ;
+
+: ?remove-$outputs ( word spec -- word spec )
+ over "declared-effect" word-prop [
+ out>> empty? [ \ $outputs swap remove ] when
+ ] when* ;
: should-define ( word -- spec )
dup {
{ [ dup primitive? ] [ drop { $description } ] }
! aliases should describe why they exist but ideally $values should be
! automatically inherited from the aliased word's docs
- { [ dup alias? ] [ drop { $values $description } ] }
- { [ dup error-class? ] [ drop { $values $description $error-description } ] }
+ { [ dup alias? ] [ drop { $inputs $outputs $description } ] }
+ { [ dup error-class? ] [ drop { $inputs $outputs $description $error-description } ] }
{ [ dup class? ] [ drop { $class-description } ] }
- { [ dup generic? ] [ drop { $values $contract $examples } ] }
- { [ dup word? ] [ drop { $values $description $examples } ] }
- } cond ?remove-$values ;
+ { [ dup generic? ] [ drop { $inputs $outputs $contract $examples } ] }
+ { [ dup word? ] [ drop { $inputs $outputs $description $examples } ] }
+ } cond ?remove-$inputs ?remove-$outputs nip ;
: word-defines-sections ( word -- seq )
word-help [ ignored-words member? not ] filter [ ?first ] map ;