From 0250286553ca93406bfaa976d6aae61e76a9d55f Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Wed, 18 Sep 2013 11:31:00 -0400 Subject: [PATCH] Removed GitWeb-style diff renderer --- src/main/java/com/gitblit/utils/GitBlitDiffFormatter.java | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 51 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/gitblit/utils/GitBlitDiffFormatter.java b/src/main/java/com/gitblit/utils/GitBlitDiffFormatter.java index 2966aa8..a00e107 100644 --- a/src/main/java/com/gitblit/utils/GitBlitDiffFormatter.java +++ b/src/main/java/com/gitblit/utils/GitBlitDiffFormatter.java @@ -16,11 +16,14 @@ package com.gitblit.utils; import static org.eclipse.jgit.lib.Constants.encode; +import static org.eclipse.jgit.lib.Constants.encodeASCII; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.OutputStream; +import java.text.MessageFormat; +import org.eclipse.jgit.diff.DiffFormatter; import org.eclipse.jgit.diff.RawText; import org.eclipse.jgit.util.RawParseUtils; @@ -30,7 +33,7 @@ * @author James Moger * */ -public class GitBlitDiffFormatter extends GitWebDiffFormatter { +public class GitBlitDiffFormatter extends DiffFormatter { private final OutputStream os; @@ -68,6 +71,39 @@ os.write("</td></tr>\n".getBytes()); left = aStartLine + 1; right = bStartLine + 1; + } + + protected void writeRange(final char prefix, final int begin, final int cnt) throws IOException { + os.write(' '); + os.write(prefix); + switch (cnt) { + case 0: + // If the range is empty, its beginning number must + // be the + // line just before the range, or 0 if the range is + // at the + // start of the file stream. Here, begin is always 1 + // based, + // so an empty file would produce "0,0". + // + os.write(encodeASCII(begin - 1)); + os.write(','); + os.write('0'); + break; + + case 1: + // If the range is exactly one line, produce only + // the number. + // + os.write(encodeASCII(begin)); + break; + + default: + os.write(encodeASCII(begin)); + os.write(','); + os.write(encodeASCII(cnt)); + break; + } } @Override @@ -109,7 +145,6 @@ * * @return */ - @Override public String getHtml() { ByteArrayOutputStream bos = (ByteArrayOutputStream) os; String html = RawParseUtils.decode(bos.toByteArray()); @@ -150,12 +185,25 @@ sb.append("</tbody></table></div>\n"); inFile = false; } - sb.append("<div class='header'>").append(line).append("</div>"); + + sb.append(MessageFormat.format("<div class='header'><div class=\"diffHeader\" id=\"{0}\"><i class=\"icon-file\"></i> ", line)).append(line).append("</div></div>"); sb.append("<div class=\"diff\">"); sb.append("<table><tbody>"); inFile = true; } else { + boolean gitLinkDiff = line.length() > 0 && line.substring(1).startsWith("Subproject commit"); + if (gitLinkDiff) { + sb.append("<tr><th></th><th></th>"); + if (line.charAt(0) == '+') { + sb.append("<td><div class=\"diff add2\">"); + } else { + sb.append("<td><div class=\"diff remove2\">"); + } + } sb.append(line); + if (gitLinkDiff) { + sb.append("</div></td></tr>"); + } } } sb.append("</table></div>"); -- Gitblit v1.9.1