Clean up history code

db4
Slava Pestov 2009-01-16 15:22:13 -06:00
parent 4381c8bc58
commit 5f2fd87ce1
1 changed files with 11 additions and 9 deletions

View File

@ -9,15 +9,11 @@ TUPLE: history document elements index ;
: <history> ( document -- history ) : <history> ( document -- history )
V{ } clone 0 history boa ; V{ } clone 0 history boa ;
: history-add ( history -- input ) <PRIVATE
dup elements>> length 1+ >>index
[ document>> doc-string [ <input> ] [ empty? ] bi ] keep
'[ [ _ elements>> push ] keep ] unless ;
: save-history ( history -- ) : save-history ( history -- input )
[ document>> doc-string ] keep [ document>> doc-string [ <input> ] [ empty? ] bi ] keep
'[ <input> _ [ index>> ] [ elements>> ] bi set-nth ] '[ [ _ [ index>> ] [ elements>> ] bi set-nth ] keep ] unless ;
unless-empty ;
: update-document ( history -- ) : update-document ( history -- )
[ [ index>> ] [ elements>> ] bi nth string>> ] [ [ index>> ] [ elements>> ] bi nth string>> ]
@ -31,12 +27,18 @@ TUPLE: history document elements index ;
: history-recall ( history i -- ) : history-recall ( history i -- )
[ [ elements>> empty? ] keep ] dip '[ [ [ elements>> empty? ] keep ] dip '[
_ _
[ save-history ] [ save-history drop ]
[ _ change-history-index ] [ _ change-history-index ]
[ update-document ] [ update-document ]
tri tri
] unless ; ] unless ;
PRIVATE>
: history-add ( history -- input )
dup elements>> length 1+ >>index
save-history ;
: history-recall-previous ( history -- ) : history-recall-previous ( history -- )
-1 history-recall ; -1 history-recall ;