|
|
|
@ -28,31 +28,34 @@ import (
|
|
|
|
|
"github.com/sergi/go-diff/diffmatchpatch" |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
// Diff line types.
|
|
|
|
|
type DiffLineType uint8 |
|
|
|
|
|
|
|
|
|
const ( |
|
|
|
|
DIFF_LINE_PLAIN = iota + 1 |
|
|
|
|
DIFF_LINE_ADD |
|
|
|
|
DIFF_LINE_DEL |
|
|
|
|
DIFF_LINE_SECTION |
|
|
|
|
DIFF_LINE_PLAIN DiffLineType = iota + 1 |
|
|
|
|
DIFF_LINE_ADD DiffLineType = iota + 1 |
|
|
|
|
DIFF_LINE_DEL DiffLineType = iota + 1 |
|
|
|
|
DIFF_LINE_SECTION DiffLineType = iota + 1 |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
type DiffFileType uint8 |
|
|
|
|
|
|
|
|
|
const ( |
|
|
|
|
DIFF_FILE_ADD = iota + 1 |
|
|
|
|
DIFF_FILE_CHANGE |
|
|
|
|
DIFF_FILE_DEL |
|
|
|
|
DIFF_FILE_RENAME |
|
|
|
|
DIFF_FILE_ADD DiffFileType = iota + 1 |
|
|
|
|
DIFF_FILE_CHANGE DiffFileType = iota + 1 |
|
|
|
|
DIFF_FILE_DEL DiffFileType = iota + 1 |
|
|
|
|
DIFF_FILE_RENAME DiffFileType = iota + 1 |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
type DiffLine struct { |
|
|
|
|
LeftIdx int |
|
|
|
|
RightIdx int |
|
|
|
|
Type int |
|
|
|
|
Type DiffLineType |
|
|
|
|
Content string |
|
|
|
|
ParsedContent template.HTML |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (d DiffLine) GetType() int { |
|
|
|
|
return d.Type |
|
|
|
|
func (d *DiffLine) GetType() int { |
|
|
|
|
return int(d.Type) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
type DiffSection struct { |
|
|
|
@ -60,7 +63,7 @@ type DiffSection struct {
|
|
|
|
|
Lines []*DiffLine |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func diffToHtml(diffRecord []diffmatchpatch.Diff, lineType int) template.HTML { |
|
|
|
|
func diffToHtml(diffRecord []diffmatchpatch.Diff, lineType DiffLineType) template.HTML { |
|
|
|
|
result := "" |
|
|
|
|
for _, s := range diffRecord { |
|
|
|
|
if s.Type == diffmatchpatch.DiffInsert && lineType == DIFF_LINE_ADD { |
|
|
|
@ -146,7 +149,7 @@ type DiffFile struct {
|
|
|
|
|
OldName string |
|
|
|
|
Index int |
|
|
|
|
Addition, Deletion int |
|
|
|
|
Type int |
|
|
|
|
Type DiffFileType |
|
|
|
|
IsCreated bool |
|
|
|
|
IsDeleted bool |
|
|
|
|
IsBin bool |
|
|
|
@ -154,6 +157,10 @@ type DiffFile struct {
|
|
|
|
|
Sections []*DiffSection |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (diffFile *DiffFile) GetType() int { |
|
|
|
|
return int(diffFile.Type) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
type Diff struct { |
|
|
|
|
TotalAddition, TotalDeletion int |
|
|
|
|
Files []*DiffFile |
|
|
|
|