]> gitweb.factorcode.org Git - factor.git/commitdiff
cursors: -find iterator
authorJoe Groff <arcata@gmail.com>
Sat, 27 Mar 2010 03:08:29 +0000 (20:08 -0700)
committerJoe Groff <arcata@gmail.com>
Sat, 27 Mar 2010 03:08:29 +0000 (20:08 -0700)
extra/cursors/cursors-tests.factor
extra/cursors/cursors.factor

index 158769ff14524601589694d6b5d9deda18ad98f9..d71999ab871c1d6c36f63891c6be0e763be72a53 100644 (file)
@@ -8,6 +8,10 @@ IN: cursors.tests
     { } make
 ] unit-test
 
+[ T{ linear-cursor f 3 1 } ] [
+    T{ linear-cursor f 1 1 } T{ linear-cursor f 5 1 } [ value>> 3 mod zero? ] -find
+] unit-test
+
 [ { 1 3 } ] [
     [ T{ linear-cursor f 1 2 } T{ linear-cursor f 5 2 } [ value>> , ] -each ]
     { } make
index 030e9ab72f30dfcc0b0a1ebf18b066247da96745..d7fe5fb893b4ec0412fd5ace29c2a6cece411070 100644 (file)
@@ -125,6 +125,9 @@ M: end-of-stream cursor-stream-ended? drop t ; inline
     [ '[ dup _ cursor>= ] ]
     [ '[ _ keep inc-cursor ] ] bi* until drop ; inline
 
+: -find ( ... begin end quot: ( ... cursor -- ... ? ) -- ... cursor )
+    '[ dup _ cursor>= [ t ] [ dup @ ] if ] [ inc-cursor ] until ; inline
+
 : -in- ( quot -- quot' )
     '[ cursor-value-unsafe @ ] ; inline