feedparser 2.1.1 → 2.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/{HISTORY.md → CHANGELOG.md} +0 -0
- data/Manifest.txt +1 -1
- data/Rakefile +2 -2
- data/lib/feedparser/parser.rb +33 -18
- data/lib/feedparser/version.rb +1 -1
- data/test/test_atom_live.rb +19 -9
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fdd14a8952605dcb40547f1675bc234fb16af21f
|
4
|
+
data.tar.gz: de37586ae452d80ebc2042ebfda9c29dabfa2aa0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b79665575a1596f1c644d48307e5660a52cf6ac1b0124bf6bc5df4ce66123cabada4dacebcf9240665dc2e0d5e2e52d14d764e9183bcf5bf25d9766385996b73
|
7
|
+
data.tar.gz: 8cb7a605620667f035a635826c29690835a4b38fa50e932d6b2fa6ac054d34f9c37a10585b5d9fcf0438836e3462081f85bb24a67ca2c1baa04fa4659cbd59eb
|
data/{HISTORY.md → CHANGELOG.md}
RENAMED
File without changes
|
data/Manifest.txt
CHANGED
data/Rakefile
CHANGED
@@ -15,7 +15,7 @@ Hoe.spec 'feedparser' do
|
|
15
15
|
|
16
16
|
# switch extension to .markdown for gihub formatting
|
17
17
|
self.readme_file = 'README.md'
|
18
|
-
self.history_file = '
|
18
|
+
self.history_file = 'CHANGELOG.md'
|
19
19
|
|
20
20
|
self.extra_deps = [
|
21
21
|
['logutils', '>=0.6.1'],
|
@@ -27,7 +27,7 @@ Hoe.spec 'feedparser' do
|
|
27
27
|
self.licenses = ['Public Domain']
|
28
28
|
|
29
29
|
self.spec_extras = {
|
30
|
-
required_ruby_version: '>= 2.
|
30
|
+
required_ruby_version: '>= 2.2.2'
|
31
31
|
}
|
32
32
|
|
33
33
|
end
|
data/lib/feedparser/parser.rb
CHANGED
@@ -16,38 +16,53 @@ class Parser
|
|
16
16
|
### Note: lets keep/use same API as RSS::Parser for now
|
17
17
|
def initialize( text )
|
18
18
|
@text = text
|
19
|
+
@head = @text[0..100].strip # note: remove leading spaces if present
|
19
20
|
end
|
20
21
|
|
21
22
|
|
22
23
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
jsonfeed_version_regex = %r{"version":\s*"https://jsonfeed.org/version/1"}
|
24
|
+
#### note:
|
25
|
+
# make format checks callable from outside (that is, use builtin helper methods)
|
27
26
|
|
27
|
+
def is_xml?
|
28
28
|
## check if starts with knownn xml prologs
|
29
|
-
|
30
|
-
|
31
|
-
|
29
|
+
@head.start_with?( '<?xml' ) ||
|
30
|
+
@head.start_with?( '<feed' ) ||
|
31
|
+
@head.start_with?( '<rss' )
|
32
|
+
end
|
33
|
+
alias_method :xml?, :is_xml?
|
34
|
+
|
35
|
+
JSONFEED_VERSION_RE = %r{"version":\s*"https://jsonfeed.org/version/1"}
|
36
|
+
def is_json?
|
32
37
|
## check if starts with { for json object/hash
|
33
38
|
## or if includes jsonfeed prolog
|
39
|
+
@head.start_with?( '{' ) ||
|
40
|
+
@head =~ JSONFEED_VERSION_RE
|
41
|
+
end
|
42
|
+
alias_method :json?, :is_json?
|
43
|
+
|
44
|
+
def is_microformats?
|
45
|
+
# for now check for microformats v2 (e.g. h-entry, h-feed)
|
46
|
+
# check for v1 too - why? why not? (e.g. hentry, hatom ??)
|
47
|
+
@text.include?( 'h-entry' ) ||
|
48
|
+
@text.include?( 'h-feed' )
|
49
|
+
end
|
50
|
+
alias_method :microformats?, :is_microformats?
|
51
|
+
|
52
|
+
|
53
|
+
|
54
|
+
def parse
|
55
|
+
if is_xml?
|
34
56
|
parse_xml
|
35
|
-
elsif
|
36
|
-
head =~ jsonfeed_version_regex
|
57
|
+
elsif is_json?
|
37
58
|
parse_json
|
38
59
|
## note: reading/parsing microformat is for now optional
|
39
60
|
## microformats gem requires nokogiri
|
40
61
|
## nokogiri (uses libxml c-extensions) makes it hard to install (sometime)
|
41
62
|
## thus, if you want to use it, please opt-in to keep the install "light"
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
elsif defined?( Microformats ) &&
|
46
|
-
(@text.include?( 'h-entry' ) ||
|
47
|
-
@text.include?( 'h-feed' )
|
48
|
-
)
|
49
|
-
parse_microformats
|
50
|
-
else ## assume xml for now
|
63
|
+
elsif defined?( Microformats ) && is_microformats?
|
64
|
+
parse_microformats
|
65
|
+
else ## fallback - assume xml for now
|
51
66
|
parse_xml
|
52
67
|
end
|
53
68
|
end # method parse
|
data/lib/feedparser/version.rb
CHANGED
data/test/test_atom_live.rb
CHANGED
@@ -4,6 +4,8 @@
|
|
4
4
|
# or better
|
5
5
|
# rake test
|
6
6
|
|
7
|
+
|
8
|
+
|
7
9
|
require 'helper'
|
8
10
|
|
9
11
|
class TestAtomLive < MiniTest::Test
|
@@ -11,16 +13,18 @@ class TestAtomLive < MiniTest::Test
|
|
11
13
|
def test_rubyonrails
|
12
14
|
feed = fetch_and_parse_feed( 'http://weblog.rubyonrails.org/feed/atom.xml' )
|
13
15
|
|
14
|
-
assert_equal 'atom',
|
15
|
-
assert_equal '
|
16
|
+
assert_equal 'atom', feed.format
|
17
|
+
assert_equal 'https://weblog.rubyonrails.org/', feed.url
|
18
|
+
## note was (2020/1): 'http://weblog.rubyonrails.org/', feed.url
|
16
19
|
end
|
17
20
|
|
18
21
|
|
19
22
|
def test_railstutorial
|
20
23
|
feed = fetch_and_parse_feed( 'http://feeds.feedburner.com/railstutorial?format=xml' )
|
21
24
|
|
22
|
-
assert_equal 'atom',
|
23
|
-
assert_equal '
|
25
|
+
assert_equal 'atom', feed.format
|
26
|
+
assert_equal 'https://news.learnenough.com/', feed.url
|
27
|
+
## note was (2020/1): assert_equal 'http://news.learnenough.com/', feed.url
|
24
28
|
## note was (2017/5): assert_equal 'http://news.railstutorial.org/', feed.url
|
25
29
|
end
|
26
30
|
|
@@ -38,13 +42,19 @@ class TestAtomLive < MiniTest::Test
|
|
38
42
|
|
39
43
|
|
40
44
|
def test_headius
|
41
|
-
feed = fetch_and_parse_feed( 'http://blog.headius.com/
|
45
|
+
feed = fetch_and_parse_feed( 'http://blog.headius.com/feed.xml' )
|
46
|
+
## note was (2020/1): 'http://blog.headius.com/feeds/posts/default'
|
42
47
|
|
43
48
|
assert_equal 'atom', feed.format
|
44
|
-
assert_equal '
|
45
|
-
|
46
|
-
|
47
|
-
assert_equal '
|
49
|
+
assert_equal 'Jekyll', feed.generator.name
|
50
|
+
## note was (2020/1): 'Blogger'
|
51
|
+
|
52
|
+
assert_equal 'Charles Oliver Nutter', feed.title
|
53
|
+
## note was (2020/1): 'Headius', feed.title
|
54
|
+
assert_equal 'Java, Ruby, and JVM guy trying to make sense of it all', feed.summary # aka subtitle in atom
|
55
|
+
## note was (2020/1): 'Helping the JVM Into the 21st Century', feed.title
|
56
|
+
assert_equal 'https://headius.github.io/', feed.url
|
57
|
+
## note was (2020/1): 'http://blog.headius.com/'
|
48
58
|
end
|
49
59
|
|
50
60
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: feedparser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gerald Bauer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-01-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: logutils
|
@@ -72,11 +72,11 @@ email: wwwmake@googlegroups.com
|
|
72
72
|
executables: []
|
73
73
|
extensions: []
|
74
74
|
extra_rdoc_files:
|
75
|
-
-
|
75
|
+
- CHANGELOG.md
|
76
76
|
- Manifest.txt
|
77
77
|
- README.md
|
78
78
|
files:
|
79
|
-
-
|
79
|
+
- CHANGELOG.md
|
80
80
|
- Manifest.txt
|
81
81
|
- README.md
|
82
82
|
- Rakefile
|
@@ -113,7 +113,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
113
113
|
requirements:
|
114
114
|
- - ">="
|
115
115
|
- !ruby/object:Gem::Version
|
116
|
-
version:
|
116
|
+
version: 2.2.2
|
117
117
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
118
118
|
requirements:
|
119
119
|
- - ">="
|