0400d5b703 2011-03-30 crc: {{ 0400d5b703 2011-03-30 crc: 3 elements content lines words 0400d5b703 2011-03-30 crc: 0400d5b703 2011-03-30 crc: : clean ( $- ) 0400d5b703 2011-03-30 crc: withLength 0400d5b703 2011-03-30 crc: [ dup @ 10 13 within [ 999 swap &! sip ] ifTrue 1+ ] times drop ; 0400d5b703 2011-03-30 crc: 0400d5b703 2011-03-30 crc: : remaining ( $-n ) 0400d5b703 2011-03-30 crc: 32 ^strings'splitAtChar ^strings'chop drop ; 0400d5b703 2011-03-30 crc: 0400d5b703 2011-03-30 crc: : getLine ( $-$$ ) 0400d5b703 2011-03-30 crc: 999 ^strings'splitAtChar ^strings'chop ; 0400d5b703 2011-03-30 crc: 0400d5b703 2011-03-30 crc: : countWords ( $- ) 0400d5b703 2011-03-30 crc: [ words ++ remaining dup 1 <> ] while drop ; 0400d5b703 2011-03-30 crc: 0400d5b703 2011-03-30 crc: : loadSourceData ( $- ) 0400d5b703 2011-03-30 crc: here swap ^files'slurp here !content heap +! 32 , 0 , 0400d5b703 2011-03-30 crc: @content clean ; 0400d5b703 2011-03-30 crc: 0400d5b703 2011-03-30 crc: : countLines ( $- ) 0400d5b703 2011-03-30 crc: [ getLine lines ++ countWords dup 1 <> ] while drop ; 0400d5b703 2011-03-30 crc: ---reveal--- 0400d5b703 2011-03-30 crc: : wc ( $-nnn ) 0400d5b703 2011-03-30 crc: lines words [ 0 swap ! ] bi@ 0400d5b703 2011-03-30 crc: heap [ loadSourceData @content countLines ] preserve 0400d5b703 2011-03-30 crc: @lines @words @content getLength [ 1- ] tri@ ; 0400d5b703 2011-03-30 crc: }}