Skip to content

Commit

Permalink
Merge pull request #536 from fotos/fix_page_dir
Browse files Browse the repository at this point in the history
Added path in url.
  • Loading branch information
parkr committed Mar 10, 2013
2 parents 5dea057 + f796627 commit 725b127
Show file tree
Hide file tree
Showing 4 changed files with 90 additions and 7 deletions.
17 changes: 12 additions & 5 deletions lib/jekyll/page.rb
Original file line number Diff line number Diff line change
Expand Up @@ -56,10 +56,16 @@ def permalink
#
# Returns the template String.
def template
if self.site.permalink_style == :pretty && !index? && html?
"/:basename/"
if self.site.permalink_style == :pretty
if index? && html?
"/:path/"
elsif html?
"/:path/:basename/"
else
"/:path/:basename:output_ext"
end
else
"/:basename:output_ext"
"/:path/:basename:output_ext"
end
end

Expand All @@ -73,6 +79,7 @@ def url
permalink
else
{
"path" => @dir,
"basename" => self.basename,
"output_ext" => self.output_ext,
}.inject(template) { |result, token|
Expand Down Expand Up @@ -116,7 +123,7 @@ def render(layouts, site_payload)
# Returns the Hash representation of this Page.
def to_liquid
self.data.deep_merge({
"url" => File.join(@dir, self.url),
"url" => self.url,
"content" => self.content })
end

Expand All @@ -128,7 +135,7 @@ def to_liquid
def destination(dest)
# The url needs to be unescaped in order to preserve the correct
# filename.
path = File.join(dest, @dir, CGI.unescape(self.url))
path = File.join(dest, CGI.unescape(self.url))
path = File.join(path, "index.html") if self.url =~ /\/$/
path
end
Expand Down
5 changes: 5 additions & 0 deletions test/source/contacts/bar.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
title: Contact Information
---

Contact Information
5 changes: 5 additions & 0 deletions test/source/contacts/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
title: Contact Information
---

Contact Information
70 changes: 68 additions & 2 deletions test/test_page.rb
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
require 'helper'

class TestPage < Test::Unit::TestCase
def setup_page(file)
@page = Page.new(@site, source_dir, '', file)
def setup_page(*args)
dir, file = args
dir, file = ['', dir] if file.nil?
@page = Page.new(@site, source_dir, dir, file)
end

def do_render(page)
Expand All @@ -23,6 +25,18 @@ def do_render(page)
assert_equal "/contacts.html", @page.url
end

context "in a directory hierarchy" do
should "create url based on filename" do
@page = setup_page('/contacts', 'bar.html')
assert_equal "/contacts/bar.html", @page.url
end

should "create index url based on filename" do
@page = setup_page('/contacts', 'index.html')
assert_equal "/contacts/index.html", @page.url
end
end

should "deal properly with extensions" do
@page = setup_page('deal.with.dots.html')
assert_equal ".html", @page.ext
Expand All @@ -47,6 +61,28 @@ def do_render(page)
@page = setup_page('index.html')
assert_equal '/', @page.dir
end

context "in a directory hierarchy" do
should "create url based on filename" do
@page = setup_page('/contacts', 'bar.html')
assert_equal "/contacts/bar/", @page.url
end

should "create index url based on filename" do
@page = setup_page('/contacts', 'index.html')
assert_equal "/contacts/", @page.url
end

should "return dir correctly" do
@page = setup_page('/contacts', 'bar.html')
assert_equal '/contacts/bar/', @page.dir
end

should "return dir correctly for index page" do
@page = setup_page('/contacts', 'index.html')
assert_equal '/contacts/', @page.dir
end
end
end

context "with any other url style" do
Expand Down Expand Up @@ -131,6 +167,36 @@ def do_render(page)
assert File.directory?(dest_dir)
assert File.exists?(File.join(dest_dir, '.htaccess'))
end

context "in a directory hierarchy" do
should "write properly the index" do
page = setup_page('/contacts', 'index.html')
do_render(page)
page.write(dest_dir)

assert File.directory?(dest_dir)
assert File.exists?(File.join(dest_dir, 'contacts', 'index.html'))
end

should "write properly" do
page = setup_page('/contacts', 'bar.html')
do_render(page)
page.write(dest_dir)

assert File.directory?(dest_dir)
assert File.exists?(File.join(dest_dir, 'contacts', 'bar.html'))
end

should "write properly without html extension" do
page = setup_page('/contacts', 'bar.html')
page.site.permalink_style = :pretty
do_render(page)
page.write(dest_dir)

assert File.directory?(dest_dir)
assert File.exists?(File.join(dest_dir, 'contacts', 'bar', 'index.html'))
end
end
end

end
Expand Down

0 comments on commit 725b127

Please sign in to comment.