Documentation ¶
Overview ¶
Package diff provides a utility to parse unified diff. https://en.wikipedia.org/wiki/Diff_utility#Unified_format
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ( // ErrNoNewFile represents error which there are no expected new file line. ErrNoNewFile = errors.New("no expected new file line") // +++ newfile // ErrNoHunks represents error which there are no expected hunks. ErrNoHunks = errors.New("no expected hunks") // @@ -1,3 +1,4 @@ )
Functions ¶
This section is empty.
Types ¶
type ErrInvalidHunkRange ¶
type ErrInvalidHunkRange struct {
// contains filtered or unexported fields
}
ErrInvalidHunkRange represents invalid line of hunk range. @@ -1,3 +1,4 @@
func (*ErrInvalidHunkRange) Error ¶
func (e *ErrInvalidHunkRange) Error() string
type FileDiff ¶
type FileDiff struct { // the old path of the file PathOld string // the new path of the file PathNew string // the old timestamp (empty if not present) TimeOld string // the new timestamp (empty if not present) TimeNew string Hunks []*Hunk // extended header lines (e.g., git's "new mode <mode>", "rename from <path>", index fb14f33..c19311b 100644, etc.) Extended []string }
FileDiff represents a unified diff for a single file.
Example:
--- oldname 2009-10-11 15:12:20.000000000 -0700 +++ newname 2009-10-11 15:12:30.000000000 -0700
type Hunk ¶
type Hunk struct { // the starting line number of the old file StartLineOld int // the number of lines the change hunk applies to for the old file LineLengthOld int // the starting line number of the new file StartLineNew int // the number of lines the change hunk applies to for the new file LineLengthNew int // optional section heading Section string // the body lines of the hunk Lines []*Line }
Hunk represents change hunks that contain the line differences in the file.
Example:
@@ -1,3 +1,4 @@ optional section heading unchanged, contextual line -deleted line +added line +added line unchanged, contextual line -1 -> the starting line number of the old file 3 -> the number of lines the change hunk applies to for the old file +1 -> the starting line number of the new file 4 -> the number of lines the change hunk applies to for the new file
type Line ¶
type Line struct { // type of this line Type LineType // the line content without a preceded character (' ', '+', '-') Content string // the line in the file to a position in the diff. // the number of lines down from the first "@@" hunk header in the file. // e.g. The line just below the "@@" line is position 1, the next line is // position 2, and so on. The position in the file's diff continues to // increase through lines of whitespace and additional hunks until a new file // is reached. It's equivalent to the `position` field of input for comment // API of GitHub https://developer.github.com/v3/pulls/comments/#input LnumDiff int // the line number of the old file for LineUnchanged and LineDeleted // type. 0 for LineAdded type. LnumOld int // the line number of the new file for LineUnchanged and LineAdded type. // 0 for LineDeleted type. LnumNew int }
Line represents a diff line.
Click to show internal directories.
Click to hide internal directories.