Author: ssmiweve
Date: 2008-09-18 15:33:39 +0200 (Thu, 18 Sep 2008)
New Revision: 6828

Modified:
   
trunk/generic.sesam/velocity-directives/src/main/java/no/sesat/search/view/velocity/BoldWordDirective.java
Log:
Issue SKER4936:  (BoldWord directive needs improved caps support) 

Modified: 
trunk/generic.sesam/velocity-directives/src/main/java/no/sesat/search/view/velocity/BoldWordDirective.java
===================================================================
--- 
trunk/generic.sesam/velocity-directives/src/main/java/no/sesat/search/view/velocity/BoldWordDirective.java
  2008-09-18 12:34:43 UTC (rev 6827)
+++ 
trunk/generic.sesam/velocity-directives/src/main/java/no/sesat/search/view/velocity/BoldWordDirective.java
  2008-09-18 13:33:39 UTC (rev 6828)
@@ -1,4 +1,4 @@
-/* Copyright (2007) Schibsted Søk AS
+/* Copyright (2007-2008) Schibsted Søk AS
  * This file is part of SESAT.
  *
  *   SESAT is free software: you can redistribute it and/or modify
@@ -20,14 +20,14 @@
 import java.io.Writer;
 import java.util.List;
 import java.util.Arrays;
-import org.apache.commons.lang.StringUtils;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 import org.apache.log4j.Logger;
 import org.apache.velocity.context.InternalContextAdapter;
 import org.apache.velocity.exception.MethodInvocationException;
 import org.apache.velocity.exception.ParseErrorException;
 import org.apache.velocity.exception.ResourceNotFoundException;
 import org.apache.velocity.runtime.directive.Directive;
-import org.apache.velocity.runtime.parser.Token;
 import org.apache.velocity.runtime.parser.node.Node;
 
 /**
@@ -56,23 +56,14 @@
 
     private static final String NAME = "boldWord";
 
-    /**
-     * [EMAIL PROTECTED]
-     */
     public String getName() {
         return NAME;
     }
 
-   /**
-     * [EMAIL PROTECTED]
-     */
     public int getType() {
         return LINE;
     }
 
-   /**
-     * [EMAIL PROTECTED]
-     */
     public boolean render(
                 final InternalContextAdapter context,
                 final Writer writer,
@@ -84,25 +75,24 @@
         if (argCount != 1) {
 
             String text = node.jjtGetChild(0).value(context).toString();
-            String uquery = node.jjtGetChild(1).value(context).toString();
+            final String uquery = 
node.jjtGetChild(1).value(context).toString();
             String query = 
org.apache.commons.lang.StringEscapeUtils.unescapeHtml(uquery);
+
             if(text == null) {
                 writer.write("");
                 return true;
             }
-            query = query.replaceAll("\"", "");
-            query = query.replaceAll("'", "");
-            String replace = "";
-            String replaceUp = "";
-            List list = Arrays.asList(query.split("[\\p{Punct}\\p{Space}]+"));
+            query = query.replaceAll("\"", "").replaceAll("'", "");
 
+            final List list = 
Arrays.asList(query.split("[\\p{Punct}\\p{Space}]+"));
+
             for (int i=0;i<list.size();i++) {
                 if (!list.get(i).toString().toLowerCase().equals("og") && 
!list.get(i).toString().toLowerCase().equals("i")) {
-                    replace = " <b>" + list.get(i) + "</b>";
-                    replaceUp = " <b>" + 
StringUtils.capitalize(list.get(i).toString()) + "</b>";
-                    text = text.replaceAll("(\\s|^)" + list.get(i).toString() 
+ "(?![a-z])", replace);
-                    text = text.replaceAll("(\\s|^)" + 
StringUtils.capitalize(list.get(i).toString()) + "(?![a-z])", replaceUp);
-                    //text = text.replaceAll("(?i)" + list.get(i), rep);
+
+                    final String regexPattern = 
"(\\s|^)("+list.get(i).toString()+")(?![a-z])";
+                    final Pattern p = Pattern.compile(regexPattern, 
Pattern.CASE_INSENSITIVE);
+                    final Matcher m = p.matcher(text);
+                    text = m.replaceAll(" <b>$2</b>");
                 }
             }
             writer.write(text);

_______________________________________________
Kernel-commits mailing list
[email protected]
http://sesat.no/mailman/listinfo/kernel-commits

Reply via email to