From 6249f07e0be6f2a56439d7a7f150559888e42bea Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Christoph=20L=C3=A4ubrich?= <laeubi@laeubi-soft.de>
Date: Sun, 26 Jan 2025 07:14:28 +0100
Subject: [PATCH] Escape special chars in markdown

if the text happens to contain an @ github tries to map it to a
username, and if it contains a # it tries to link it to an existing
issue/pr.

This now escapes these two special chars to prevent accidental
confusion, especially as there are users on github named @deprecated and
@OverRide

(cherry picked from commit c6d7a980cd423bd4a758133a33c599a696a61c97)
---
 .../org/eclipse/tycho/core/MarkdownBuilder.java    | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/tycho-core/src/main/java/org/eclipse/tycho/core/MarkdownBuilder.java b/tycho-core/src/main/java/org/eclipse/tycho/core/MarkdownBuilder.java
index 9391652a7d..5fd3861804 100644
--- a/tycho-core/src/main/java/org/eclipse/tycho/core/MarkdownBuilder.java
+++ b/tycho-core/src/main/java/org/eclipse/tycho/core/MarkdownBuilder.java
@@ -36,15 +36,19 @@ public MarkdownBuilder(Path output) {
     }
 
     public MarkdownBuilder add(String string) {
-        lines.add(string);
+        lines.add(escape(string));
         return this;
     }
 
     public MarkdownBuilder addListItem(String item) {
-        lines.add("- " + item);
+        lines.add("- " + escape(item));
         return this;
     }
 
+    public static String escape(String item) {
+        return item.replace("@", "<span>@</span>").replace("#", "<span>#</span>");
+    }
+
     public void write() throws MojoFailureException {
         if (output == null) {
             return;
@@ -62,17 +66,17 @@ public void newLine() {
     }
 
     public void h1(String string) {
-        lines.add("# " + string);
+        lines.add("# " + escape(string));
         lines.add("");
     }
 
     public void h2(String string) {
-        lines.add("## " + string);
+        lines.add("## " + escape(string));
         lines.add("");
     }
 
     public void h3(String string) {
-        lines.add("### " + string);
+        lines.add("### " + escape(string));
         lines.add("");
     }