]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/spider/unique-deque/unique-deque.factor
factor: trim using lists
[factor.git] / extra / spider / unique-deque / unique-deque.factor
index 28d92633d1b4e8a5c2fd5677adef9d1d1066637d..f099da6aace1bf4c53d9ed01f07e5dd775679dab 100644 (file)
@@ -1,8 +1,15 @@
 ! Copyright (C) 2009 Doug Coleman.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: accessors assocs deques dlists kernel spider ;
+USING: accessors assocs deques dlists kernel ;
 IN: spider.unique-deque
 
+TUPLE: todo-url url depth ;
+
+: <todo-url> ( url depth -- todo-url )
+    todo-url new
+        swap >>depth
+        swap >>url ;
+
 TUPLE: unique-deque assoc deque ;
 
 : <unique-deque> ( -- unique-deque )
@@ -22,3 +29,10 @@ TUPLE: unique-deque assoc deque ;
 : pop-url ( unique-deque -- todo-url ) deque>> pop-front ;
 
 : peek-url ( unique-deque -- todo-url ) deque>> peek-front ;
+
+:: slurp-deque-when ( deque quot1: ( value -- ) quot2: ( value -- ) -- )
+    deque deque-empty? [
+        deque pop-front dup quot1 call
+        [ quot2 call t ] [ drop f ] if
+        [ deque quot1 quot2 slurp-deque-when ] when
+    ] unless ; inline recursive