rss-parser
Advanced tools
Comparing version 2.1.2 to 2.2.0
46
index.js
@@ -22,2 +22,37 @@ var Entities = require("entities"); | ||
var getSnippet = function(str) { | ||
return Entities.decode(stripHtml(str)).trim(); | ||
} | ||
var parseAtomFeed = function(xmlObj, callback) { | ||
var feed = xmlObj.feed; | ||
var json = {feed: {entries: []}}; | ||
if (feed.link[0] && feed.link[0].$.href) { | ||
json.feed.link = feed.link[0].$.href; | ||
} | ||
if (feed.link[1] && feed.link[1].$.href) { | ||
json.feed.feedUrl = feed.link[1].$.href; | ||
} | ||
if (feed.title[0]) { | ||
json.feed.title = feed.title[0]; | ||
} | ||
var entries = feed.entry; | ||
(entries || []).forEach(function (entry) { | ||
var item = {}; | ||
item.title = entry.title[0]; | ||
item.link = entry.link[0].$.href; | ||
item.pubDate = new Date(entry.updated[0]).toISOString(); | ||
item.author = entry.author[0].name[0]; | ||
if (entry.content) { | ||
item.content = entry.content[0]._; | ||
item.contentSnippet = getSnippet(item.content) | ||
} | ||
if (entry.id) { | ||
item.id = entry.id[0]; | ||
} | ||
json.feed.entries.push(item); | ||
}); | ||
callback(null, json); | ||
} | ||
var parseRSS1 = function(xmlObj, callback) { | ||
@@ -46,3 +81,3 @@ callback("RSS 1.0 parsing not yet implemented.") | ||
} | ||
entry.contentSnippet = Entities.decode(stripHtml(entry.content)).trim(); | ||
entry.contentSnippet = getSnippet(entry.content); | ||
} | ||
@@ -61,4 +96,9 @@ if (item.guid) { | ||
if (err) throw err; | ||
if (result.rss && result.rss.$.version && result.rss.$.version.indexOf('2') === 0) return parseRSS2(result, callback); | ||
else return parseRSS1(result, callback); | ||
if (result.feed) { | ||
return parseAtomFeed(result, callback) | ||
} else if (result.rss && result.rss.$.version && result.rss.$.version.indexOf('2') === 0) { | ||
return parseRSS2(result, callback); | ||
} else { | ||
return parseRSS1(result, callback); | ||
} | ||
}); | ||
@@ -65,0 +105,0 @@ } |
{ | ||
"name": "rss-parser", | ||
"version": "2.1.2", | ||
"version": "2.2.0", | ||
"main": "index.js", | ||
@@ -5,0 +5,0 @@ "scripts": { |
@@ -14,4 +14,4 @@ var FS = require('fs'); | ||
describe('Parser', function() { | ||
var testParseForFile = function(name, done) { | ||
Parser.parseFile(IN_DIR + '/' + name + '.rss', function(err, parsed) { | ||
var testParseForFile = function(name, ext, done) { | ||
Parser.parseFile(IN_DIR + '/' + name + '.' + ext, function(err, parsed) { | ||
Expect(err).to.equal(null); | ||
@@ -30,3 +30,3 @@ if (process.env.WRITE_GOLDEN) { | ||
it('should parse Reddit', function(done) { | ||
testParseForFile('reddit', done); | ||
testParseForFile('reddit', 'rss', done); | ||
}) | ||
@@ -42,4 +42,8 @@ | ||
it('should parse atom', function(done) { | ||
testParseForFile('reddit-atom', done); | ||
testParseForFile('reddit-atom', 'rss', done); | ||
}) | ||
it('should parse atom feed', function(done) { | ||
testParseForFile('gulp-atom', 'atom', done); | ||
}) | ||
}) |
642894
15
13637