From cafdb31692aea6a5a8792d99720acdd4746a19fb Mon Sep 17 00:00:00 2001 From: Quentin Date: Mon, 18 Apr 2016 19:31:42 +0200 Subject: [PATCH] Changed tab to space conversion Tabs are not always 4 spaces large. It completes the line to the 4th character. --- src/main/java/com/gitblit/utils/StringUtils.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/gitblit/utils/StringUtils.java b/src/main/java/com/gitblit/utils/StringUtils.java index 442acbbf..7c4eef8b 100644 --- a/src/main/java/com/gitblit/utils/StringUtils.java +++ b/src/main/java/com/gitblit/utils/StringUtils.java @@ -105,6 +105,8 @@ public class StringUtils { public static String escapeForHtml(String inStr, boolean changeSpace, int tabLength) { StringBuilder retStr = new StringBuilder(); int i = 0; + int l = 0; + while (i < inStr.length()) { if (inStr.charAt(i) == '&') { retStr.append("&"); @@ -117,12 +119,17 @@ public class StringUtils { } else if (changeSpace && inStr.charAt(i) == ' ') { retStr.append(" "); } else if (changeSpace && inStr.charAt(i) == '\t') { - for (int j = 0; j < tabLength; j++) { + for (int j = 0; j < tabLength - l; j++) { retStr.append(" "); } + l = -1; } else { retStr.append(inStr.charAt(i)); } + + l = (l + 1) % tabLength; + if (inStr.charAt(i) == '\n') + l = 0; i++; } return retStr.toString(); -- 2.39.5