From e8a02e02db4556eeac44d6d1ff3946c121b40115 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Tue, 13 Feb 2024 22:49:45 -0800 Subject: [PATCH] Add more methods to Jekyll::Page that makes it more like a Document --- lib/jekyll/page.rb | 23 +++++++++++++++++++++++ test/test_excerpt.rb | 21 +++++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/lib/jekyll/page.rb b/lib/jekyll/page.rb index b8b8e4492ff..2b8197935c4 100644 --- a/lib/jekyll/page.rb +++ b/lib/jekyll/page.rb @@ -198,5 +198,28 @@ def excerpt_separator def generate_excerpt? !excerpt_separator.empty? end + + # Determine whether the page is a YAML file. + # + # Returns true if the extname is either .yml or .yaml, false otherwise. + def yaml_file? + %w(.yaml .yml).include?(extname) + end + + def previous_doc + end + + def next_doc + end + + def collection + Struct.new(:label).new("") + end + + def id + @id ||= File.join( + *[@dir, (data["slug"] || File.basename(basename, ".*"))].map(&:to_s).reject(&:empty?) + ) + end end end diff --git a/test/test_excerpt.rb b/test/test_excerpt.rb index 97cc4524549..edde2c17566 100644 --- a/test/test_excerpt.rb +++ b/test/test_excerpt.rb @@ -317,5 +317,26 @@ def do_render(document) should "produce a proper excerpt" do assert_equal @excerpt.content, "I am the excerpt\n\n" end + + should "render" do + assert_equal @excerpt.output, "

I am the excerpt

\n\n" + end + + should "support the drop" do + assert_equal @excerpt.to_liquid.to_h, { + "layout": nil, + "excerpt": nil, + "path": "page_with_excerpt.md/#excerpt", + "previous": nil, + "next": nil, + "output": "

I am the excerpt

\n\n", + "content": "

I am the excerpt

\n\n", + "collection": "", + "id": "/page_with_excerpt#excerpt", + "url": "/page_with_excerpt.html", + "relative_path": "page_with_excerpt.md/#excerpt", + "title": "I am a page with an excerpt" + } + end end end