]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-2384 Add a new HtmlCodeChannel to transform ''printf()'' into <code>printf...
authorFreddy Mallet <freddy.mallet@gmail.com>
Sat, 23 Apr 2011 13:33:33 +0000 (15:33 +0200)
committerFreddy Mallet <freddy.mallet@gmail.com>
Sat, 23 Apr 2011 13:33:33 +0000 (15:33 +0200)
sonar-markdown/src/main/java/org/sonar/markdown/HtmlCodeChannel.java [new file with mode: 0644]
sonar-markdown/src/main/java/org/sonar/markdown/HtmlEmphasisChannel.java
sonar-markdown/src/main/java/org/sonar/markdown/HtmlUrlChannel.java
sonar-markdown/src/main/java/org/sonar/markdown/IdentifierAndNumberChannel.java
sonar-markdown/src/main/java/org/sonar/markdown/MarkdownEngine.java
sonar-markdown/src/test/java/org/sonar/markdown/MarkdownEngineTest.java

diff --git a/sonar-markdown/src/main/java/org/sonar/markdown/HtmlCodeChannel.java b/sonar-markdown/src/main/java/org/sonar/markdown/HtmlCodeChannel.java
new file mode 100644 (file)
index 0000000..4fd5d3f
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ * Sonar, open source software quality management tool.
+ * Copyright (C) 2008-2011 SonarSource
+ * mailto:contact AT sonarsource DOT com
+ *
+ * Sonar is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * Sonar is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with Sonar; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02
+ */
+package org.sonar.markdown;
+
+import org.sonar.channel.RegexChannel;
+
+class HtmlCodeChannel extends RegexChannel<MarkdownOutput> {
+
+  public HtmlCodeChannel() {
+    super("''.+?''");
+  }
+
+  @Override
+  protected void consume(CharSequence token, MarkdownOutput output) {
+    output.append("<code>");
+    output.append(token.subSequence(2, token.length() - 2));
+    output.append("</code>");
+  }
+}
index 48d42b1114b3be750a1a2641dfde63607a583b03..ffaf0ac60e70231a68e11039bb7115c5cf2c8660 100644 (file)
@@ -24,7 +24,7 @@ import org.sonar.channel.RegexChannel;
 class HtmlEmphasisChannel extends RegexChannel<MarkdownOutput> {
 
   public HtmlEmphasisChannel() {
-    super("\\*\\S[^\n\r\\*\\s]*\\*");
+    super("\\*[^\n\r\\*\\s]++\\*");
   }
 
   @Override
index 6bfa51d850803e89080563e7f324f66377bcdb6b..14933ca029a4b0901e57dd03fa5955d3ae2b8978 100644 (file)
@@ -24,7 +24,7 @@ import org.sonar.channel.RegexChannel;
 class HtmlUrlChannel extends RegexChannel<MarkdownOutput> {
 
   public HtmlUrlChannel() {
-    super("https?://[\\w\\d:#@%/;$()~_?\\+-=\\.&]*");
+    super("https?://[\\w\\d:#@%/;$()~_?\\+-=\\.&]++");
   }
 
   @Override
index cb94f4b205ed32a0c9d72b271112384768ce9e9e..74b8dffb3b3810d7e7676e8b51748308a83f339c 100644 (file)
@@ -24,7 +24,7 @@ import org.sonar.channel.RegexChannel;
 class IdentifierAndNumberChannel extends RegexChannel<MarkdownOutput> {
 
   public IdentifierAndNumberChannel() {
-    super("[\\p{Alpha}\\d]++");
+    super("[\\w\\d]++");
   }
 
   @Override
index fb51e9c4b2f1bb89af406c9df54413ec3419f146..6a7f84dd7d451d904f909ab73ba6781f770271dc 100644 (file)
@@ -37,6 +37,7 @@ public class MarkdownEngine {
     markdownChannels.add(new HtmlUrlChannel());
     markdownChannels.add(new HtmlEndOfLineChannel());
     markdownChannels.add(new HtmlEmphasisChannel());
+    markdownChannels.add(new HtmlCodeChannel());
     markdownChannels.add(new IdentifierAndNumberChannel());
     markdownChannels.add(new BlackholeChannel());
     dispatcher = new ChannelDispatcher<MarkdownOutput>(markdownChannels);
index f3669cd018127d680435cd4d4309ba5b887dbdef..4054e9a97f6ea3bcb323e340b1f96aecc1cb3ebd 100644 (file)
@@ -36,6 +36,12 @@ public class MarkdownEngineTest {
     assertThat(MarkdownEngine.convertToHtml("1\r2\r\n3\n"), is("1<br/>2<br/>3<br/>"));
   }
 
+  @Test
+  public void shouldDecorateCode() {
+    assertThat(MarkdownEngine.convertToHtml("This is a ''line of code''"), is("This is a <code>line of code</code>"));
+    assertThat(MarkdownEngine.convertToHtml("This is not a ''line of code"), is("This is not a ''line of code"));
+  }
+
   @Test
   public void shouldEmphaseText() {
     assertThat(MarkdownEngine.convertToHtml("This is *important*"), is("This is <em>important</em>"));
@@ -47,7 +53,7 @@ public class MarkdownEngineTest {
     assertThat(MarkdownEngine.convertToHtml("emphase*inside*word"), is("emphase<em>inside</em>word"));
 
     // not supported yet
-    //assertThat(MarkdownEngine.convertToHtml("\\*surrounded by literal asterisks\\*"), is("\\*surrounded by literal asterisks\\*"));
+    // assertThat(MarkdownEngine.convertToHtml("\\*surrounded by literal asterisks\\*"), is("\\*surrounded by literal asterisks\\*"));
 
   }