-
Notifications
You must be signed in to change notification settings - Fork 374
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
implemented the pending feed specs to determine feed types for Atom, …
…AtomFeedBurner, and RDF. Created Atom, FeedBurner, and RDF classes and wrote will_parse? specs for them.
- Loading branch information
Showing
11 changed files
with
116 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
module Feedzirra | ||
class Atom | ||
def self.will_parse?(xml) | ||
xml =~ /Atom/ || false | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
module Feedzirra | ||
class AtomFeedBurner | ||
def self.will_parse?(xml) | ||
(xml =~ /Atom/ && xml =~ /feedburner/) || false | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,23 @@ | ||
require 'feedzirra/atom' | ||
require 'feedzirra/atom_feed_burner' | ||
|
||
module Feedzirra | ||
class Feed | ||
def self.determine_feed_parser_for_xml(xml) | ||
start_of_doc = xml.slice(0, 500) | ||
if start_of_doc =~ /Atom/ | ||
atom_feed_classes.detect {|feed_class| feed_class.will_parse?(start_of_doc)} || Atom | ||
elsif RDF.will_parse?(xml) | ||
RDF | ||
end | ||
end | ||
|
||
def self.add_atom_feed_class(klass) | ||
atom_feed_classes << klass | ||
end | ||
|
||
def self.atom_feed_classes | ||
@atom_feed_classes ||= [AtomFeedBurner] | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
module Feedzirra | ||
class RDF | ||
def self.will_parse?(xml) | ||
xml =~ /rdf\:RDF/ || false | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
require File.dirname(__FILE__) + '/../spec_helper' | ||
|
||
describe Feedzirra::AtomFeedBurner do | ||
describe "#will_parse?" do | ||
it "should return true for a feedburner atom feed" do | ||
Feedzirra::AtomFeedBurner.will_parse?(sample_feedburner_atom_feed).should be_true | ||
end | ||
|
||
it "should return false for an rdf feed" do | ||
Feedzirra::AtomFeedBurner.will_parse?(sample_rdf_feed).should be_false | ||
end | ||
|
||
it "should return false for a regular atom feed" do | ||
Feedzirra::AtomFeedBurner.will_parse?(sample_atom_feed).should be_false | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
require File.dirname(__FILE__) + '/../spec_helper' | ||
|
||
describe Feedzirra::Atom do | ||
describe "#will_parse?" do | ||
it "should return true for an atom feed" do | ||
Feedzirra::Atom.will_parse?(sample_atom_feed).should be_true | ||
end | ||
|
||
it "should return false for an rdf feed" do | ||
Feedzirra::Atom.will_parse?(sample_rdf_feed).should be_false | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,25 @@ | ||
require File.dirname(__FILE__) + '/../spec_helper' | ||
|
||
describe Feedzirra::Feed do | ||
describe "#feed_parser_for_xml" do | ||
it "should return a Feedzirra::Atom object for an atom feed" | ||
it "should return a Feedzirra::AtomFeedBurner object for an atom feedburner feed" | ||
it "should return a Feedzirra::RDF object for an rdf/rss 1.0 feed" | ||
describe "#determine_feed_parser_for_xml" do | ||
it "should return a Feedzirra::Atom object for an atom feed" do | ||
Feedzirra::Feed.determine_feed_parser_for_xml(sample_atom_feed).should == Feedzirra::Atom | ||
end | ||
|
||
it "should return a Feedzirra::AtomFeedBurner object for an atom feedburner feed" do | ||
Feedzirra::Feed.determine_feed_parser_for_xml(sample_feedburner_atom_feed).should == Feedzirra::AtomFeedBurner | ||
end | ||
|
||
it "should return a Feedzirra::RDF object for an rdf/rss 1.0 feed" do | ||
Feedzirra::Feed.determine_feed_parser_for_xml(sample_rdf_feed).should == Feedzirra::RDF | ||
end | ||
end | ||
|
||
describe "adding feed types" do | ||
it "should be able to add an atom feed type" do | ||
@klass = Class.new | ||
Feedzirra::Feed.add_atom_feed_class(@klass) | ||
Feedzirra::Feed.atom_feed_classes.last.should == @klass | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
require File.dirname(__FILE__) + '/../spec_helper' | ||
|
||
describe Feedzirra::RDF do | ||
describe "#will_parse?" do | ||
it "should return true for an rdf feed" do | ||
Feedzirra::RDF.will_parse?(sample_rdf_feed).should be_true | ||
end | ||
|
||
it "should return false for an atom feed" do | ||
Feedzirra::RDF.will_parse?(sample_atom_feed).should be_false | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters