From 8bd49b5ce61cce3d069c9f2e3aec4bd568b33840 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 28 Oct 2025 15:16:00 +0000 Subject: [PATCH 1/4] Initial plan From 396829d6e91daeab4f03552b01047995f6cdedc3 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 28 Oct 2025 15:22:51 +0000 Subject: [PATCH 2/4] Render Liquid in DescriptionGenerator before Markdown conversion Co-authored-by: dmalan <788678+dmalan@users.noreply.github.com> --- lib/jekyll-theme-cs50.rb | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/lib/jekyll-theme-cs50.rb b/lib/jekyll-theme-cs50.rb index 58611d2..a75ae98 100644 --- a/lib/jekyll-theme-cs50.rb +++ b/lib/jekyll-theme-cs50.rb @@ -104,8 +104,19 @@ module DescriptionGenerator def describe(input, max_length = 160) return "" if input.nil? || input.to_s.strip.empty? + # Render Liquid tags first if $site is defined + markdown = input.to_s + if defined?($site) && $site + begin + markdown = $site.liquid_renderer.file("(cs50-describe)").parse(markdown).render!($site.site_payload, { :registers => { :site => $site } }) + rescue => e + Jekyll.logger.warn "CS50 warning: failed to render Liquid in description: #{e.message}" + markdown = input.to_s + end + end + # Convert Markdown to HTML - html = $site.find_converter_instance(::Jekyll::Converters::Markdown).convert(input.to_s) + html = $site.find_converter_instance(::Jekyll::Converters::Markdown).convert(markdown) # Parse HTML and extract text doc = Nokogiri::HTML5.fragment(html) From 57b93631aa74ee25551a99aba43b51d7b70e8d4d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 28 Oct 2025 15:26:34 +0000 Subject: [PATCH 3/4] Refine code structure in DescriptionGenerator Co-authored-by: dmalan <788678+dmalan@users.noreply.github.com> --- lib/jekyll-theme-cs50.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/jekyll-theme-cs50.rb b/lib/jekyll-theme-cs50.rb index a75ae98..abddcfb 100644 --- a/lib/jekyll-theme-cs50.rb +++ b/lib/jekyll-theme-cs50.rb @@ -104,8 +104,9 @@ module DescriptionGenerator def describe(input, max_length = 160) return "" if input.nil? || input.to_s.strip.empty? - # Render Liquid tags first if $site is defined markdown = input.to_s + + # Render Liquid tags first if $site is defined if defined?($site) && $site begin markdown = $site.liquid_renderer.file("(cs50-describe)").parse(markdown).render!($site.site_payload, { :registers => { :site => $site } }) From 7d00434d3ea2a96400029cea0818c825d6bf8634 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 28 Oct 2025 15:28:02 +0000 Subject: [PATCH 4/4] Remove trailing whitespace Co-authored-by: dmalan <788678+dmalan@users.noreply.github.com> --- lib/jekyll-theme-cs50.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/jekyll-theme-cs50.rb b/lib/jekyll-theme-cs50.rb index abddcfb..c9c1f9d 100644 --- a/lib/jekyll-theme-cs50.rb +++ b/lib/jekyll-theme-cs50.rb @@ -105,7 +105,7 @@ def describe(input, max_length = 160) return "" if input.nil? || input.to_s.strip.empty? markdown = input.to_s - + # Render Liquid tags first if $site is defined if defined?($site) && $site begin