Skip to content

Commit 689debf

Browse files
committed
Base path attributes on relative path
Also update tests
1 parent ca98dcc commit 689debf

File tree

2 files changed

+34
-32
lines changed

2 files changed

+34
-32
lines changed

lib/jekyll-archives/archive.rb

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,11 @@ class Archive
1010
# Attributes for Liquid templates
1111
ATTRIBUTES_FOR_LIQUID = %w[
1212
posts
13+
type
1314
title
1415
name
15-
type
16+
path
17+
url
1618
]
1719

1820
# Initialize a new Archive page
@@ -36,9 +38,9 @@ def initialize(site, title, type, posts)
3638
end
3739

3840
# Use ".html" for file extension and url for path
39-
@ext = File.extname(destination('/'))
40-
@path = url
41-
@name = File.basename(destination('/'), @ext)
41+
@ext = File.extname(relative_path)
42+
@path = relative_path
43+
@name = File.basename(relative_path, @ext)
4244

4345
@data = {
4446
"layout" => site.config['jekyll-archives']['layout']
@@ -120,7 +122,6 @@ def title
120122
#
121123
# Returns the destination file path String.
122124
def destination(dest)
123-
@dest ||= dest
124125
path = Jekyll.sanitized_path(dest, URL.unescape_path(url))
125126
path = File.join(path, "index.html") if url =~ /\/$/
126127
path
@@ -130,7 +131,8 @@ def destination(dest)
130131
#
131132
# Returns the destination relative path String.
132133
def relative_path
133-
path = Pathname.new(destination(@dest)).relative_path_from Pathname.new(@dest)
134+
path = URL.unescape_path(url).gsub(/^\//, '')
135+
path = File.join(path, "index.html") if url =~ /\/$/
134136
path
135137
end
136138

test/test_jekyll_archives.rb

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -14,37 +14,37 @@ class TestJekyllArchives < Minitest::Test
1414

1515
should "generate archive pages by year" do
1616
@archives.generate(@site)
17-
assert archive_exists? @site, "/2014/"
18-
assert archive_exists? @site, "/2013/"
17+
assert archive_exists? @site, "2014/index.html"
18+
assert archive_exists? @site, "2013/index.html"
1919
end
2020

2121
should "generate archive pages by month" do
2222
@archives.generate(@site)
23-
assert archive_exists? @site, "/2014/08/"
24-
assert archive_exists? @site, "/2014/03/"
23+
assert archive_exists? @site, "2014/08/index.html"
24+
assert archive_exists? @site, "2014/03/index.html"
2525
end
2626

2727
should "generate archive pages by day" do
2828
@archives.generate(@site)
29-
assert archive_exists? @site, "/2014/08/17/"
30-
assert archive_exists? @site, "/2013/08/16/"
29+
assert archive_exists? @site, "2014/08/17/index.html"
30+
assert archive_exists? @site, "2013/08/16/index.html"
3131
end
3232

3333
should "generate archive pages by tag" do
3434
@archives.generate(@site)
35-
assert archive_exists? @site, "/tag/test-tag/"
36-
assert archive_exists? @site, "/tag/tagged/"
37-
assert archive_exists? @site, "/tag/new/"
35+
assert archive_exists? @site, "tag/test-tag/index.html"
36+
assert archive_exists? @site, "tag/tagged/index.html"
37+
assert archive_exists? @site, "tag/new/index.html"
3838
end
3939

4040
should "generate archive pages by category" do
4141
@archives.generate(@site)
42-
assert archive_exists? @site, "/category/plugins/"
42+
assert archive_exists? @site, "category/plugins/index.html"
4343
end
4444

4545
should "generate archive pages with a layout" do
4646
@site.process
47-
assert_equal "Test", read_file("/tag/test-tag/index.html")
47+
assert_equal "Test", read_file("tag/test-tag/index.html")
4848
end
4949
end
5050

@@ -62,7 +62,7 @@ class TestJekyllArchives < Minitest::Test
6262

6363
should "use custom layout" do
6464
@site.process
65-
assert_equal "Test too", read_file("/tag/test-tag/index.html")
65+
assert_equal "Test too", read_file("tag/test-tag/index.html")
6666
end
6767
end
6868

@@ -82,11 +82,11 @@ class TestJekyllArchives < Minitest::Test
8282
end
8383

8484
should "use the right permalink" do
85-
assert archive_exists? @site, "/year/2014/"
86-
assert archive_exists? @site, "/year/2013/"
87-
assert archive_exists? @site, "/tag-test-tag.html"
88-
assert archive_exists? @site, "/tag-new.html"
89-
assert archive_exists? @site, "/category-plugins.html"
85+
assert archive_exists? @site, "year/2014/index.html"
86+
assert archive_exists? @site, "year/2013/index.html"
87+
assert archive_exists? @site, "tag-test-tag.html"
88+
assert archive_exists? @site, "tag-new.html"
89+
assert archive_exists? @site, "category-plugins.html"
9090
end
9191
end
9292

@@ -101,7 +101,7 @@ class TestJekyllArchives < Minitest::Test
101101
end
102102

103103
should "populate the {{ site.archives }} tag in Liquid" do
104-
assert_equal 12, read_file("/length.html").to_i
104+
assert_equal 12, read_file("length.html").to_i
105105
end
106106
end
107107

@@ -112,7 +112,7 @@ class TestJekyllArchives < Minitest::Test
112112
end
113113

114114
should "not generate any archives" do
115-
assert_equal 0, read_file("/length.html").to_i
115+
assert_equal 0, read_file("length.html").to_i
116116
end
117117
end
118118

@@ -127,16 +127,16 @@ class TestJekyllArchives < Minitest::Test
127127
end
128128

129129
should "generate the enabled archives" do
130-
assert archive_exists? @site, "/tag/test-tag/"
131-
assert archive_exists? @site, "/tag/tagged/"
132-
assert archive_exists? @site, "/tag/new/"
130+
assert archive_exists? @site, "tag/test-tag/index.html"
131+
assert archive_exists? @site, "tag/tagged/index.html"
132+
assert archive_exists? @site, "tag/new/index.html"
133133
end
134134

135135
should "not generate the disabled archives" do
136-
assert !archive_exists?(@site, "/2014/")
137-
assert !archive_exists?(@site, "/2014/08/")
138-
assert !archive_exists?(@site, "/2013/08/16/")
139-
assert !archive_exists?(@site, "/category/plugins/")
136+
assert !archive_exists?(@site, "2014/index.html")
137+
assert !archive_exists?(@site, "2014/08/index.html")
138+
assert !archive_exists?(@site, "2013/08/16/index.html")
139+
assert !archive_exists?(@site, "category/plugins/index.html")
140140
end
141141
end
142142
end

0 commit comments

Comments
 (0)