]> gitweb.factorcode.org Git - factor.git/blobdiff - basis/syndication/syndication.factor
syndication: Property can be present but f, handle this.
[factor.git] / basis / syndication / syndication.factor
index 3bd22eb54a8c33180fbfc898b61082c4ef6671f5..74198c36a43eeb61a752db750738a00d4da52a8e 100644 (file)
@@ -26,6 +26,9 @@ TUPLE: entry title url description date ;
 : try-parsing-timestamp ( string -- timestamp )
     [ rfc822>timestamp ] [ drop rfc3339>timestamp ] recover ;
 
+: ?children>string ( tag -- str/f )
+    dup [ children>string ] when ; inline
+
 : rss1.0-entry ( tag -- entry )
     <entry> swap {
         [ "title" tag-named children>string >>title ]
@@ -47,12 +50,12 @@ TUPLE: entry title url description date ;
 
 : rss2.0-entry ( tag -- entry )
     <entry> swap {
-        [ "title" tag-named children>string >>title ]
-        [ { "link" "guid" } any-tag-named children>string >url >>url ]
-        [ { "description" "encoded" } any-tag-named children>string >>description ]
+        [ "title" tag-named ?children>string >>title ]
+        [ { "link" "guid" } any-tag-named ?children>string >url >>url ]
+        [ { "description" "encoded" } any-tag-named ?children>string >>description ]
         [
             { "date" "pubDate" } any-tag-named
-            children>string try-parsing-timestamp >>date
+            ?children>string try-parsing-timestamp >>date
         ]
     } cleave ;