From 449afba6c208774c1d41a34671e2b4a69c857431 Mon Sep 17 00:00:00 2001
From: Matthias Andreas Benkard <code@mail.matthias.benkard.de>
Date: Tue, 29 Aug 2023 20:35:51 +0200
Subject: Remove dots after question mark titles.

Fixes: #18
Change-Id: I2915d246e2b614da69c2761864a3e5bd5300db14
---
 src/main/java/eu/mulk/mulkcms2/benki/posts/Post.java | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

(limited to 'src/main/java')

diff --git a/src/main/java/eu/mulk/mulkcms2/benki/posts/Post.java b/src/main/java/eu/mulk/mulkcms2/benki/posts/Post.java
index d522b1a..6264671 100644
--- a/src/main/java/eu/mulk/mulkcms2/benki/posts/Post.java
+++ b/src/main/java/eu/mulk/mulkcms2/benki/posts/Post.java
@@ -45,6 +45,7 @@ import java.util.Map;
 import java.util.Objects;
 import java.util.Set;
 import java.util.TimeZone;
+import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 import javax.annotation.CheckForNull;
 import org.hibernate.annotations.Type;
@@ -55,6 +56,8 @@ import org.hibernate.annotations.Where;
 @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
 public abstract class Post<Text extends PostText<?>> extends PanacheEntityBase {
 
+  private static Pattern sentenceEnderRegex = Pattern.compile("^.*[?.]$");
+
   public enum Scope {
     top_level,
     comment
@@ -141,6 +144,20 @@ public abstract class Post<Text extends PostText<?>> extends PanacheEntityBase {
   @CheckForNull
   public abstract String getUri();
 
+  @CheckForNull
+  public final String titleWithSentenceEnder() {
+    var title = getTitle();
+    if (title == null) {
+      return null;
+    }
+
+    if (sentenceEnderRegex.matcher(title).matches()) {
+      return title;
+    }
+
+    return title + ".";
+  }
+
   public Visibility getVisibility() {
     if (targets.isEmpty()) {
       return Visibility.PRIVATE;
-- 
cgit v1.2.3