jekyll-feed 0.2.3 → 0.3.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 +4 -4
- data/.gitignore +2 -0
- data/.travis.yml +20 -4
- data/Gemfile +4 -1
- data/README.md +10 -0
- data/jekyll-feed.gemspec +2 -3
- data/lib/jekyll-feed.rb +25 -8
- data/spec/jekyll-feed_spec.rb +18 -1
- metadata +12 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 58166be831e447c07a57150717670f140681c3c7
|
4
|
+
data.tar.gz: 8ab3a70938b5752de7bb755891228fcfe9e997c9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 793aed59df2ec15981b5a20c378957ecd756ade0d76725243bf06f8071f4c870c6c432c87e02a226b78bf3a5be185cbab26f3c61ec937e398fb87d7b10e01d7c
|
7
|
+
data.tar.gz: fed263171fb20cc8f7015bb00d15778de921556e1c5e38ed4155aa0579d86b5f5789e3d33a84350e193e7915760c6978c6f97dc342c2d9a70acc2a7cf9dfe18b
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
@@ -1,9 +1,25 @@
|
|
1
1
|
language: ruby
|
2
2
|
rvm:
|
3
3
|
- 2.1
|
4
|
-
- 2.
|
5
|
-
-
|
6
|
-
|
4
|
+
- 2.2
|
5
|
+
- 2.0
|
6
|
+
- 1.9
|
7
7
|
script: "script/cibuild"
|
8
|
-
|
8
|
+
before_script: bundle update
|
9
9
|
cache: bundler
|
10
|
+
sudo: false
|
11
|
+
|
12
|
+
matrix:
|
13
|
+
exclude:
|
14
|
+
- rvm: 1.9
|
15
|
+
env: JEKYLL_VERSION=3.0.0.beta5
|
16
|
+
- env: JEKYLL_VERSION=2.4
|
17
|
+
rvm: 2.1
|
18
|
+
- rvm: 2.2
|
19
|
+
env: JEKYLL_VERSION=2.4
|
20
|
+
|
21
|
+
env:
|
22
|
+
matrix:
|
23
|
+
- ""
|
24
|
+
- JEKYLL_VERSION=2.4
|
25
|
+
- JEKYLL_VERSION=3.0.0.beta5
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -35,6 +35,16 @@ The plugin will automatically use any of the following configuration variables,
|
|
35
35
|
- `email` - Email address of the author
|
36
36
|
- `uri` - Webpage where more information about the author can be found
|
37
37
|
|
38
|
+
### Already have a feed path?
|
39
|
+
|
40
|
+
Do you already have an existing feed someplace other than `/feed.xml`, but are on a host like GitHub Pages that doesn't support machine-friendly redirects? If you simply swap out `jekyll-feed` for your existing template, your existing subscribers won't continue to get updates. Instead, you can specify a non-default path via your site's config.
|
41
|
+
|
42
|
+
```yml
|
43
|
+
feed:
|
44
|
+
path: atom.xml
|
45
|
+
```
|
46
|
+
|
47
|
+
To note, you shouldn't have to do this unless you already have a feed you're using, and you can't or wish not to redirect existing subscribers.
|
38
48
|
|
39
49
|
### Optional front matter
|
40
50
|
|
data/jekyll-feed.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |spec|
|
4
4
|
spec.name = "jekyll-feed"
|
5
|
-
spec.version = "0.
|
5
|
+
spec.version = "0.3.0"
|
6
6
|
spec.authors = ["Ben Balter"]
|
7
7
|
spec.email = ["ben.balter@github.com"]
|
8
8
|
spec.summary = "A Jekyll plugin to generate an Atom feed of your Jekyll posts"
|
@@ -14,12 +14,11 @@ Gem::Specification.new do |spec|
|
|
14
14
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
15
15
|
spec.require_paths = ["lib"]
|
16
16
|
|
17
|
-
spec.add_development_dependency "jekyll", "
|
17
|
+
spec.add_development_dependency "jekyll", ">= 2.4.0", "< 3.1.0"
|
18
18
|
spec.add_development_dependency "bundler", "~> 1.6"
|
19
19
|
spec.add_development_dependency "rake", "~> 10.0"
|
20
20
|
spec.add_development_dependency "rspec", "~> 3.0"
|
21
21
|
spec.add_development_dependency "typhoeus", "~> 0.7"
|
22
22
|
spec.add_development_dependency "nokogiri", "~> 1.6"
|
23
23
|
spec.add_development_dependency "jekyll-last-modified-at", "0.3.4"
|
24
|
-
|
25
24
|
end
|
data/lib/jekyll-feed.rb
CHANGED
@@ -12,6 +12,14 @@ module Jekyll
|
|
12
12
|
@context.registers[:site].config
|
13
13
|
end
|
14
14
|
|
15
|
+
def path
|
16
|
+
if config["feed"] && config["feed"]["path"]
|
17
|
+
config["feed"]["path"]
|
18
|
+
else
|
19
|
+
"feed.xml"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
15
23
|
def url
|
16
24
|
if config["url"]
|
17
25
|
config["url"]
|
@@ -22,7 +30,7 @@ module Jekyll
|
|
22
30
|
|
23
31
|
def render(context)
|
24
32
|
@context = context
|
25
|
-
"<link type=\"application/atom+xml\" rel=\"alternate\" href=\"#{url}
|
33
|
+
"<link type=\"application/atom+xml\" rel=\"alternate\" href=\"#{url}/#{path}\" title=\"#{config["name"]}\" />"
|
26
34
|
end
|
27
35
|
end
|
28
36
|
|
@@ -30,14 +38,23 @@ module Jekyll
|
|
30
38
|
safe true
|
31
39
|
priority :lowest
|
32
40
|
|
41
|
+
# Path to feed from config, or feed.xml for default
|
42
|
+
def path
|
43
|
+
if @site.config["feed"] && @site.config["feed"]["path"]
|
44
|
+
@site.config["feed"]["path"]
|
45
|
+
else
|
46
|
+
"feed.xml"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
33
50
|
# Main plugin action, called by Jekyll-core
|
34
51
|
def generate(site)
|
35
52
|
@site = site
|
36
|
-
@site.config["time"]
|
53
|
+
@site.config["time"] = Time.new
|
37
54
|
unless feed_exists?
|
38
55
|
write
|
39
56
|
@site.keep_files ||= []
|
40
|
-
@site.keep_files <<
|
57
|
+
@site.keep_files << path
|
41
58
|
end
|
42
59
|
end
|
43
60
|
|
@@ -49,9 +66,9 @@ module Jekyll
|
|
49
66
|
# Destination for feed.xml file within the site source directory
|
50
67
|
def destination_path
|
51
68
|
if @site.respond_to?(:in_dest_dir)
|
52
|
-
@site.in_dest_dir(
|
69
|
+
@site.in_dest_dir(path)
|
53
70
|
else
|
54
|
-
Jekyll.sanitized_path(@site.dest,
|
71
|
+
Jekyll.sanitized_path(@site.dest, path)
|
55
72
|
end
|
56
73
|
end
|
57
74
|
|
@@ -62,7 +79,7 @@ module Jekyll
|
|
62
79
|
end
|
63
80
|
|
64
81
|
def feed_content
|
65
|
-
site_map = PageWithoutAFile.new(@site, File.dirname(__FILE__), "",
|
82
|
+
site_map = PageWithoutAFile.new(@site, File.dirname(__FILE__), "", path)
|
66
83
|
site_map.content = File.read(source_path).gsub(/\s*\n\s*/, "\n").gsub(/\n{%/, "{%")
|
67
84
|
site_map.data["layout"] = nil
|
68
85
|
site_map.render(Hash.new, @site.site_payload)
|
@@ -72,9 +89,9 @@ module Jekyll
|
|
72
89
|
# Checks if a feed already exists in the site source
|
73
90
|
def feed_exists?
|
74
91
|
if @site.respond_to?(:in_source_dir)
|
75
|
-
File.exists? @site.in_source_dir(
|
92
|
+
File.exists? @site.in_source_dir(path)
|
76
93
|
else
|
77
|
-
File.exists? Jekyll.sanitized_path(@site.source,
|
94
|
+
File.exists? Jekyll.sanitized_path(@site.source, path)
|
78
95
|
end
|
79
96
|
end
|
80
97
|
end
|
data/spec/jekyll-feed_spec.rb
CHANGED
@@ -3,6 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe(Jekyll::JekyllFeed) do
|
4
4
|
let(:overrides) do
|
5
5
|
{
|
6
|
+
"full_rebuild" => true,
|
6
7
|
"source" => source_dir,
|
7
8
|
"destination" => dest_dir,
|
8
9
|
"url" => "http://example.org",
|
@@ -30,7 +31,7 @@ describe(Jekyll::JekyllFeed) do
|
|
30
31
|
end
|
31
32
|
|
32
33
|
it "creates a feed.xml file" do
|
33
|
-
expect(
|
34
|
+
expect(Pathname.new(dest_dir("feed.xml"))).to exist
|
34
35
|
end
|
35
36
|
|
36
37
|
it "doesn't have multiple new lines or trailing whitespace" do
|
@@ -145,4 +146,20 @@ describe(Jekyll::JekyllFeed) do
|
|
145
146
|
expect(index).to include(expected)
|
146
147
|
end
|
147
148
|
end
|
149
|
+
|
150
|
+
context "changing the feed path" do
|
151
|
+
let(:config) do
|
152
|
+
Jekyll.configuration(Jekyll::Utils.deep_merge_hashes(overrides, {"feed" => {"path" => "atom.xml"}}))
|
153
|
+
end
|
154
|
+
|
155
|
+
it "should write to atom.xml" do
|
156
|
+
expect(Pathname.new(dest_dir("atom.xml"))).to exist
|
157
|
+
end
|
158
|
+
|
159
|
+
it "renders the feed meta with custom feed path" do
|
160
|
+
index = File.read(dest_dir("index.html"))
|
161
|
+
expected = '<link type="application/atom+xml" rel="alternate" href="http://example.org/atom.xml" title="My awesome site" />'
|
162
|
+
expect(index).to include(expected)
|
163
|
+
end
|
164
|
+
end
|
148
165
|
end
|
metadata
CHANGED
@@ -1,29 +1,35 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-feed
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.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: 2015-
|
11
|
+
date: 2015-06-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 2.4.0
|
20
|
+
- - "<"
|
18
21
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
22
|
+
version: 3.1.0
|
20
23
|
type: :development
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
24
|
-
- - "
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 2.4.0
|
30
|
+
- - "<"
|
25
31
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
32
|
+
version: 3.1.0
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
34
|
name: bundler
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|