]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-18895 fix markdown maximum heading level
authorZipeng WU <zipeng.wu@sonarsource.com>
Fri, 24 Mar 2023 14:58:43 +0000 (15:58 +0100)
committersonartech <sonartech@sonarsource.com>
Mon, 27 Mar 2023 20:03:03 +0000 (20:03 +0000)
sonar-markdown/src/main/java/org/sonar/markdown/HtmlHeadingChannel.java
sonar-markdown/src/test/java/org/sonar/markdown/MarkdownTest.java

index 9e746bf66e6ae0f45be90e48db95a32a9d5b3c5c..8e9a5ea6c9992c7faba1a0d28d0ec4211d452b03 100644 (file)
@@ -58,15 +58,17 @@ public class HtmlHeadingChannel extends RegexChannel<MarkdownOutput> {
   protected void consume(CharSequence token, MarkdownOutput output) {
     int index = 0;
     int headingLevel = 0;
-    while(index < token.length() && Character.isWhitespace(token.charAt(index))) {
-      index ++;
+    while (index < token.length() && Character.isWhitespace(token.charAt(index))) {
+      index++;
     }
-    while(index < token.length() && index <= MAX_HEADING_DEPTH && token.charAt(index) == '=') {
-      index ++;
-      headingLevel ++;
+    while (index < token.length() && token.charAt(index) == '=') {
+      if (index < MAX_HEADING_DEPTH) {
+        headingLevel++;
+      }
+      index++;
     }
-    while(index < token.length() && Character.isWhitespace(token.charAt(index))) {
-      index ++;
+    while (index < token.length() && Character.isWhitespace(token.charAt(index))) {
+      index++;
     }
     CharSequence headingText = token.subSequence(index, token.length());
 
index 705888c838c7d6ee0b7e940d6dab5850e5db8361..1476b589ac4146585d1c4dc96fe81f65ae2e94b8 100644 (file)
@@ -67,8 +67,8 @@ public class MarkdownTest {
 
   @Test
   public void shouldDecorateHeadings() {
-    assertThat(Markdown.convertToHtml("  = Top\r== Sub\r\n=== Sub sub\n ==== \n 1.five"))
-        .isEqualTo("<h1>Top</h1><h2>Sub</h2><h3>Sub sub</h3><h4></h4> 1.five");
+    assertThat(Markdown.convertToHtml("  = Top\r== Sub\r\n=== Sub sub\n ==== \n ===== five\n============ max"))
+        .isEqualTo("<h1>Top</h1><h2>Sub</h2><h3>Sub sub</h3><h4></h4><h5>five</h5><h6>max</h6>");
   }
 
   @Test