mirror of
https://github.com/jekyll/jekyll.git
synced 2026-01-09 15:08:08 -05:00
Respect user-defined name attribute in documents (#9167)
Merge pull request 9167
This commit is contained in:
@@ -12,7 +12,6 @@ module Jekyll
|
||||
mutable false
|
||||
|
||||
delegate_method_as :relative_path, :path
|
||||
delegate_method_as :basename, :name
|
||||
private delegate_method_as :data, :fallback_data
|
||||
|
||||
delegate_methods :id, :output, :content, :to_s, :relative_path, :url, :date
|
||||
@@ -26,6 +25,10 @@ module Jekyll
|
||||
fallback_data["excerpt"].to_s
|
||||
end
|
||||
|
||||
def name
|
||||
fallback_data["name"] || @obj.basename
|
||||
end
|
||||
|
||||
def <=>(other)
|
||||
return nil unless other.is_a? DocumentDrop
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ module Jekyll
|
||||
end
|
||||
|
||||
def name
|
||||
@obj.doc.basename
|
||||
@obj.doc.data["name"] || @obj.doc.basename
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
5
test/source/_roles/named.md
Normal file
5
test/source/_roles/named.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
name: launcher
|
||||
---
|
||||
|
||||
`name` defined in front matter.
|
||||
4
test/source/_roles/unnamed.md
Normal file
4
test/source/_roles/unnamed.md
Normal file
@@ -0,0 +1,4 @@
|
||||
---
|
||||
---
|
||||
|
||||
No `name` in front matter.
|
||||
@@ -159,6 +159,23 @@ class TestDocument < JekyllUnitTest
|
||||
should "output its relative path as path in Liquid" do
|
||||
assert_equal "_methods/configuration.md", @document.to_liquid["path"]
|
||||
end
|
||||
|
||||
context "when rendered with Liquid" do
|
||||
should "respect the front matter definition" do
|
||||
site = fixture_site("collections" => ["roles"]).tap(&:process)
|
||||
docs = site.collections["roles"].docs
|
||||
|
||||
# Ruby context: doc.basename is aliased as doc.to_liquid["name"] by default.
|
||||
|
||||
document = docs.detect { |d| d.relative_path == "_roles/unnamed.md" }
|
||||
assert_equal "unnamed.md", document.basename
|
||||
assert_equal "unnamed.md", document.to_liquid["name"]
|
||||
|
||||
document = docs.detect { |d| d.relative_path == "_roles/named.md" }
|
||||
assert_equal "named.md", document.basename
|
||||
assert_equal "launcher", document.to_liquid["name"]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context "a document as part of a collection with front matter defaults" do
|
||||
|
||||
Reference in New Issue
Block a user