jekyll-feed 0.9.3 → 0.10.0
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 +5 -5
- data/.rubocop.yml +11 -12
- data/.travis.yml +1 -1
- data/History.markdown +17 -5
- data/jekyll-feed.gemspec +2 -2
- data/lib/jekyll-feed/feed.xml +2 -2
- data/lib/jekyll-feed/version.rb +1 -1
- data/spec/fixtures/_posts/2014-03-02-march-the-second.md +1 -1
- data/spec/jekyll-feed_spec.rb +39 -38
- data/spec/spec_helper.rb +9 -7
- metadata +13 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 8f54ea4d5e7e1cca4e3f97822892ebbbbf0e1e14
|
4
|
+
data.tar.gz: a8f9d0597adee1a4f894dd7721c708099135bdce
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4886bdd3fc8bf4bc520ddeab68ee7cc8823e3f6021f8633a5173390fc4ac59243edea9d69b651546f33f7d80e8aafba32cb21929bcdfda8c4480a7aeb2ac5212
|
7
|
+
data.tar.gz: 3b3614f94497c50ce1c091760be4e932b6cd917d40c540434d391e4d15cd5469e17a59f5d9a2bc61e61d807695071e2b945677e9b70391ac81625d1846d8f060
|
data/.rubocop.yml
CHANGED
@@ -4,26 +4,25 @@ inherit_gem:
|
|
4
4
|
AllCops:
|
5
5
|
TargetRubyVersion: 2.3
|
6
6
|
Include:
|
7
|
-
- lib
|
7
|
+
- lib/**/*.rb
|
8
8
|
|
9
9
|
Exclude:
|
10
|
-
- .rubocop.yml
|
11
|
-
- .codeclimate.yml
|
12
|
-
- .travis.yml
|
13
10
|
- .gitignore
|
14
11
|
- .rspec
|
12
|
+
- .rubocop.yml
|
13
|
+
- .travis.yml
|
15
14
|
|
16
15
|
- Gemfile.lock
|
17
|
-
-
|
18
|
-
-
|
16
|
+
- History.markdown
|
17
|
+
- LICENSE.txt
|
19
18
|
- README.md
|
20
|
-
- Readme.md
|
21
|
-
- ReadMe.md
|
22
|
-
- COPYING
|
23
|
-
- LICENSE
|
24
19
|
|
25
|
-
- test/**/*
|
26
|
-
- vendor/**/*
|
27
20
|
- features/**/*
|
28
21
|
- script/**/*
|
29
22
|
- spec/**/*
|
23
|
+
- test/**/*
|
24
|
+
- vendor/**/*
|
25
|
+
|
26
|
+
Naming/MemoizedInstanceVariableName:
|
27
|
+
Exclude:
|
28
|
+
- lib/jekyll-feed/page-without-a-file.rb
|
data/.travis.yml
CHANGED
data/History.markdown
CHANGED
@@ -1,3 +1,18 @@
|
|
1
|
+
## 0.10.0 / 2018-06-04
|
2
|
+
|
3
|
+
### Bug Fixes
|
4
|
+
|
5
|
+
* Escape image URL (#209)
|
6
|
+
|
7
|
+
### Development Fixes
|
8
|
+
|
9
|
+
* Rubocop 0.55 (#223)
|
10
|
+
* Bump Rubocop (#230)
|
11
|
+
|
12
|
+
### Minor Enhancements
|
13
|
+
|
14
|
+
* Support Typhoeus 1.0 (#232)
|
15
|
+
|
1
16
|
## 0.9.3 / 2018-02-04
|
2
17
|
|
3
18
|
* Define path with __dir (#187)
|
@@ -7,6 +22,7 @@
|
|
7
22
|
|
8
23
|
* Fix: Add note about using plugins instead of gems key (#197)
|
9
24
|
* Add documentation for disabling smartify filter (#205)
|
25
|
+
* Use `https` in more places. (#165)
|
10
26
|
|
11
27
|
### Development Fixes
|
12
28
|
|
@@ -14,15 +30,11 @@
|
|
14
30
|
* Test feeds that have a `site.lang` (#164)
|
15
31
|
* Test against Ruby 2.5 (#201)
|
16
32
|
|
17
|
-
## 0.9.3 / 2017-03-28
|
18
|
-
|
19
33
|
### Minor Enhancements
|
20
34
|
|
21
35
|
* fix <entry> template for posts with post.lang defined (#168)
|
22
36
|
|
23
|
-
|
24
|
-
|
25
|
-
* Use `https` in more places. (#165)
|
37
|
+
## 0.9.3 / 2017-03-28
|
26
38
|
|
27
39
|
## 0.9.1 / 2017-02-17
|
28
40
|
|
data/jekyll-feed.gemspec
CHANGED
@@ -24,6 +24,6 @@ Gem::Specification.new do |spec|
|
|
24
24
|
spec.add_development_dependency "nokogiri", "~> 1.6"
|
25
25
|
spec.add_development_dependency "rake", "~> 12.0"
|
26
26
|
spec.add_development_dependency "rspec", "~> 3.0"
|
27
|
-
spec.add_development_dependency "rubocop", "0.
|
28
|
-
spec.add_development_dependency "typhoeus", "
|
27
|
+
spec.add_development_dependency "rubocop", "0.56"
|
28
|
+
spec.add_development_dependency "typhoeus", ">= 0.7", "< 2.0"
|
29
29
|
end
|
data/lib/jekyll-feed/feed.xml
CHANGED
@@ -72,9 +72,9 @@
|
|
72
72
|
{% assign post_image = post.image.path | default: post.image %}
|
73
73
|
{% if post_image %}
|
74
74
|
{% unless post_image contains "://" %}
|
75
|
-
{% assign post_image = post_image | absolute_url
|
75
|
+
{% assign post_image = post_image | absolute_url %}
|
76
76
|
{% endunless %}
|
77
|
-
<media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="{{ post_image }}" />
|
77
|
+
<media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="{{ post_image | xml_escape }}" />
|
78
78
|
{% endif %}
|
79
79
|
</entry>
|
80
80
|
{% endfor %}
|
data/lib/jekyll-feed/version.rb
CHANGED
data/spec/jekyll-feed_spec.rb
CHANGED
@@ -1,44 +1,45 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "spec_helper"
|
2
4
|
|
3
5
|
describe(JekyllFeed) do
|
4
|
-
let(:overrides) {
|
6
|
+
let(:overrides) { {} }
|
5
7
|
let(:config) do
|
6
8
|
Jekyll.configuration(Jekyll::Utils.deep_merge_hashes({
|
7
9
|
"full_rebuild" => true,
|
8
|
-
"source"
|
9
|
-
"destination"
|
10
|
-
"show_drafts"
|
11
|
-
"url"
|
12
|
-
"name"
|
13
|
-
"author"
|
14
|
-
"name"
|
10
|
+
"source" => source_dir,
|
11
|
+
"destination" => dest_dir,
|
12
|
+
"show_drafts" => true,
|
13
|
+
"url" => "http://example.org",
|
14
|
+
"name" => "My awesome site",
|
15
|
+
"author" => {
|
16
|
+
"name" => "Dr. Jekyll",
|
15
17
|
},
|
16
|
-
"collections"
|
18
|
+
"collections" => {
|
17
19
|
"my_collection" => { "output" => true },
|
18
|
-
"other_things" => { "output" => false }
|
19
|
-
}
|
20
|
+
"other_things" => { "output" => false },
|
21
|
+
},
|
20
22
|
}, overrides))
|
21
23
|
end
|
22
24
|
let(:site) { Jekyll::Site.new(config) }
|
23
25
|
let(:contents) { File.read(dest_dir("feed.xml")) }
|
24
|
-
let(:context) { make_context(site
|
26
|
+
let(:context) { make_context(:site => site) }
|
25
27
|
let(:feed_meta) { Liquid::Template.parse("{% feed_meta %}").render!(context, {}) }
|
26
28
|
before(:each) do
|
27
29
|
site.process
|
28
30
|
end
|
29
31
|
|
30
32
|
it "has no layout" do
|
31
|
-
expect(contents).not_to match(
|
33
|
+
expect(contents).not_to match(%r!\ATHIS IS MY LAYOUT!)
|
32
34
|
end
|
33
35
|
|
34
36
|
it "creates a feed.xml file" do
|
35
37
|
expect(Pathname.new(dest_dir("feed.xml"))).to exist
|
36
38
|
end
|
37
39
|
|
38
|
-
|
39
40
|
it "doesn't have multiple new lines or trailing whitespace" do
|
40
|
-
expect(contents).to_not match
|
41
|
-
expect(contents).to_not match
|
41
|
+
expect(contents).to_not match %r!\s+\n!
|
42
|
+
expect(contents).to_not match %r!\n{2,}!
|
42
43
|
end
|
43
44
|
|
44
45
|
it "puts all the posts in the feed.xml file" do
|
@@ -55,7 +56,7 @@ describe(JekyllFeed) do
|
|
55
56
|
end
|
56
57
|
|
57
58
|
it "preserves linebreaks in preformatted text in posts" do
|
58
|
-
expect(contents).to match
|
59
|
+
expect(contents).to match %r!Line 1\nLine 2\nLine 3!
|
59
60
|
end
|
60
61
|
|
61
62
|
it "supports post author name as an object" do
|
@@ -87,13 +88,13 @@ describe(JekyllFeed) do
|
|
87
88
|
end
|
88
89
|
|
89
90
|
it "renders Liquid inside posts" do
|
90
|
-
expect(contents).to match
|
91
|
-
expect(contents).not_to match
|
91
|
+
expect(contents).to match %r!Liquid is rendered\.!
|
92
|
+
expect(contents).not_to match %r!Liquid is not rendered\.!
|
92
93
|
end
|
93
94
|
|
94
95
|
it "includes the item image" do
|
95
96
|
expect(contents).to include('<media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://example.org/image.png" />')
|
96
|
-
expect(contents).to include('<media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://cdn.example.org/absolute.png" />')
|
97
|
+
expect(contents).to include('<media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://cdn.example.org/absolute.png?h=188&w=250" />')
|
97
98
|
expect(contents).to include('<media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://example.org/object-image.png" />')
|
98
99
|
end
|
99
100
|
|
@@ -140,7 +141,7 @@ describe(JekyllFeed) do
|
|
140
141
|
|
141
142
|
context "with site.lang set" do
|
142
143
|
lang = "en_US"
|
143
|
-
let(:overrides) { {"lang" => lang} }
|
144
|
+
let(:overrides) { { "lang" => lang } }
|
144
145
|
it "outputs a valid feed" do
|
145
146
|
expect(feed.feed_type).to eql("atom")
|
146
147
|
expect(feed.feed_version).to eql("1.0")
|
@@ -165,7 +166,7 @@ describe(JekyllFeed) do
|
|
165
166
|
|
166
167
|
context "with site.title set" do
|
167
168
|
let(:site_title) { "My Site Title" }
|
168
|
-
let(:overrides) { {"title" => site_title} }
|
169
|
+
let(:overrides) { { "title" => site_title } }
|
169
170
|
|
170
171
|
it "uses site.title for the title" do
|
171
172
|
expect(feed.title.content).to eql(site_title)
|
@@ -174,7 +175,7 @@ describe(JekyllFeed) do
|
|
174
175
|
|
175
176
|
context "with site.name set" do
|
176
177
|
let(:site_name) { "My Site Name" }
|
177
|
-
let(:overrides) { {"name" => site_name} }
|
178
|
+
let(:overrides) { { "name" => site_name } }
|
178
179
|
|
179
180
|
it "uses site.name for the title" do
|
180
181
|
expect(feed.title.content).to eql(site_name)
|
@@ -184,7 +185,7 @@ describe(JekyllFeed) do
|
|
184
185
|
context "with site.name and site.title set" do
|
185
186
|
let(:site_title) { "My Site Title" }
|
186
187
|
let(:site_name) { "My Site Name" }
|
187
|
-
let(:overrides) { {"title" => site_title, "name" => site_name} }
|
188
|
+
let(:overrides) { { "title" => site_title, "name" => site_name } }
|
188
189
|
|
189
190
|
it "uses site.title for the title, dropping site.name" do
|
190
191
|
expect(feed.title.content).to eql(site_title)
|
@@ -206,20 +207,20 @@ describe(JekyllFeed) do
|
|
206
207
|
it "validates" do
|
207
208
|
# See https://validator.w3.org/docs/api.html
|
208
209
|
url = "https://validator.w3.org/feed/check.cgi?output=soap12"
|
209
|
-
response = Typhoeus.post(url, body
|
210
|
+
response = Typhoeus.post(url, :body => { :rawdata => contents }, :accept_encoding => "gzip")
|
210
211
|
pending "Something went wrong with the W3 validator" unless response.success?
|
211
|
-
result
|
212
|
+
result = Nokogiri::XML(response.body)
|
212
213
|
result.remove_namespaces!
|
213
214
|
|
214
215
|
result.css("warning").each do |warning|
|
215
216
|
# Quiet a warning that results from us passing the feed as a string
|
216
|
-
next if warning.css("text").text =~
|
217
|
+
next if warning.css("text").text =~ %r!Self reference doesn't match document location!
|
217
218
|
|
218
219
|
# Quiet expected warning that results from blank summary test case
|
219
|
-
next if warning.css("text").text =~
|
220
|
+
next if warning.css("text").text =~ %r!(content|summary) should not be blank!
|
220
221
|
|
221
222
|
# Quiet expected warning about multiple posts with same updated time
|
222
|
-
next if warning.css("text").text =~
|
223
|
+
next if warning.css("text").text =~ %r!Two entries with the same value for atom:updated!
|
223
224
|
|
224
225
|
warn "Validation warning: #{warning.css("text").text} on line #{warning.css("line").text} column #{warning.css("column").text}"
|
225
226
|
end
|
@@ -260,12 +261,12 @@ describe(JekyllFeed) do
|
|
260
261
|
Jekyll.configuration({
|
261
262
|
"source" => source_dir,
|
262
263
|
"destination" => dest_dir,
|
263
|
-
"url" => "http://example.org"
|
264
|
+
"url" => "http://example.org",
|
264
265
|
})
|
265
266
|
end
|
266
267
|
|
267
268
|
it "does not output blank title" do
|
268
|
-
expect(feed_meta).not_to include(
|
269
|
+
expect(feed_meta).not_to include("title=")
|
269
270
|
end
|
270
271
|
end
|
271
272
|
end
|
@@ -274,8 +275,8 @@ describe(JekyllFeed) do
|
|
274
275
|
let(:overrides) do
|
275
276
|
{
|
276
277
|
"feed" => {
|
277
|
-
"path" => "atom.xml"
|
278
|
-
}
|
278
|
+
"path" => "atom.xml",
|
279
|
+
},
|
279
280
|
}
|
280
281
|
end
|
281
282
|
|
@@ -299,14 +300,14 @@ describe(JekyllFeed) do
|
|
299
300
|
let(:overrides) { { "lang" => "en-US" } }
|
300
301
|
|
301
302
|
it "should set the language" do
|
302
|
-
expect(contents).to match %r
|
303
|
+
expect(contents).to match %r!type="text/html" hreflang="en-US" />!
|
303
304
|
end
|
304
305
|
end
|
305
306
|
|
306
|
-
context "with post.lang set"do
|
307
|
+
context "with post.lang set" do
|
307
308
|
it "should set the language for that entry" do
|
308
|
-
expect(contents).to match %r
|
309
|
-
expect(contents).to match %r
|
309
|
+
expect(contents).to match %r!<entry xml:lang="en">!
|
310
|
+
expect(contents).to match %r!<entry>!
|
310
311
|
end
|
311
312
|
end
|
312
313
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,15 +1,17 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "jekyll"
|
4
|
+
require "typhoeus"
|
5
|
+
require "nokogiri"
|
6
|
+
require "rss"
|
7
|
+
require File.expand_path("../lib/jekyll-feed", __dir__)
|
6
8
|
|
7
9
|
Jekyll.logger.log_level = :error
|
8
10
|
|
9
11
|
RSpec.configure do |config|
|
10
12
|
config.run_all_when_everything_filtered = true
|
11
13
|
config.filter_run :focus
|
12
|
-
config.order =
|
14
|
+
config.order = "random"
|
13
15
|
|
14
16
|
SOURCE_DIR = File.expand_path("fixtures", __dir__)
|
15
17
|
DEST_DIR = File.expand_path("dest", __dir__)
|
@@ -23,6 +25,6 @@ RSpec.configure do |config|
|
|
23
25
|
end
|
24
26
|
|
25
27
|
def make_context(registers = {})
|
26
|
-
Liquid::Context.new({}, {}, { site
|
28
|
+
Liquid::Context.new({}, {}, { :site => site }.merge(registers))
|
27
29
|
end
|
28
30
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-feed
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben Balter
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-06-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|
@@ -86,28 +86,34 @@ dependencies:
|
|
86
86
|
requirements:
|
87
87
|
- - '='
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '0.
|
89
|
+
version: '0.56'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - '='
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '0.
|
96
|
+
version: '0.56'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: typhoeus
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- - "
|
101
|
+
- - ">="
|
102
102
|
- !ruby/object:Gem::Version
|
103
103
|
version: '0.7'
|
104
|
+
- - "<"
|
105
|
+
- !ruby/object:Gem::Version
|
106
|
+
version: '2.0'
|
104
107
|
type: :development
|
105
108
|
prerelease: false
|
106
109
|
version_requirements: !ruby/object:Gem::Requirement
|
107
110
|
requirements:
|
108
|
-
- - "
|
111
|
+
- - ">="
|
109
112
|
- !ruby/object:Gem::Version
|
110
113
|
version: '0.7'
|
114
|
+
- - "<"
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: '2.0'
|
111
117
|
description:
|
112
118
|
email:
|
113
119
|
- ben.balter@github.com
|
@@ -173,7 +179,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
173
179
|
version: '0'
|
174
180
|
requirements: []
|
175
181
|
rubyforge_project:
|
176
|
-
rubygems_version: 2.
|
182
|
+
rubygems_version: 2.6.14
|
177
183
|
signing_key:
|
178
184
|
specification_version: 4
|
179
185
|
summary: A Jekyll plugin to generate an Atom feed of your Jekyll posts
|