jekyll-feed 0.1.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 +7 -0
- data/.gitignore +18 -0
- data/.rspec +2 -0
- data/.travis.yml +9 -0
- data/Gemfile +3 -0
- data/LICENSE.txt +22 -0
- data/README.md +64 -0
- data/Rakefile +6 -0
- data/jekyll-feed.gemspec +24 -0
- data/lib/feed.xml +57 -0
- data/lib/jekyll-feed.rb +83 -0
- data/script/bootstrap +3 -0
- data/script/cibuild +4 -0
- data/script/release +7 -0
- data/spec/fixtures/_config.yml +9 -0
- data/spec/fixtures/_layouts/some_default.html +11 -0
- data/spec/fixtures/_my_collection/custom_permalink.md +5 -0
- data/spec/fixtures/_my_collection/custom_permalink_2.md +5 -0
- data/spec/fixtures/_my_collection/test.html +4 -0
- data/spec/fixtures/_other_things/test2.html +4 -0
- data/spec/fixtures/_posts/2013-12-12-dec-the-second.md +4 -0
- data/spec/fixtures/_posts/2014-03-02-march-the-second.md +4 -0
- data/spec/fixtures/_posts/2014-03-04-march-the-fourth.md +6 -0
- data/spec/fixtures/_posts/2014-05-11-exclude-this-post.md +5 -0
- data/spec/fixtures/_posts/2015-01-18-jekyll-last-modified-at.md +4 -0
- data/spec/fixtures/_posts/2015-05-12-pre.html +6 -0
- data/spec/fixtures/feeds/atom.xml +6 -0
- data/spec/fixtures/images/hubot.png +0 -0
- data/spec/fixtures/index.html +4 -0
- data/spec/fixtures/jekyll-last-modified-at/page.html +4 -0
- data/spec/fixtures/some-subfolder/exclude-this-page.html +5 -0
- data/spec/fixtures/some-subfolder/test_index.html +4 -0
- data/spec/fixtures/some-subfolder/this-is-a-subfile.html +0 -0
- data/spec/fixtures/some-subfolder/this-is-a-subpage.html +4 -0
- data/spec/jekyll-feed_spec.rb +128 -0
- data/spec/spec_helper.rb +24 -0
- metadata +185 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 8604112b8ba6da171f042ad8371493aa738abb63
|
4
|
+
data.tar.gz: e6b6b66be5943fd94efb27d05fbf5ff546fb53d8
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 73765321b5101bdc3e7c182669c59d52aeff3c07bc27fe96f46a11ec6ad710a9d5f0857c76aa031357f070c6e8982eda4f7bdc4c9c7257cd9bb5b2828b272f0e
|
7
|
+
data.tar.gz: 8f33d48d10de2155bc8a3cf06486b369daba284d7a38499181ec19a13ec5edfd83071bcc6e09815c870d1a2e76ee7298ebc7c908460622b0df37e603624c926a
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2015 Ben Balter
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
# Jekyll Feed plugin
|
2
|
+
|
3
|
+
A Jekyll plugin to generate an Atom (RSS-like) feed of your Jekyll posts
|
4
|
+
|
5
|
+
[](https://travis-ci.org/jekyll/jekyll-feed) [](http://badge.fury.io/rb/jekyll-feed)
|
6
|
+
|
7
|
+
## Installation
|
8
|
+
|
9
|
+
Add this line to your site's Gemfile:
|
10
|
+
|
11
|
+
```ruby
|
12
|
+
gem 'jekyll-feed'
|
13
|
+
```
|
14
|
+
|
15
|
+
And then add this line to your site's `_config.yml`:
|
16
|
+
|
17
|
+
```yml
|
18
|
+
gems:
|
19
|
+
- jekyll-feed
|
20
|
+
```
|
21
|
+
|
22
|
+
## Usage
|
23
|
+
|
24
|
+
The plugin will automatically generate an Atom feed at `/feed.xml`.
|
25
|
+
|
26
|
+
### Optional configuration options
|
27
|
+
|
28
|
+
The plugin will automatically use any of the following configuration variables, if they are present in your site's `_config.yml` file.
|
29
|
+
|
30
|
+
* `name` - The title of the site, e.g., "My awesome site"
|
31
|
+
* `description` - A longer description of what your site is about, e.g., "Where I blog about Jekyll and other awesome things"
|
32
|
+
* `url` - The URL to your site, e.g., `http://example.com`. If none is provided, the plugin will try to use `site.github.url`.
|
33
|
+
* `author` - Your name, e.g., "Dr. Jekyll"
|
34
|
+
|
35
|
+
### Optional front matter
|
36
|
+
|
37
|
+
The plugin will use the following post metadata, automatically generated by Jekyll, which you can override via a post's YAML front matter:
|
38
|
+
|
39
|
+
* `date`
|
40
|
+
* `title`
|
41
|
+
* `excerpt`
|
42
|
+
* `id`
|
43
|
+
* `category`
|
44
|
+
* `tags`
|
45
|
+
|
46
|
+
Additionally, the plugin will use the following values, if present in a post's YAML front matter:
|
47
|
+
|
48
|
+
* `author` - The author of the post, e.g., "Dr. Jekyll". If none is given, feed readers will look to the feed author as defined in `_config.yml`
|
49
|
+
|
50
|
+
### Meta tags
|
51
|
+
|
52
|
+
The plugin exposes a helper tag to expose the appropriate meta tags to support automated discovery of your feed. Simply place `{% feed_meta %}` someplace in your template's `<head>` section, to output the necessary metadata.
|
53
|
+
|
54
|
+
## Why Atom, and not RSS?
|
55
|
+
|
56
|
+
Great question. In short, Atom is a better format. Think of it like RSS 3.0. For more information, see [this discussion on why we chose Atom over RSS 2.0](https://github.com/jekyll/jekyll-rss-feed/issues/2).
|
57
|
+
|
58
|
+
## Contributing
|
59
|
+
|
60
|
+
1. Fork it (https://github.com/jekyll/jekyll-feed/fork)
|
61
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
62
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
63
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
64
|
+
5. Create a new Pull Request
|
data/Rakefile
ADDED
data/jekyll-feed.gemspec
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
Gem::Specification.new do |spec|
|
4
|
+
spec.name = "jekyll-feed"
|
5
|
+
spec.version = "0.1.0"
|
6
|
+
spec.authors = ["Ben Balter"]
|
7
|
+
spec.email = ["ben.balter@github.com"]
|
8
|
+
spec.summary = "A Jekyll plugin to generate an Atom feed of your Jekyll posts"
|
9
|
+
spec.homepage = "https://github.com/jekyll/jekyll-feed"
|
10
|
+
spec.license = "MIT"
|
11
|
+
|
12
|
+
spec.files = `git ls-files -z`.split("\x0")
|
13
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
14
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
15
|
+
spec.require_paths = ["lib"]
|
16
|
+
|
17
|
+
spec.add_development_dependency "jekyll", "~> 2.0"
|
18
|
+
spec.add_development_dependency "bundler", "~> 1.6"
|
19
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
20
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
21
|
+
spec.add_development_dependency "typhoeus", "~> 0.7"
|
22
|
+
spec.add_development_dependency "nokogiri", "~> 1.6"
|
23
|
+
|
24
|
+
end
|
data/lib/feed.xml
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
{% if site.url %}
|
3
|
+
{% assign url_base = site.url | append: site.baseurl %}
|
4
|
+
{% else %}
|
5
|
+
{% assign url_base = site.github.url %}
|
6
|
+
{% endif %}
|
7
|
+
<feed xmlns="http://www.w3.org/2005/Atom">
|
8
|
+
<generator uri="http://jekyllrb.com" version="{{ jekyll.version }}">Jekyll</generator>
|
9
|
+
<link href="{{ url_base }}{{ page.url }}" rel="self" type="application/atom+xml" />
|
10
|
+
<link href="{{ url_base }}/" rel="alternate" type="text/html" />
|
11
|
+
<updated>{{ site.time | date_to_xmlschema }}</updated>
|
12
|
+
<id>{{ url_base }}/</id>
|
13
|
+
|
14
|
+
{% if site.name %}
|
15
|
+
<title>{{ site.name | xml_escape }}</title>
|
16
|
+
{% endif %}
|
17
|
+
|
18
|
+
{% if site.description %}
|
19
|
+
<subtitle>{{ site.description | xml_escape }}</subtitle>
|
20
|
+
{% endif %}
|
21
|
+
|
22
|
+
{% if site.author %}
|
23
|
+
<author>
|
24
|
+
<name>{{ site.author | xml_escape }}</name>
|
25
|
+
</author>
|
26
|
+
{% endif %}
|
27
|
+
|
28
|
+
{% for post in site.posts %}
|
29
|
+
<entry>
|
30
|
+
<title>{{ post.title | xml_escape }}</title>
|
31
|
+
<link href="{{ url_base }}{{ post.url }}" rel="alternate" type="text/html" title="{{ post.title | xml_escape }}" />
|
32
|
+
<published>{{ post.date | date_to_xmlschema }}</published>
|
33
|
+
<updated>{{ post.date | date_to_xmlschema }}</updated>
|
34
|
+
|
35
|
+
<id>{{ url_base }}{{ post.id }}</id>
|
36
|
+
<content type="html">{{ post.content | xml_escape }}</content>
|
37
|
+
|
38
|
+
{% if post.author %}
|
39
|
+
<author>
|
40
|
+
<name>{{ post.author | xml_escape }}</name>
|
41
|
+
</author>
|
42
|
+
{% endif %}
|
43
|
+
|
44
|
+
{% if post.category %}
|
45
|
+
<category term="{{ post.category | xml_escape }}" />
|
46
|
+
{% endif %}
|
47
|
+
|
48
|
+
{% for tag in post.tags %}
|
49
|
+
<category term="{{ tag | xml_escape }}" />
|
50
|
+
{% endfor %}
|
51
|
+
|
52
|
+
{% if post.excerpt %}
|
53
|
+
<summary>{{ post.excerpt | strip_html | strip_newlines | xml_escape }}</summary>
|
54
|
+
{% endif %}
|
55
|
+
</entry>
|
56
|
+
{% endfor %}
|
57
|
+
</feed>
|
data/lib/jekyll-feed.rb
ADDED
@@ -0,0 +1,83 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
|
3
|
+
module Jekyll
|
4
|
+
class PageWithoutAFile < Page
|
5
|
+
def read_yaml(*)
|
6
|
+
@data ||= {}
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
class FeedMetaTag < Liquid::Tag
|
11
|
+
def config
|
12
|
+
@context.registers[:site].config
|
13
|
+
end
|
14
|
+
|
15
|
+
def url
|
16
|
+
if config["url"]
|
17
|
+
config["url"]
|
18
|
+
elsif config["github"] && config["github"]["url"]
|
19
|
+
config["github"]["url"]
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def render(context)
|
24
|
+
@context = context
|
25
|
+
"<link type=\"application/atom+xml\" rel=\"alternate\" href=\"#{url}/feed.xml\" />"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
class JekyllFeed < Jekyll::Generator
|
30
|
+
safe true
|
31
|
+
priority :lowest
|
32
|
+
|
33
|
+
# Main plugin action, called by Jekyll-core
|
34
|
+
def generate(site)
|
35
|
+
@site = site
|
36
|
+
@site.config["time"] = Time.new
|
37
|
+
unless feed_exists?
|
38
|
+
write
|
39
|
+
@site.keep_files ||= []
|
40
|
+
@site.keep_files << "feed.xml"
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
# Path to feed.xml template file
|
45
|
+
def source_path
|
46
|
+
File.expand_path "feed.xml", File.dirname(__FILE__)
|
47
|
+
end
|
48
|
+
|
49
|
+
# Destination for feed.xml file within the site source directory
|
50
|
+
def destination_path
|
51
|
+
if @site.respond_to?(:in_dest_dir)
|
52
|
+
@site.in_dest_dir("feed.xml")
|
53
|
+
else
|
54
|
+
Jekyll.sanitized_path(@site.dest, "feed.xml")
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
# copy feed template from source to destination
|
59
|
+
def write
|
60
|
+
FileUtils.mkdir_p File.dirname(destination_path)
|
61
|
+
File.open(destination_path, 'w') { |f| f.write(feed_content) }
|
62
|
+
end
|
63
|
+
|
64
|
+
def feed_content
|
65
|
+
site_map = PageWithoutAFile.new(@site, File.dirname(__FILE__), "", "feed.xml")
|
66
|
+
site_map.content = File.read(source_path).gsub(/\s*\n\s*/, "\n").gsub(/\n{%/, "{%")
|
67
|
+
site_map.data["layout"] = nil
|
68
|
+
site_map.render(Hash.new, @site.site_payload)
|
69
|
+
site_map.output
|
70
|
+
end
|
71
|
+
|
72
|
+
# Checks if a feed already exists in the site source
|
73
|
+
def feed_exists?
|
74
|
+
if @site.respond_to?(:in_source_dir)
|
75
|
+
File.exists? @site.in_source_dir("feed.xml")
|
76
|
+
else
|
77
|
+
File.exists? Jekyll.sanitized_path(@site.source, "feed.xml")
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
Liquid::Template.register_tag('feed_meta', Jekyll::FeedMetaTag)
|
data/script/bootstrap
ADDED
data/script/cibuild
ADDED
data/script/release
ADDED
Binary file
|
File without changes
|
@@ -0,0 +1,128 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe(Jekyll::JekyllFeed) do
|
4
|
+
let(:overrides) do
|
5
|
+
{
|
6
|
+
"source" => source_dir,
|
7
|
+
"destination" => dest_dir,
|
8
|
+
"url" => "http://example.org",
|
9
|
+
"name" => "My awesome site",
|
10
|
+
"author" => {
|
11
|
+
"name" => "Dr. Jekyll"
|
12
|
+
},
|
13
|
+
"collections" => {
|
14
|
+
"my_collection" => { "output" => true },
|
15
|
+
"other_things" => { "output" => false }
|
16
|
+
}
|
17
|
+
}
|
18
|
+
end
|
19
|
+
let(:config) do
|
20
|
+
Jekyll.configuration(overrides)
|
21
|
+
end
|
22
|
+
let(:site) { Jekyll::Site.new(config) }
|
23
|
+
let(:contents) { File.read(dest_dir("feed.xml")) }
|
24
|
+
before(:each) do
|
25
|
+
site.process
|
26
|
+
end
|
27
|
+
|
28
|
+
it "has no layout" do
|
29
|
+
expect(contents).not_to match(/\ATHIS IS MY LAYOUT/)
|
30
|
+
end
|
31
|
+
|
32
|
+
it "creates a feed.xml file" do
|
33
|
+
expect(File.exist?(dest_dir("feed.xml"))).to be_truthy
|
34
|
+
end
|
35
|
+
|
36
|
+
it "doesn't have multiple new lines or trailing whitespace" do
|
37
|
+
expect(contents).to_not match /\s+\n/
|
38
|
+
expect(contents).to_not match /\n{2,}/
|
39
|
+
end
|
40
|
+
|
41
|
+
it "puts all the posts in the feed.xml file" do
|
42
|
+
expect(contents).to match /http:\/\/example\.org\/2014\/03\/04\/march-the-fourth\.html/
|
43
|
+
expect(contents).to match /http:\/\/example\.org\/2014\/03\/02\/march-the-second\.html/
|
44
|
+
expect(contents).to match /http:\/\/example\.org\/2013\/12\/12\/dec-the-second\.html/
|
45
|
+
end
|
46
|
+
|
47
|
+
it "does not include assets or any static files that aren't .html" do
|
48
|
+
expect(contents).not_to match /http:\/\/example\.org\/images\/hubot\.png/
|
49
|
+
expect(contents).not_to match /http:\/\/example\.org\/feeds\/atom\.xml/
|
50
|
+
end
|
51
|
+
|
52
|
+
it "preserves linebreaks in preformatted text in posts" do
|
53
|
+
expect(contents).to match /Line 1\nLine 2\nLine 3/
|
54
|
+
end
|
55
|
+
|
56
|
+
context "parsing" do
|
57
|
+
let(:feed) { RSS::Parser.parse(contents) }
|
58
|
+
|
59
|
+
it "outputs an RSS feed" do
|
60
|
+
expect(feed.feed_type).to eql("atom")
|
61
|
+
expect(feed.feed_version).to eql("1.0")
|
62
|
+
expect(feed.encoding).to eql("UTF-8")
|
63
|
+
end
|
64
|
+
|
65
|
+
it "outputs the link" do
|
66
|
+
expect(feed.link.href).to eql("http://example.org/feed.xml")
|
67
|
+
end
|
68
|
+
|
69
|
+
it "outputs the generator" do
|
70
|
+
expect(feed.generator.content).to eql("Jekyll")
|
71
|
+
expect(feed.generator.version).to eql(Jekyll::VERSION)
|
72
|
+
end
|
73
|
+
|
74
|
+
it "includes the items" do
|
75
|
+
expect(feed.items.count).to eql(6)
|
76
|
+
end
|
77
|
+
|
78
|
+
it "includes item contents" do
|
79
|
+
post = feed.items.last
|
80
|
+
expect(post.title.content).to eql("Dec The Second")
|
81
|
+
expect(post.link.href).to eql("http://example.org/2013/12/12/dec-the-second.html")
|
82
|
+
expect(post.published.content).to eql(Time.parse("2013-12-12"))
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
context "validation" do
|
87
|
+
it "validates" do
|
88
|
+
# See https://validator.w3.org/docs/api.html
|
89
|
+
url = "https://validator.w3.org/feed/check.cgi?output=soap12"
|
90
|
+
response = Typhoeus.post(url, body: { rawdata: contents }, accept_encoding: "gzip")
|
91
|
+
pending "Something went wrong with the W3 validator" unless response.success?
|
92
|
+
result = Nokogiri::XML(response.body)
|
93
|
+
result.remove_namespaces!
|
94
|
+
|
95
|
+
result.css("warning").each do |warning|
|
96
|
+
# Quiet a warning that results from us passing the feed as a string
|
97
|
+
next if warning.css("text").text =~ /Self reference doesn't match document location/
|
98
|
+
warn "Validation warning: #{warning.css("text").text} on line #{warning.css("line").text} column #{warning.css("column").text}"
|
99
|
+
end
|
100
|
+
|
101
|
+
errors = result.css("error").map do |error|
|
102
|
+
"Validation error: #{error.css("text").text} on line #{error.css("line").text} column #{error.css("column").text}"
|
103
|
+
end
|
104
|
+
|
105
|
+
expect(result.css("validity").text).to eql("true"), errors.join("\n")
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
context "with a baseurl" do
|
110
|
+
let(:config) do
|
111
|
+
Jekyll.configuration(Jekyll::Utils.deep_merge_hashes(overrides, {"baseurl" => "/bass"}))
|
112
|
+
end
|
113
|
+
|
114
|
+
it "correctly adds the baseurl to the posts" do
|
115
|
+
expect(contents).to match /http:\/\/example\.org\/bass\/2014\/03\/04\/march-the-fourth\.html/
|
116
|
+
expect(contents).to match /http:\/\/example\.org\/bass\/2014\/03\/02\/march-the-second\.html/
|
117
|
+
expect(contents).to match /http:\/\/example\.org\/bass\/2013\/12\/12\/dec-the-second\.html/
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
context "feed meta" do
|
122
|
+
it "renders the feed meta" do
|
123
|
+
index = File.read(dest_dir("index.html"))
|
124
|
+
expected = '<link type="application/atom+xml" rel="alternate" href="http://example.org/feed.xml" />'
|
125
|
+
expect(index).to include(expected)
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'jekyll'
|
2
|
+
require 'typhoeus'
|
3
|
+
require 'nokogiri'
|
4
|
+
require 'rss'
|
5
|
+
require File.expand_path('../lib/jekyll-feed', File.dirname(__FILE__))
|
6
|
+
|
7
|
+
Jekyll.logger.log_level = :error
|
8
|
+
|
9
|
+
RSpec.configure do |config|
|
10
|
+
config.run_all_when_everything_filtered = true
|
11
|
+
config.filter_run :focus
|
12
|
+
config.order = 'random'
|
13
|
+
|
14
|
+
SOURCE_DIR = File.expand_path("../fixtures", __FILE__)
|
15
|
+
DEST_DIR = File.expand_path("../dest", __FILE__)
|
16
|
+
|
17
|
+
def source_dir(*files)
|
18
|
+
File.join(SOURCE_DIR, *files)
|
19
|
+
end
|
20
|
+
|
21
|
+
def dest_dir(*files)
|
22
|
+
File.join(DEST_DIR, *files)
|
23
|
+
end
|
24
|
+
end
|
metadata
ADDED
@@ -0,0 +1,185 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: jekyll-feed
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Ben Balter
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-05-20 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: jekyll
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.6'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.6'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '10.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '10.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '3.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '3.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: typhoeus
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0.7'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0.7'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: nokogiri
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '1.6'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '1.6'
|
97
|
+
description:
|
98
|
+
email:
|
99
|
+
- ben.balter@github.com
|
100
|
+
executables: []
|
101
|
+
extensions: []
|
102
|
+
extra_rdoc_files: []
|
103
|
+
files:
|
104
|
+
- ".gitignore"
|
105
|
+
- ".rspec"
|
106
|
+
- ".travis.yml"
|
107
|
+
- Gemfile
|
108
|
+
- LICENSE.txt
|
109
|
+
- README.md
|
110
|
+
- Rakefile
|
111
|
+
- jekyll-feed.gemspec
|
112
|
+
- lib/feed.xml
|
113
|
+
- lib/jekyll-feed.rb
|
114
|
+
- script/bootstrap
|
115
|
+
- script/cibuild
|
116
|
+
- script/release
|
117
|
+
- spec/fixtures/_config.yml
|
118
|
+
- spec/fixtures/_layouts/some_default.html
|
119
|
+
- spec/fixtures/_my_collection/custom_permalink.md
|
120
|
+
- spec/fixtures/_my_collection/custom_permalink_2.md
|
121
|
+
- spec/fixtures/_my_collection/test.html
|
122
|
+
- spec/fixtures/_other_things/test2.html
|
123
|
+
- spec/fixtures/_posts/2013-12-12-dec-the-second.md
|
124
|
+
- spec/fixtures/_posts/2014-03-02-march-the-second.md
|
125
|
+
- spec/fixtures/_posts/2014-03-04-march-the-fourth.md
|
126
|
+
- spec/fixtures/_posts/2014-05-11-exclude-this-post.md
|
127
|
+
- spec/fixtures/_posts/2015-01-18-jekyll-last-modified-at.md
|
128
|
+
- spec/fixtures/_posts/2015-05-12-pre.html
|
129
|
+
- spec/fixtures/feeds/atom.xml
|
130
|
+
- spec/fixtures/images/hubot.png
|
131
|
+
- spec/fixtures/index.html
|
132
|
+
- spec/fixtures/jekyll-last-modified-at/page.html
|
133
|
+
- spec/fixtures/some-subfolder/exclude-this-page.html
|
134
|
+
- spec/fixtures/some-subfolder/test_index.html
|
135
|
+
- spec/fixtures/some-subfolder/this-is-a-subfile.html
|
136
|
+
- spec/fixtures/some-subfolder/this-is-a-subpage.html
|
137
|
+
- spec/jekyll-feed_spec.rb
|
138
|
+
- spec/spec_helper.rb
|
139
|
+
homepage: https://github.com/jekyll/jekyll-feed
|
140
|
+
licenses:
|
141
|
+
- MIT
|
142
|
+
metadata: {}
|
143
|
+
post_install_message:
|
144
|
+
rdoc_options: []
|
145
|
+
require_paths:
|
146
|
+
- lib
|
147
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
148
|
+
requirements:
|
149
|
+
- - ">="
|
150
|
+
- !ruby/object:Gem::Version
|
151
|
+
version: '0'
|
152
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
153
|
+
requirements:
|
154
|
+
- - ">="
|
155
|
+
- !ruby/object:Gem::Version
|
156
|
+
version: '0'
|
157
|
+
requirements: []
|
158
|
+
rubyforge_project:
|
159
|
+
rubygems_version: 2.2.3
|
160
|
+
signing_key:
|
161
|
+
specification_version: 4
|
162
|
+
summary: A Jekyll plugin to generate an Atom feed of your Jekyll posts
|
163
|
+
test_files:
|
164
|
+
- spec/fixtures/_config.yml
|
165
|
+
- spec/fixtures/_layouts/some_default.html
|
166
|
+
- spec/fixtures/_my_collection/custom_permalink.md
|
167
|
+
- spec/fixtures/_my_collection/custom_permalink_2.md
|
168
|
+
- spec/fixtures/_my_collection/test.html
|
169
|
+
- spec/fixtures/_other_things/test2.html
|
170
|
+
- spec/fixtures/_posts/2013-12-12-dec-the-second.md
|
171
|
+
- spec/fixtures/_posts/2014-03-02-march-the-second.md
|
172
|
+
- spec/fixtures/_posts/2014-03-04-march-the-fourth.md
|
173
|
+
- spec/fixtures/_posts/2014-05-11-exclude-this-post.md
|
174
|
+
- spec/fixtures/_posts/2015-01-18-jekyll-last-modified-at.md
|
175
|
+
- spec/fixtures/_posts/2015-05-12-pre.html
|
176
|
+
- spec/fixtures/feeds/atom.xml
|
177
|
+
- spec/fixtures/images/hubot.png
|
178
|
+
- spec/fixtures/index.html
|
179
|
+
- spec/fixtures/jekyll-last-modified-at/page.html
|
180
|
+
- spec/fixtures/some-subfolder/exclude-this-page.html
|
181
|
+
- spec/fixtures/some-subfolder/test_index.html
|
182
|
+
- spec/fixtures/some-subfolder/this-is-a-subfile.html
|
183
|
+
- spec/fixtures/some-subfolder/this-is-a-subpage.html
|
184
|
+
- spec/jekyll-feed_spec.rb
|
185
|
+
- spec/spec_helper.rb
|