Respect user-defined name attribute in documents (#9167)
Merge pull request 9167
This commit is contained in:
parent
390b1f006b
commit
7206b7f9ef
|
@ -12,7 +12,6 @@ module Jekyll
|
||||||
mutable false
|
mutable false
|
||||||
|
|
||||||
delegate_method_as :relative_path, :path
|
delegate_method_as :relative_path, :path
|
||||||
delegate_method_as :basename, :name
|
|
||||||
private delegate_method_as :data, :fallback_data
|
private delegate_method_as :data, :fallback_data
|
||||||
|
|
||||||
delegate_methods :id, :output, :content, :to_s, :relative_path, :url, :date
|
delegate_methods :id, :output, :content, :to_s, :relative_path, :url, :date
|
||||||
|
@ -26,6 +25,10 @@ module Jekyll
|
||||||
fallback_data["excerpt"].to_s
|
fallback_data["excerpt"].to_s
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def name
|
||||||
|
fallback_data["name"] || @obj.basename
|
||||||
|
end
|
||||||
|
|
||||||
def <=>(other)
|
def <=>(other)
|
||||||
return nil unless other.is_a? DocumentDrop
|
return nil unless other.is_a? DocumentDrop
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ module Jekyll
|
||||||
end
|
end
|
||||||
|
|
||||||
def name
|
def name
|
||||||
@obj.doc.basename
|
@obj.doc.data["name"] || @obj.doc.basename
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
name: launcher
|
||||||
|
---
|
||||||
|
|
||||||
|
`name` defined in front matter.
|
|
@ -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
|
should "output its relative path as path in Liquid" do
|
||||||
assert_equal "_methods/configuration.md", @document.to_liquid["path"]
|
assert_equal "_methods/configuration.md", @document.to_liquid["path"]
|
||||||
end
|
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
|
end
|
||||||
|
|
||||||
context "a document as part of a collection with front matter defaults" do
|
context "a document as part of a collection with front matter defaults" do
|
||||||
|
|
Loading…
Reference in New Issue