bridgetown-feed 1.1.3 → 2.0.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 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