James Moger
2012-04-24 6e15cb51ddcf24c725633c4ab1ff71959b036eb4
src/com/gitblit/utils/StringUtils.java
@@ -169,16 +169,6 @@
   }
   /**
    * Returns a trimmed shortlog message.
    *
    * @param string
    * @return trimmed shortlog message
    */
   public static String trimShortLog(String string) {
      return trimString(string, 60);
   }
   /**
    * Left pad a string with the specified character, if the string length is
    * less than the specified length.
    * 
@@ -337,20 +327,24 @@
    * @return list of strings
    */
   public static List<String> getStringsFromValue(String value, String separator) {
      List<String> strings = new ArrayList<String>();
      try {
         String[] chunks = value.split(separator);
         for (String chunk : chunks) {
            chunk = chunk.trim();
            if (chunk.length() > 0) {
               strings.add(chunk);
            }
         }
      } catch (PatternSyntaxException e) {
         throw new RuntimeException(e);
      }
      return strings;
   }
        List<String> strings = new ArrayList<String>();
        try {
            String[] chunks = value.split(separator + "(?=([^\"]*\"[^\"]*\")*[^\"]*$)");
            for (String chunk : chunks) {
                chunk = chunk.trim();
                if (chunk.length() > 0) {
                    if (chunk.charAt(0) == '"' && chunk.charAt(chunk.length() - 1) == '"') {
                        // strip double quotes
                        chunk = chunk.substring(1, chunk.length() - 1).trim();
                    }
                    strings.add(chunk);
                }
            }
        } catch (PatternSyntaxException e) {
            throw new RuntimeException(e);
        }
        return strings;
    }
   /**
    * Validates that a name is composed of letters, digits, or limited other
@@ -488,4 +482,72 @@
      String bs = Integer.toHexString((int) (b * 256));
      return "#" + rs + gs + bs;
   }
   /**
    * Strips a trailing ".git" from the value.
    *
    * @param value
    * @return a stripped value or the original value if .git is not found
    */
   public static String stripDotGit(String value) {
      if (value.toLowerCase().endsWith(".git")) {
         return value.substring(0, value.length() - 4);
      }
      return value;
   }
   /**
    * Count the number of lines in a string.
    *
    * @param value
    * @return the line count
    */
   public static int countLines(String value) {
      if (isEmpty(value)) {
         return 0;
      }
      return value.split("\n").length;
   }
   /**
    * Returns the file extension of a path.
    *
    * @param path
    * @return a blank string or a file extension
    */
   public static String getFileExtension(String path) {
      int lastDot = path.lastIndexOf('.');
      if (lastDot > -1) {
         return path.substring(lastDot + 1);
      }
      return "";
   }
   /**
    * Replace all occurences of a substring within a string with
    * another string.
    *
    * From Spring StringUtils.
    *
    * @param inString String to examine
    * @param oldPattern String to replace
    * @param newPattern String to insert
    * @return a String with the replacements
    */
   public static String replace(String inString, String oldPattern, String newPattern) {
      StringBuilder sb = new StringBuilder();
      int pos = 0; // our position in the old string
      int index = inString.indexOf(oldPattern);
      // the index of an occurrence we've found, or -1
      int patLen = oldPattern.length();
      while (index >= 0) {
         sb.append(inString.substring(pos, index));
         sb.append(newPattern);
         pos = index + patLen;
         index = inString.indexOf(oldPattern, pos);
      }
      sb.append(inString.substring(pos));
      // remember to append any characters to the right of a match
      return sb.toString();
   }
}