{ f } [ \ a-defined-word empty-examples? ] unit-test
{ f } [ \ keep empty-examples? ] 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
+{ { $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
{ { } } [ \ 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
-{ { $inputs $outputs $description $examples } } [ \ keep word-defines-sections ] unit-test
-{ { $inputs $outputs $contract $examples } } [ \ <word-help-coverage> 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
{ 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-$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* ;
+: ?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 ;
: 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 { $inputs $outputs $description } ] }
- { [ dup error-class? ] [ drop { $inputs $outputs $description $error-description } ] }
+ { [ dup alias? ] [ drop { $values $description } ] }
+ { [ dup error-class? ] [ drop { $values $description $error-description } ] }
{ [ dup class? ] [ drop { $class-description } ] }
- { [ dup generic? ] [ drop { $inputs $outputs $contract $examples } ] }
- { [ dup word? ] [ drop { $inputs $outputs $description $examples } ] }
- } cond ?remove-$inputs ?remove-$outputs nip ;
+ { [ dup generic? ] [ drop { $values $contract $examples } ] }
+ { [ dup word? ] [ drop { $values $description $examples } ] }
+ } cond ?remove-$values ;
: word-defines-sections ( word -- seq )
word-help [ ignored-words member? not ] filter [ ?first ] map ;