From 62333bf51bff603e2cc1d82ca854d0c6bde328ba Mon Sep 17 00:00:00 2001 From: JD Smith Date: Tue, 16 Jun 2009 11:02:42 -0400 Subject: [PATCH] commit.js: Refactor hunk retrieval. To work with subhunks, allow passing a header line explicitly to search for. --- html/views/commit/commit.js | 41 ++++++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/html/views/commit/commit.js b/html/views/commit/commit.js index a120e04..6f6519b 100644 --- a/html/views/commit/commit.js +++ b/html/views/commit/commit.js @@ -105,38 +105,47 @@ var getNextText = function(element) return next; } -var getHunkText = function(hunk) -{ - hunk = getNextText(hunk); - hunkHeader = hunk.data.split("\n")[0]; - if (m = hunkHeader.match(/@@.*@@/)) - hunkHeader = m; - start = originalDiff.indexOf(hunkHeader); - end = originalDiff.indexOf("\n@@", start + 1); - end2 = originalDiff.indexOf("\ndiff", start + 1); +/* Get the original hunk lines attached to the given hunk header */ +var getLines = function (hunkHeader) +{ + var start = originalDiff.indexOf(hunkHeader); + var end = originalDiff.indexOf("\n@@", start + 1); + var end2 = originalDiff.indexOf("\ndiff", start + 1); if (end2 < end && end2 > 0) end = end2; - if (end == -1) end = originalDiff.length; - - var hunkText = originalDiff.substring(start, end); - hunkText = diffHeader + "\n" + hunkText + "\n"; - + var hunkText = originalDiff.substring(start, end)+'\n'; return hunkText; } -var addHunk = function(hunk, reverse) +/* Get the full hunk test, including diff top header */ +var getFullHunk = function(hunk) { - var hunkText = getHunkText(hunk); + hunk = getNextText(hunk); + var hunkHeader = hunk.data.split("\n")[0]; + var m; + if (m = hunkHeader.match(/@@.*@@/)) + hunkHeader = m; + return diffHeader + "\n" + getLines(hunkHeader); +} +var addHunkText = function(hunkText, reverse) +{ + //window.console.log((reverse?"Removing":"Adding")+" hunk: \n\t"+hunkText); if (Controller.stageHunk_reverse_) Controller.stageHunk_reverse_(hunkText, reverse); else alert(hunkText); } +/* Add the hunk located below the current element */ +var addHunk = function(hunk, reverse) +{ + addHunkText(getFullHunk(hunk),reverse); +} + var discardHunk = function(hunk, event) { var hunkText = getHunkText(hunk);