Merge pull request #1266 from 747/working
A quick fix for finding eponymous parents
This commit is contained in:
commit
ca0573d92a
|
@ -71,3 +71,13 @@ Feature: Step through sitemap as a tree (more)
|
||||||
Then I should see "Child: directory-indexed/sibling2.html"
|
Then I should see "Child: directory-indexed/sibling2.html"
|
||||||
Then I should see "Child: directory-indexed/sub2/index.html"
|
Then I should see "Child: directory-indexed/sub2/index.html"
|
||||||
Then I should see "Sibling: root.html"
|
Then I should see "Sibling: root.html"
|
||||||
|
|
||||||
|
Scenario: Child pages can see their parent and siblings too in named directory
|
||||||
|
Given the Server is running at "more-traversal-app"
|
||||||
|
When I go to "/directory-indexed/sibling"
|
||||||
|
Then I should see "Path: directory-indexed/sibling.html"
|
||||||
|
Then I should see "Parent: directory-indexed.html"
|
||||||
|
Then I should see "Sibling: directory-indexed/fake.html"
|
||||||
|
Then I should see "Sibling: directory-indexed/fake2.html"
|
||||||
|
Then I should see "Sibling: directory-indexed/sibling2.html"
|
||||||
|
Then I should see "Sibling: directory-indexed/sub2/index.html"
|
||||||
|
|
|
@ -71,3 +71,13 @@ Feature: Step through sitemap as a tree
|
||||||
Then I should see "Child: directory-indexed/sibling2.html"
|
Then I should see "Child: directory-indexed/sibling2.html"
|
||||||
Then I should see "Child: directory-indexed/sub2/index.html"
|
Then I should see "Child: directory-indexed/sub2/index.html"
|
||||||
Then I should see "Sibling: root.html"
|
Then I should see "Sibling: root.html"
|
||||||
|
|
||||||
|
Scenario: Child pages can see their parent and siblings too in named directory
|
||||||
|
Given the Server is running at "traversal-app"
|
||||||
|
When I go to "/directory-indexed/sibling.html"
|
||||||
|
Then I should see "Path: directory-indexed/sibling.html"
|
||||||
|
Then I should see "Parent: directory-indexed.html"
|
||||||
|
Then I should see "Sibling: directory-indexed/fake.html"
|
||||||
|
Then I should see "Sibling: directory-indexed/fake2.html"
|
||||||
|
Then I should see "Sibling: directory-indexed/sibling2.html"
|
||||||
|
Then I should see "Sibling: directory-indexed/sub2/index.html"
|
||||||
|
|
|
@ -6,16 +6,23 @@ module Middleman
|
||||||
# @return [Middleman::Sitemap::Resource, nil]
|
# @return [Middleman::Sitemap::Resource, nil]
|
||||||
def parent
|
def parent
|
||||||
parts = path.split('/')
|
parts = path.split('/')
|
||||||
parts.pop if path.include?(app.index_file)
|
tail = parts.pop
|
||||||
|
is_index = (tail == app.index_file)
|
||||||
|
|
||||||
return nil if parts.length < 1
|
return nil if is_index && parts.length < 1
|
||||||
|
|
||||||
parts.pop
|
test_expr = parts.join('\\/')
|
||||||
parts << app.index_file
|
# A makeshift for eponymous reverse-lookup
|
||||||
|
found = store.resources.find { |candidate|
|
||||||
|
candidate.path =~ %r!^#{test_expr}(?:\.[a-zA-Z0-9]+|\/)$!
|
||||||
|
}
|
||||||
|
|
||||||
parent_path = '/' + parts.join('/')
|
if found
|
||||||
|
return found
|
||||||
store.find_resource_by_destination_path(parent_path)
|
else
|
||||||
|
parts.pop if is_index
|
||||||
|
return store.find_resource_by_destination_path("#{parts.join('/')}/#{app.index_file}")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# This resource's child resources
|
# This resource's child resources
|
||||||
|
|
Loading…
Reference in a new issue