]> gitweb.factorcode.org Git - factor.git/commitdiff
xml.traversal: adding deep-children>string.
authorJohn Benediktsson <mrjbq7@gmail.com>
Mon, 17 Dec 2012 19:58:30 +0000 (11:58 -0800)
committerJohn Benediktsson <mrjbq7@gmail.com>
Mon, 17 Dec 2012 19:58:30 +0000 (11:58 -0800)
basis/xml/traversal/traversal-tests.factor
basis/xml/traversal/traversal.factor

index de04830e4a6bbaa87660a71e6611c72f9b0d8f92..43076a5a416e65301a1aba8c29049c3b789dc8e7 100644 (file)
@@ -9,6 +9,8 @@ IN: xml.traversal.tests
 
 [ "" ] [ "<foo/>" string>xml children>string ] unit-test
 
+[ "bar qux" ] [ "<foo>bar <baz>qux</baz></foo>" string>xml deep-children>string ] unit-test
+
 [ "blah" ] [ "<foo attr='blah'/>" string>xml-chunk "foo" deep-tag-named "attr" attr ] unit-test
 
 [ { "blah" } ] [ "<foo attr='blah'/>" string>xml-chunk "foo" deep-tags-named [ "attr" attr ] map ] unit-test
index 09f4ab1c135017987d733b57757115018e8c68f4..ee2d25590f5f8643314fb4b86b113fd6a90f5ae5 100644 (file)
@@ -1,7 +1,7 @@
 ! Copyright (C) 2005, 2009 Daniel Ehrenberg
 ! See http://factorcode.org/license.txt for BSD license.
 USING: accessors kernel namespaces sequences words io assocs
-quotations strings parser lexer arrays xml.data
+quotations strings parser lexer arrays xml.data make
 splitting vectors sequences.deep combinators fry memoize ;
 IN: xml.traversal
 
@@ -15,6 +15,11 @@ IN: xml.traversal
         [ concat ]
     } cond ;
 
+: deep-children>string ( tag -- string )
+    children>> [
+        [ dup tag? [ deep-children>string ] when % ] each
+    ] "" make ;
+
 : children-tags ( tag -- sequence )
     children>> [ tag? ] filter ;