jekyll-rss 1.0.0alpha2 → 1.0.0alpha3
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/lib/jekyll-rss.rb +1 -0
- data/lib/jekyll-rss/category_feed.rb +2 -0
- data/lib/jekyll-rss/generator.rb +19 -0
- data/lib/jekyll-rss/rss_templates/category.xml +1 -1
- data/lib/jekyll-rss/rss_templates/tag.xml +35 -0
- data/lib/jekyll-rss/rss_templates_command.rb +2 -1
- data/lib/jekyll-rss/tag_feed.rb +23 -0
- data/lib/jekyll-rss/version.rb +1 -1
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f860afda8f82875a87e4116a6d85db1cb9efe8fd
|
4
|
+
data.tar.gz: e0a9ec3ad58c251b011d690496cabf5bec257420
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1dcbcd71ffa08877d0acd7b89aea4fcfff54ebdd1bc202e8aaebb66234b3e83b4a7e47e635d40650ada1141ea91f10aa9eea8f1b48a4fd3686bd23fc876ce659
|
7
|
+
data.tar.gz: fb6d493aa0b07f7223fb605948f525cd137101eaadbaad71b43a0b7f43f3355b7bd3ebe2eebf64fb8a1d8dec9e139519d49a5b4095328a031814f5b30e29caa0
|
data/lib/jekyll-rss.rb
CHANGED
@@ -2,6 +2,7 @@ require 'jekyll-rss/version'
|
|
2
2
|
require 'jekyll-rss/generator'
|
3
3
|
require 'jekyll-rss/rss_feed'
|
4
4
|
require 'jekyll-rss/category_feed'
|
5
|
+
require 'jekyll-rss/tag_feed'
|
5
6
|
require 'jekyll-rss/pager'
|
6
7
|
require 'jekyll-rss/pagination'
|
7
8
|
require 'jekyll-rss/rss_templates_command'
|
@@ -9,6 +9,8 @@ module Jekyll
|
|
9
9
|
@category = category
|
10
10
|
@category_slug = category.strip.gsub(' ', '-').gsub(NON_SLUG_REGEX, '')
|
11
11
|
super site, path
|
12
|
+
self.data['category'] = category.split(' ').map(&:capitalize).join(' ')
|
13
|
+
self.data['category_slug'] = @category_slug
|
12
14
|
end
|
13
15
|
|
14
16
|
def url_placeholders
|
data/lib/jekyll-rss/generator.rb
CHANGED
@@ -5,6 +5,7 @@ module Jekyll
|
|
5
5
|
return nil unless site.config['rss']
|
6
6
|
generate_blog_feed site if File.exists? File.join(site.source, '_rss', 'blog.xml')
|
7
7
|
generate_category_feeds site if File.exists? File.join(site.source, '_rss', 'category.xml')
|
8
|
+
generate_tag_feeds site if File.exists? File.join(site.source, '_rss', 'tag.xml')
|
8
9
|
end
|
9
10
|
|
10
11
|
def generate_blog_feed(site)
|
@@ -22,6 +23,15 @@ module Jekyll
|
|
22
23
|
site.pages << feed
|
23
24
|
end
|
24
25
|
end
|
26
|
+
|
27
|
+
def generate_tag_feeds(site)
|
28
|
+
path = File.join site.source, '_rss', 'tag.xml'
|
29
|
+
site.tags.each do |tag, posts|
|
30
|
+
feed = TagFeed.new site, path, tag
|
31
|
+
paginate_tag(site, feed, tag, posts) if site.config['rss'].is_a? Hash and site.config['rss']['paginate']
|
32
|
+
site.pages << feed
|
33
|
+
end
|
34
|
+
end
|
25
35
|
|
26
36
|
def paginate_blog(site, feed)
|
27
37
|
Pagination.paginate site, feed, site.posts do |pager|
|
@@ -37,6 +47,15 @@ module Jekyll
|
|
37
47
|
category
|
38
48
|
end
|
39
49
|
end
|
50
|
+
|
51
|
+
def paginate_tag(site, feed, tag_name, tag_posts)
|
52
|
+
Pagination.paginate site, feed, tag_posts do |pager|
|
53
|
+
tag = TagFeed.new feed.site, feed.source, tag_name
|
54
|
+
tag.data['tag'] = tag_name
|
55
|
+
tag.data['posts'] = tag_posts
|
56
|
+
tag
|
57
|
+
end
|
58
|
+
end
|
40
59
|
end
|
41
60
|
end
|
42
61
|
end
|
@@ -7,7 +7,7 @@ paginated_permalink: /rss/:num/:category.xml
|
|
7
7
|
<channel>
|
8
8
|
<title>{{ site.name | xml_escape }}</title>
|
9
9
|
<description>{% if site.description %}{{ site.description | xml_escape }}{% endif %}</description>
|
10
|
-
<link>{{ site.site_url }}/{{ page.
|
10
|
+
<link>{{ site.site_url }}/{{ page.category_slug }}</link>
|
11
11
|
<atom:link href="{{ site.site_url }}{{ page.url }}" rel="self" type="application/rss+xml" />
|
12
12
|
{% if paginator.next_page %}
|
13
13
|
<atom:link href="{{ site.site_url }}{{ paginator.next_page_path }}" rel="next" type="application/rss+xml" />
|
@@ -0,0 +1,35 @@
|
|
1
|
+
---
|
2
|
+
permalink: /rss/:category.xml
|
3
|
+
paginated_permalink: /rss/:num/:category.xml
|
4
|
+
---
|
5
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
6
|
+
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
|
7
|
+
<channel>
|
8
|
+
<title>{{ site.name | xml_escape }}</title>
|
9
|
+
<description>{% if site.description %}{{ site.description | xml_escape }}{% endif %}</description>
|
10
|
+
<link>{{ site.site_url }}/{{ page.tag_slug }}</link>
|
11
|
+
<atom:link href="{{ site.site_url }}{{ page.url }}" rel="self" type="application/rss+xml" />
|
12
|
+
{% if paginator.next_page %}
|
13
|
+
<atom:link href="{{ site.site_url }}{{ paginator.next_page_path }}" rel="next" type="application/rss+xml" />
|
14
|
+
{% endif %}
|
15
|
+
{% if paginator.previous_page %}
|
16
|
+
<atom:link href="{{ site.site_url }}{{ paginator.previous_page_path }}" rel="previous" type="application/rss+xml" />
|
17
|
+
{% endif %}
|
18
|
+
{% for post in paginator.posts %}
|
19
|
+
<item>
|
20
|
+
<title>{{ post.title | xml_escape }}</title>
|
21
|
+
{% if post.author.name %}
|
22
|
+
<dc:creator>{{ post.author | xml_escape }}</dc:creator>
|
23
|
+
{% endif %}
|
24
|
+
{% if post.excerpt %}
|
25
|
+
<description>{{ post.excerpt | xml_escape }}</description>
|
26
|
+
{% else %}
|
27
|
+
<description>{{ post.content | xml_escape }}</description>
|
28
|
+
{% endif %}
|
29
|
+
<pubDate>{{ post.date | date: "%a, %d %b %Y %H:%M:%S %z" }}</pubDate>
|
30
|
+
<link>{{ site.site_url }}{{ post.url }}</link>
|
31
|
+
<guid isPermaLink="true">{{ site.site_url }}{{ post.url }}</guid>
|
32
|
+
</item>
|
33
|
+
{% endfor %}
|
34
|
+
</channel>
|
35
|
+
</rss>
|
@@ -8,6 +8,7 @@ module Jekyll
|
|
8
8
|
c.description 'Create the template files you need to format your RSS/Atom feeds.'
|
9
9
|
c.option 'blog', '-B', '--blog', 'Generate the blog RSS/Atom feed template'
|
10
10
|
c.option 'category', '-C', '--category', 'Generate the category RSS/Atom feed template'
|
11
|
+
c.option 'tag', '-T', '--tag', 'Generate the tag RSS/Atom feed template'
|
11
12
|
|
12
13
|
c.action do |args, options|
|
13
14
|
process options
|
@@ -17,7 +18,7 @@ module Jekyll
|
|
17
18
|
|
18
19
|
def process(options)
|
19
20
|
config = configuration_from_options(options)
|
20
|
-
%w(blog category).each do |template|
|
21
|
+
%w(blog category tag).each do |template|
|
21
22
|
create_template(config, template) if config[template]
|
22
23
|
end
|
23
24
|
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
|
2
|
+
module Jekyll
|
3
|
+
module RSS
|
4
|
+
class TagFeed < RSSFeed
|
5
|
+
|
6
|
+
NON_SLUG_REGEX = /[^a-z0-9\-_]/
|
7
|
+
|
8
|
+
def initialize(site, path, tag)
|
9
|
+
@tag = tag
|
10
|
+
@tag_slug = tag.strip.gsub(' ', '-').gsub(NON_SLUG_REGEX, '')
|
11
|
+
super site, path
|
12
|
+
self.data['tag'] = tag.split(' ').map(&:capitalize).join(' ')
|
13
|
+
self.data['tag_slug'] = @tag_slug
|
14
|
+
end
|
15
|
+
|
16
|
+
def url_placeholders
|
17
|
+
placeholders = super
|
18
|
+
placeholders[:tag] = @tag_slug
|
19
|
+
placeholders
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/lib/jekyll-rss/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-rss
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.0alpha3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bez Hermoso
|
@@ -82,7 +82,9 @@ files:
|
|
82
82
|
- lib/jekyll-rss/rss_feed.rb
|
83
83
|
- lib/jekyll-rss/rss_templates/blog.xml
|
84
84
|
- lib/jekyll-rss/rss_templates/category.xml
|
85
|
+
- lib/jekyll-rss/rss_templates/tag.xml
|
85
86
|
- lib/jekyll-rss/rss_templates_command.rb
|
87
|
+
- lib/jekyll-rss/tag_feed.rb
|
86
88
|
- lib/jekyll-rss/version.rb
|
87
89
|
homepage: https://github.com/bezhermoso/jekyll-rss
|
88
90
|
licenses:
|