bridgetown-feed 1.1.3 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 559978b2df337172dca28f682dcc91a163e535ff8f23750d04378bf940b47d83
4
- data.tar.gz: 2054eeeccc4d78f411054addf59c167027899c6835dddf6c883fb85c5dad3fbc
3
+ metadata.gz: 3a054cdb820ee742185d8cdebee2be24f370d700bcae60a1f7ebcc6876d4fb17
4
+ data.tar.gz: 6751bba99b04610e7bf54d82cd9945da7edce9c7a981a80947433cdda6216744
5
5
  SHA512:
6
- metadata.gz: 0aef57044ab2fa99b6691b5ad092784a8aa1173dda8e8aaa674e6443910e670287871aa04a9aa0ebd7475eddc796e3f82ded9ea870ef00d79135993471b4a733
7
- data.tar.gz: 7b49566d00c3f76f869270ebe74bdff3adad4b2d3428462da092bf04596516b956938ca43f236fcd65d335ab2e417a44d6a749398f0fe886eb4622ea330eff24
6
+ metadata.gz: 545c964c4927c414c9fe11e9f38e1e5f86930c5dc93a0cc2ea09f78dc008aa8eedb0df6d0c37014132988506984c74b7fc7193226a5a0265a548f6799752066d
7
+ data.tar.gz: b41d66e8c0dcbd6e9adc14ad4a4db0785ab21980a61f8ac42c595c3faf81142361dd41dd7291e73524286b864c391759e62354791fdbfc1370dbc551bae68768
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # master
2
2
 
3
+ ## 2.0.0 / 2021-04-17
4
+
5
+ * New release with helper to support Ruby templates like ERB
6
+
3
7
  ## 1.1.3 / 2020-11-05
4
8
 
5
9
  * Add `template_engine: liquid` to the feed XML so it plays well with Bridgetown 0.18+
data/README.md CHANGED
@@ -18,7 +18,17 @@ gem 'bridgetown-feed', group: "bridgetown_plugins"
18
18
 
19
19
  The plugin exposes a helper tag to expose the appropriate meta tags to support automated discovery of your feed.
20
20
 
21
- Simply place `{% feed_meta %}` someplace in your template's `<head>` section to output the necessary metadata.
21
+ Simply place `feed_meta` someplace in your layout's `<head>` section to output the necessary metadata.
22
+
23
+ ```liquid
24
+ <!-- layout.liquid -->
25
+ {% feed_meta %}
26
+ ```
27
+
28
+ ```erb
29
+ <!-- layout.erb -->
30
+ <%= feed_meta %>
31
+ ```
22
32
 
23
33
  ### Atom is nice and all, but what about JSON Feed?
24
34
 
@@ -17,7 +17,7 @@ Gem::Specification.new do |spec|
17
17
 
18
18
  spec.required_ruby_version = ">= 2.5.0"
19
19
 
20
- spec.add_dependency "bridgetown", ">= 0.6", "< 2.0"
20
+ spec.add_dependency "bridgetown", ">= 0.20", "< 2.0"
21
21
 
22
22
  spec.add_development_dependency "bundler"
23
23
  spec.add_development_dependency "nokogiri", "~> 1.6"
@@ -2,11 +2,5 @@
2
2
 
3
3
  require "bridgetown"
4
4
  require "fileutils"
5
+ require "bridgetown-feed/builder"
5
6
  require "bridgetown-feed/generator"
6
-
7
- module BridgetownFeed
8
- autoload :MetaTag, "bridgetown-feed/meta-tag"
9
- autoload :PageWithoutAFile, "bridgetown-feed/page-without-a-file.rb"
10
- end
11
-
12
- Liquid::Template.register_tag "feed_meta", BridgetownFeed::MetaTag
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BridgetownFeed
4
+ class Builder < Bridgetown::Builder
5
+ include Bridgetown::Filters::URLFilters
6
+ Context = Struct.new(:registers)
7
+
8
+ def build
9
+ @context = Context.new({ site: site })
10
+ helper "feed_meta", :generate_link_tag
11
+ liquid_tag "feed_meta", :generate_link_tag
12
+ end
13
+
14
+ def generate_link_tag(*)
15
+ attrs = attributes.map { |k, v| %(#{k}="#{v}") }.join(" ")
16
+ tag_output = "<link #{attrs} />"
17
+ tag_output.respond_to?(:html_safe) ? tag_output.html_safe : tag_output
18
+ end
19
+
20
+ private
21
+
22
+ def config
23
+ @config ||= site.config
24
+ end
25
+
26
+ def metadata
27
+ @metadata ||= site.data["site_metadata"]
28
+ end
29
+
30
+ def attributes
31
+ {
32
+ type: "application/atom+xml",
33
+ rel: "alternate",
34
+ href: absolute_url(path),
35
+ title: title,
36
+ }.keep_if { |_, v| v }
37
+ end
38
+
39
+ def path
40
+ config.dig("feed", "path") || "feed.xml"
41
+ end
42
+
43
+ def title
44
+ metadata["title"] || metadata["name"]
45
+ end
46
+ end
47
+ end
48
+
49
+ BridgetownFeed::Builder.register
@@ -39,7 +39,12 @@
39
39
  </author>
40
40
  {% endif %}
41
41
 
42
- {% assign posts = site[page.collection] | where_exp: "post", "post.draft != true" | sort: "date" | reverse %}
42
+ {% assign feed_collection = collections[page.collection] %}
43
+ {% if site.uses_resource %}
44
+ {% find posts where feed_collection.resources, draft != true %}
45
+ {% else %}
46
+ {% assign posts = feed_collection.docs | where_exp: "post", "post.draft != true" | sort: "date" | reverse %}
47
+ {% endif %}
43
48
  {% if page.category %}
44
49
  {% assign posts = posts | where: "category",page.category %}
45
50
  {% endif %}
@@ -85,7 +85,7 @@ module BridgetownFeed
85
85
  # Generates contents for a file
86
86
 
87
87
  def make_page(file_path, collection: "posts", category: nil)
88
- PageWithoutAFile.new(@site, __dir__, "", file_path).tap do |file|
88
+ Bridgetown::GeneratedPage.new(@site, __dir__, "", file_path, from_plugin: true).tap do |file|
89
89
  file.content = feed_template
90
90
  file.data.merge!(
91
91
  "layout" => "none",
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Bridgetown
4
4
  module Feed
5
- VERSION = "1.1.3"
5
+ VERSION = "2.0.0"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bridgetown-feed
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.3
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bridgetown Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-11-05 00:00:00.000000000 Z
11
+ date: 2021-04-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bridgetown
@@ -16,7 +16,7 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '0.6'
19
+ version: '0.20'
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
22
  version: '2.0'
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: '0.6'
29
+ version: '0.20'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
32
  version: '2.0'
@@ -136,10 +136,9 @@ files:
136
136
  - Rakefile
137
137
  - bridgetown-feed.gemspec
138
138
  - lib/bridgetown-feed.rb
139
+ - lib/bridgetown-feed/builder.rb
139
140
  - lib/bridgetown-feed/feed.xml
140
141
  - lib/bridgetown-feed/generator.rb
141
- - lib/bridgetown-feed/meta-tag.rb
142
- - lib/bridgetown-feed/page-without-a-file.rb
143
142
  - lib/bridgetown-feed/version.rb
144
143
  homepage: https://github.com/bridgetownrb/bridgetown-feed
145
144
  licenses:
@@ -1,41 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module BridgetownFeed
4
- class MetaTag < Liquid::Tag
5
- # Use Bridgetown's native relative_url filter
6
- include Bridgetown::Filters::URLFilters
7
-
8
- def render(context)
9
- @context = context
10
- attrs = attributes.map { |k, v| %(#{k}="#{v}") }.join(" ")
11
- "<link #{attrs} />"
12
- end
13
-
14
- private
15
-
16
- def config
17
- @config ||= @context.registers[:site].config
18
- end
19
-
20
- def metadata
21
- @metadata ||= @context.registers[:site].data["site_metadata"]
22
- end
23
-
24
- def attributes
25
- {
26
- type: "application/atom+xml",
27
- rel: "alternate",
28
- href: absolute_url(path),
29
- title: title,
30
- }.keep_if { |_, v| v }
31
- end
32
-
33
- def path
34
- config.dig("feed", "path") || "feed.xml"
35
- end
36
-
37
- def title
38
- metadata["title"] || metadata["name"]
39
- end
40
- end
41
- end
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module BridgetownFeed
4
- class PageWithoutAFile < Bridgetown::Page
5
- def read_yaml(*)
6
- @data ||= {}
7
- end
8
- end
9
- end