From 54fc7100b13a9407da56a59284649bdf76fbadd0 Mon Sep 17 00:00:00 2001
From: Arnaud Levy <contact@arnaudlevy.com>
Date: Mon, 5 Dec 2022 15:15:51 +0100
Subject: [PATCH] wip

---
 app/models/communication/website/permalink.rb      | 10 +++++++++-
 app/models/communication/website/permalink/post.rb | 11 +++++++----
 2 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/app/models/communication/website/permalink.rb b/app/models/communication/website/permalink.rb
index bbf449be5..9cd674123 100644
--- a/app/models/communication/website/permalink.rb
+++ b/app/models/communication/website/permalink.rb
@@ -83,12 +83,20 @@ class Communication::Website::Permalink < ApplicationRecord
     }
   end
 
+  def published_path
+    p = pattern
+    substitutions.each do |key, value|
+      p.gsub! ":#{key}", value
+    end
+    p
+  end
+
   def published?
     # Can be overwritten
     true
   end
 
-  def published_path
+  def substitutions
     raise NotImplementedError
   end
 
diff --git a/app/models/communication/website/permalink/post.rb b/app/models/communication/website/permalink/post.rb
index f7dbdaa96..812cb8439 100644
--- a/app/models/communication/website/permalink/post.rb
+++ b/app/models/communication/website/permalink/post.rb
@@ -19,9 +19,12 @@ class Communication::Website::Permalink::Post < Communication::Website::Permalin
     website.id == about.communication_website_id && about.published && about.published_at
   end
 
-  def published_path
-    pattern
-      .gsub(":year/:month/:day", about.published_at.strftime("%Y/%m/%d"))
-      .gsub(":slug", about.slug)
+  def substitutions
+    {
+      year: about.published_at.year,
+      month: about.published_at.month,
+      day: about.published_at.day,
+      slug: about.slug
+    }
   end
 end
-- 
GitLab