James Moger
2015-11-22 ed552ba47c02779c270ffd62841d6d1048dade70
src/main/java/com/gitblit/utils/StringUtils.java
@@ -79,6 +79,19 @@
    * @return plain text escaped for html
    */
   public static String escapeForHtml(String inStr, boolean changeSpace) {
      return escapeForHtml(inStr, changeSpace, 4);
   }
   /**
    * Prepare text for html presentation. Replace sensitive characters with
    * html entities.
    *
    * @param inStr
    * @param changeSpace
    * @param tabLength
    * @return plain text escaped for html
    */
   public static String escapeForHtml(String inStr, boolean changeSpace, int tabLength) {
      StringBuilder retStr = new StringBuilder();
      int i = 0;
      while (i < inStr.length()) {
@@ -93,7 +106,9 @@
         } else if (changeSpace && inStr.charAt(i) == ' ') {
            retStr.append("&nbsp;");
         } else if (changeSpace && inStr.charAt(i) == '\t') {
            retStr.append(" &nbsp; &nbsp;");
            for (int j = 0; j < tabLength; j++) {
               retStr.append("&nbsp;");
            }
         } else {
            retStr.append(inStr.charAt(i));
         }
@@ -127,12 +142,28 @@
            retStr.append("%2F");
         } else if (inStr.charAt(i) == ' ') {
            retStr.append("%20");
         } else if (inStr.charAt(i) == '&') {
            retStr.append("%26");
         } else if (inStr.charAt(i) == '+') {
            retStr.append("%2B");
         } else {
            retStr.append(inStr.charAt(i));
         }
         i++;
      }
      return retStr.toString();
   }
   /**
    * Flatten the list of strings into a single string with the specified
    * separator.
    *
    * @param values
    * @param separator
    * @return flattened list
    */
   public static String flattenStrings(String[]  values, String separator) {
      return flattenStrings(Arrays.asList(values), separator);
   }
   /**
@@ -293,7 +324,7 @@
    * @param bytes
    * @return byte array as hex string
    */
   private static String toHex(byte[] bytes) {
   public static String toHex(byte[] bytes) {
      StringBuilder sb = new StringBuilder(bytes.length * 2);
      for (int i = 0; i < bytes.length; i++) {
         if ((bytes[i] & 0xff) < 0x10) {
@@ -384,7 +415,7 @@
    * @return the first invalid character found or null if string is acceptable
    */
   public static Character findInvalidCharacter(String name) {
      char[] validChars = { '/', '.', '_', '-', '~' };
      char[] validChars = { '/', '.', '_', '-', '~', '+' };
      for (char c : name.toCharArray()) {
         if (!Character.isLetterOrDigit(c)) {
            boolean ok = false;
@@ -628,7 +659,7 @@
            // ignore unsupported charsets
         }
      }
      if (value.startsWith("\uFEFF")) {
      if (value != null && value.startsWith("\uFEFF")) {
         // strip UTF-8 BOM
            return value.substring(1);
        }