Rebol Programming/collect-words
USAGE:
editCOLLECT-WORDS block /deep /set /ignore words
DESCRIPTION:
editCollect unique words used in a block (used for context construction).
COLLECT-WORDS is a function value.
ARGUMENTS
edit- block -- (Type: block)
REFINEMENTS
edit- /deep -- Include nested blocks
- /set -- Only include set-words
- /ignore -- Ignore prior words
- words -- Words to ignore (Type: object port block)
SOURCE CODE
editcollect-words: func [ {Collect unique words used in a block (used for context construction).} block [block!] /deep "Include nested blocks" /set "Only include set-words" /ignore "Ignore prior words" words [object! port! block!] "Words to ignore" /local rule word blk w ][ deep: either deep [[path! | set-path! | lit-path! | into rule]] [any-block!] word: either set [set-word!] [any-word!] blk: [] parse block rule: [ set w word (insert tail blk to-word to-string w) | deep | skip ] also either ignore [ unless block? words [words: words-of words] difference blk intersect blk words ] [ unique blk ] (clear blk set [block words] none) ]