bridgetown-sitemap 3.0.2 → 3.0.3
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/CHANGELOG.md +5 -0
- data/lib/bridgetown-sitemap/git_inspector.rb +7 -1
- data/lib/bridgetown-sitemap/grouped_generated_pages.rb +9 -2
- data/lib/bridgetown-sitemap/grouped_resources.rb +4 -1
- data/lib/bridgetown-sitemap/version.rb +1 -1
- data/lib/sitemap.erb +1 -1
- data/test/fixtures/config/initializers.rb +1 -0
- data/test/fixtures/plugins/builders/generated_pages.rb +5 -0
- data/test/fixtures/src/blog/index.html +8 -0
- data/test/test_sitemap.rb +35 -1
- metadata +4 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8f00894900e60c0fffd2a423628cb6fc74b4c14c34e9d4af61b720768bd5975e
|
|
4
|
+
data.tar.gz: 362241749b5e761fe4d053033d7e55f8836ddb9abf44f6fc0ba24cb7968ae41a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4e94ff81de31e076f67ceee0027c3ddb087e64d2bac1c5bf6beba746d89fa3a7f7e2947168a8de0957d6f61fe63b5a00109f023ad94fd38585e3ef19b6147d72
|
|
7
|
+
data.tar.gz: 01e2c19296e749abe40df77f5e51bb5ca0a6592a3d0e36b29a288652368619c406fdde24efbd6c495cb84bd13430230933b756283ad119e4880c29aab99636ab
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# main
|
|
2
2
|
|
|
3
|
+
# 3.0.3 / 15-04-2026
|
|
4
|
+
|
|
5
|
+
* Fix resource and generated page grouping for same-name pages in different paths
|
|
6
|
+
* Cache git_repo? check at the class level
|
|
7
|
+
|
|
3
8
|
# 3.0.2 / 25-03-2026
|
|
4
9
|
|
|
5
10
|
* Fix the accidental inclusion of a sitemap XSL stylesheet within the sitemap itself
|
|
@@ -24,7 +24,13 @@ module BridgetownSitemap
|
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
def git_repo?
|
|
27
|
-
|
|
27
|
+
self.class.git_repo?
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def self.git_repo?
|
|
31
|
+
return @git_repo if defined?(@git_repo)
|
|
32
|
+
|
|
33
|
+
@git_repo = system("git rev-parse --is-inside-work-tree", out: File::NULL, err: File::NULL)
|
|
28
34
|
end
|
|
29
35
|
|
|
30
36
|
def cache
|
|
@@ -3,8 +3,15 @@
|
|
|
3
3
|
module BridgetownSitemap
|
|
4
4
|
class GroupedGeneratedPages
|
|
5
5
|
def initialize(generated_pages)
|
|
6
|
-
@grouped_generated_pages =
|
|
7
|
-
|
|
6
|
+
@grouped_generated_pages = generated_pages.group_by do |page|
|
|
7
|
+
url = if page.respond_to?(:original_resource) && page.original_resource
|
|
8
|
+
page.original_resource.relative_url.to_s
|
|
9
|
+
else
|
|
10
|
+
page.url.to_s
|
|
11
|
+
end
|
|
12
|
+
locale = page.data.locale.to_s
|
|
13
|
+
locale.empty? ? url : url.sub("/#{locale}/", "/")
|
|
14
|
+
end.values
|
|
8
15
|
end
|
|
9
16
|
|
|
10
17
|
def each(locale:, &block)
|
|
@@ -4,7 +4,10 @@ module BridgetownSitemap
|
|
|
4
4
|
class GroupedResources
|
|
5
5
|
def initialize(resources)
|
|
6
6
|
@grouped_resources = resources.group_by do |resource|
|
|
7
|
-
|
|
7
|
+
url = resource.relative_url.to_s
|
|
8
|
+
locale = resource.data.locale.to_s
|
|
9
|
+
base_url = locale.empty? ? url : url.sub("/#{locale}/", "/")
|
|
10
|
+
[base_url, resource.date]
|
|
8
11
|
end.values
|
|
9
12
|
end
|
|
10
13
|
|
data/lib/sitemap.erb
CHANGED
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
<url>
|
|
50
50
|
<loc><%= xml_escape absolute_url(default.url) %></loc>
|
|
51
51
|
|
|
52
|
-
<% group.each do |page| %>
|
|
52
|
+
<% group.reject { |p| p.respond_to?(:original_resource) && p.original_resource && p.url != default.url }.each do |page| %>
|
|
53
53
|
<% if !page.data.locale || site.locale == page.data.locale %>
|
|
54
54
|
<xhtml:link rel="alternate" hreflang="x-default" href="<%= xml_escape absolute_url(page.url) %>" />
|
|
55
55
|
<% end %>
|
|
@@ -10,8 +10,13 @@ class Builders::GeneratedPages < SiteBuilder
|
|
|
10
10
|
generated_page_ru.data.layout = "default"
|
|
11
11
|
generated_page_ru.data.locale = :ru
|
|
12
12
|
|
|
13
|
+
generated_page_alt = Bridgetown::GeneratedPage.new(site, site.source, "/alt", "generated_page.erb")
|
|
14
|
+
generated_page_alt.content = "<%= 'alt generated page'.capitalize %>"
|
|
15
|
+
generated_page_alt.data.layout = "default"
|
|
16
|
+
|
|
13
17
|
site.generated_pages << generated_page
|
|
14
18
|
site.generated_pages << generated_page_ru
|
|
19
|
+
site.generated_pages << generated_page_alt
|
|
15
20
|
end
|
|
16
21
|
end
|
|
17
22
|
end
|
data/test/test_sitemap.rb
CHANGED
|
@@ -120,7 +120,26 @@ class TestSitemap < BridgetownSitemap::Test
|
|
|
120
120
|
end
|
|
121
121
|
|
|
122
122
|
it "includes the correct number of items for the sitemap" do
|
|
123
|
-
assert_equal
|
|
123
|
+
assert_equal 22, @sitemap.scan(%r!(?=<url>)!).count
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
it "does not merge pages with the same slug but different paths" do
|
|
127
|
+
assert_match %r!<loc>https://example\.com/</loc>!, @sitemap
|
|
128
|
+
assert_match %r!<loc>https://example\.com/blog/</loc>!, @sitemap
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
it "does not merge generated pages with the same name but different paths" do
|
|
132
|
+
assert_match %r!<loc>https://example\.com/generated_page/</loc>!, @sitemap
|
|
133
|
+
assert_match %r!<loc>https://example\.com/alt/generated_page/</loc>!, @sitemap
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
it "collapses pagination pages with their original page" do
|
|
137
|
+
assert_match %r!<loc>https://example\.com/blog/</loc>!, @sitemap
|
|
138
|
+
refute_match %r!<loc>https://example\.com/blog/page/!, @sitemap
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
it "does not list pagination pages as hreflang alternates" do
|
|
142
|
+
refute_match %r!hreflang.*blog/page/!, @sitemap
|
|
124
143
|
end
|
|
125
144
|
|
|
126
145
|
it "includes generated pages in the sitemap" do
|
|
@@ -242,6 +261,20 @@ class TestSitemap < BridgetownSitemap::Test
|
|
|
242
261
|
end
|
|
243
262
|
end
|
|
244
263
|
|
|
264
|
+
describe "GitInspector" do
|
|
265
|
+
it "caches the git_repo? check at the class level" do
|
|
266
|
+
BridgetownSitemap::GitInspector.remove_instance_variable(:@git_repo) if
|
|
267
|
+
BridgetownSitemap::GitInspector.instance_variable_defined?(:@git_repo)
|
|
268
|
+
|
|
269
|
+
result = BridgetownSitemap::GitInspector.git_repo?
|
|
270
|
+
|
|
271
|
+
assert BridgetownSitemap::GitInspector.instance_variable_defined?(:@git_repo),
|
|
272
|
+
"Expected git_repo? result to be cached on the class"
|
|
273
|
+
assert_equal result, BridgetownSitemap::GitInspector.git_repo?,
|
|
274
|
+
"Expected cached result to be returned on subsequent calls"
|
|
275
|
+
end
|
|
276
|
+
end
|
|
277
|
+
|
|
245
278
|
describe "rendering the site with custom URLs" do
|
|
246
279
|
before(:all) do
|
|
247
280
|
prepare_site
|
|
@@ -257,4 +290,5 @@ class TestSitemap < BridgetownSitemap::Test
|
|
|
257
290
|
assert_match %r!<changefreq>weekly</changefreq>!, @sitemap
|
|
258
291
|
end
|
|
259
292
|
end
|
|
293
|
+
|
|
260
294
|
end
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: bridgetown-sitemap
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.0.
|
|
4
|
+
version: 3.0.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ayush Newatia
|
|
8
8
|
bindir: bin
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date: 2026-
|
|
10
|
+
date: 2026-04-15 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
13
|
name: bridgetown
|
|
@@ -103,6 +103,7 @@ files:
|
|
|
103
103
|
- test/fixtures/src/about.html
|
|
104
104
|
- test/fixtures/src/assets/sample_image.jpg
|
|
105
105
|
- test/fixtures/src/assets/sample_pdf.pdf
|
|
106
|
+
- test/fixtures/src/blog/index.html
|
|
106
107
|
- test/fixtures/src/excluded_files/excluded_pdf.pdf
|
|
107
108
|
- test/fixtures/src/excluded_files/html_file.html
|
|
108
109
|
- test/fixtures/src/feeds/atom.xml
|
|
@@ -160,6 +161,7 @@ test_files:
|
|
|
160
161
|
- test/fixtures/src/about.html
|
|
161
162
|
- test/fixtures/src/assets/sample_image.jpg
|
|
162
163
|
- test/fixtures/src/assets/sample_pdf.pdf
|
|
164
|
+
- test/fixtures/src/blog/index.html
|
|
163
165
|
- test/fixtures/src/excluded_files/excluded_pdf.pdf
|
|
164
166
|
- test/fixtures/src/excluded_files/html_file.html
|
|
165
167
|
- test/fixtures/src/feeds/atom.xml
|