Fix parse-feed for byte arrays
							parent
							
								
									e8ec1716e3
								
							
						
					
					
						commit
						b32df2100a
					
				| 
						 | 
				
			
			@ -35,9 +35,9 @@ HELP: download-feed
 | 
			
		|||
{ $values { "url" url } { "feed" feed } }
 | 
			
		||||
{ $description "Downloads a feed from a URL using the " { $link "http.client" } "." } ;
 | 
			
		||||
 | 
			
		||||
HELP: string>feed
 | 
			
		||||
{ $values { "string" string } { "feed" feed } }
 | 
			
		||||
{ $description "Parses a feed in string form." } ;
 | 
			
		||||
HELP: parse-feed
 | 
			
		||||
{ $values { "sequence" "a string or a byte array" } { "feed" feed } }
 | 
			
		||||
{ $description "Parses a feed." } ;
 | 
			
		||||
 | 
			
		||||
HELP: xml>feed
 | 
			
		||||
{ $values { "xml" xml } { "feed" feed } }
 | 
			
		||||
| 
						 | 
				
			
			@ -58,7 +58,7 @@ $nl
 | 
			
		|||
{ $subsection <entry> }
 | 
			
		||||
"Reading feeds:"
 | 
			
		||||
{ $subsection download-feed }
 | 
			
		||||
{ $subsection string>feed }
 | 
			
		||||
{ $subsection parse-feed }
 | 
			
		||||
{ $subsection xml>feed }
 | 
			
		||||
"Writing feeds:"
 | 
			
		||||
{ $subsection feed>xml }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,4 @@
 | 
			
		|||
USING: syndication io kernel io.files tools.test io.encodings.utf8
 | 
			
		||||
USING: syndication io kernel io.files tools.test io.encodings.binary
 | 
			
		||||
calendar urls xml.writer ;
 | 
			
		||||
IN: syndication.tests
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -8,7 +8,7 @@ IN: syndication.tests
 | 
			
		|||
: load-news-file ( filename -- feed )
 | 
			
		||||
    #! Load an news syndication file and process it, returning
 | 
			
		||||
    #! it as an feed tuple.
 | 
			
		||||
    utf8 file-contents string>feed ;
 | 
			
		||||
    binary file-contents parse-feed ;
 | 
			
		||||
 | 
			
		||||
[ T{
 | 
			
		||||
    feed
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,11 +1,11 @@
 | 
			
		|||
! Copyright (C) 2006 Chris Double, Daniel Ehrenberg.
 | 
			
		||||
! Portions copyright (C) 2008 Slava Pestov.
 | 
			
		||||
! Portions copyright (C) 2008, 2009 Slava Pestov.
 | 
			
		||||
! See http://factorcode.org/license.txt for BSD license.
 | 
			
		||||
USING: xml.traversal kernel assocs math.order
 | 
			
		||||
    strings sequences xml.data xml.writer
 | 
			
		||||
    io.streams.string combinators xml xml.entities.html io.files io
 | 
			
		||||
    http.client namespaces make xml.syntax hashtables
 | 
			
		||||
    calendar.format accessors continuations urls present ;
 | 
			
		||||
USING: xml.traversal kernel assocs math.order strings sequences
 | 
			
		||||
xml.data xml.writer io.streams.string combinators xml
 | 
			
		||||
xml.entities.html io.files io http.client namespaces make
 | 
			
		||||
xml.syntax hashtables calendar.format accessors continuations
 | 
			
		||||
urls present byte-arrays ;
 | 
			
		||||
IN: syndication
 | 
			
		||||
 | 
			
		||||
: any-tag-named ( tag names -- tag-inside )
 | 
			
		||||
| 
						 | 
				
			
			@ -106,12 +106,15 @@ TUPLE: entry title url description date ;
 | 
			
		|||
        { "feed" [ atom1.0 ] }
 | 
			
		||||
    } case ;
 | 
			
		||||
 | 
			
		||||
: string>feed ( string -- feed )
 | 
			
		||||
    [ string>xml xml>feed ] with-html-entities ;
 | 
			
		||||
GENERIC: parse-feed ( string -- feed )
 | 
			
		||||
 | 
			
		||||
M: string parse-feed [ string>xml xml>feed ] with-html-entities ;
 | 
			
		||||
 | 
			
		||||
M: byte-array parse-feed [ bytes>xml xml>feed ] with-html-entities ;
 | 
			
		||||
 | 
			
		||||
: download-feed ( url -- feed )
 | 
			
		||||
    #! Retrieve an news syndication file, return as a feed tuple.
 | 
			
		||||
    http-get nip string>feed ;
 | 
			
		||||
    http-get nip parse-feed ;
 | 
			
		||||
 | 
			
		||||
! Atom generation
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue