[jboss-cvs] JBossBlog SVN: r200 - in trunk/src: tools/org/jboss/blog/tools and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Feb 7 06:04:37 EST 2008


Author: adamw
Date: 2008-02-07 06:04:36 -0500 (Thu, 07 Feb 2008)
New Revision: 200

Added:
   trunk/src/test/org/jboss/blog/tools/TitleToLinkTest.java
Modified:
   trunk/src/tools/org/jboss/blog/tools/StringTools.java
Log:


Added: trunk/src/test/org/jboss/blog/tools/TitleToLinkTest.java
===================================================================
--- trunk/src/test/org/jboss/blog/tools/TitleToLinkTest.java	                        (rev 0)
+++ trunk/src/test/org/jboss/blog/tools/TitleToLinkTest.java	2008-02-07 11:04:36 UTC (rev 200)
@@ -0,0 +1,33 @@
+package org.jboss.blog.tools;
+
+import org.testng.annotations.Test;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+public class TitleToLinkTest {
+    @Test
+    public void testEmpty() {
+        assert "".equals(StringTools.convertTitleToLink(""));
+    }
+
+    @Test
+    public void testEmpty2() {
+        assert "".equals(StringTools.convertTitleToLink("!@#$%"));
+    }
+
+    @Test
+    public void testNormal() {
+        assert "abd_ef_s_jj".equals(StringTools.convertTitleToLink("*abd**ef***s*jj*"));
+    }
+
+    @Test
+    public void testEnd() {
+        assert "aaa".equals(StringTools.convertTitleToLink("***aaa"));
+    }
+
+    @Test
+    public void testBeginning() {
+        assert "aaa".equals(StringTools.convertTitleToLink("aaa***"));
+    }
+}

Modified: trunk/src/tools/org/jboss/blog/tools/StringTools.java
===================================================================
--- trunk/src/tools/org/jboss/blog/tools/StringTools.java	2008-02-07 10:03:40 UTC (rev 199)
+++ trunk/src/tools/org/jboss/blog/tools/StringTools.java	2008-02-07 11:04:36 UTC (rev 200)
@@ -22,7 +22,39 @@
             return null;
         }
 
-        return title.toLowerCase().replaceAll("[^a-z0-9_]", "_");
+        char[] titleWithUnderscores = title.toLowerCase().replaceAll("[^a-z0-9_]", "_").toCharArray();
+
+        StringBuffer newTitle = new StringBuffer();
+
+        // Removing _ from the beginning.
+        int titleIndex = 0;
+        while ((titleIndex < titleWithUnderscores.length) && (titleWithUnderscores[titleIndex] == '_')) {
+            titleIndex++;
+        }
+
+        // Removing multiple _ in the text.
+        boolean previousLetter = true;
+        while (titleIndex < titleWithUnderscores.length) {
+            if (titleWithUnderscores[titleIndex] == '_') {
+                if (previousLetter) {
+                    newTitle.append(titleWithUnderscores[titleIndex]);
+                }
+
+                previousLetter = false;
+            } else {
+                newTitle.append(titleWithUnderscores[titleIndex]);
+                previousLetter = true;
+            }
+
+            titleIndex++;
+        }
+
+        // Removing _ from the end, if there was one.
+        if ((newTitle.length() > 0) && (newTitle.charAt(newTitle.length()-1) == '_')) {
+            newTitle.deleteCharAt(newTitle.length()-1);
+        }
+
+        return newTitle.toString();
     }
 
     public static String stripHtml(String html) {




More information about the jboss-cvs-commits mailing list