MCPcopy
hub / github.com/rgburke/grv / processDiffHeader

Method processDiffHeader

cmd/grv/fancy_diff_view.go:95–205  ·  view source on GitHub ↗
(lines []*diffLineData, diffHeaderIndex int)

Source from the content-addressed store, hash-verified

93}
94
95func (fancyDiffProcessor *fancyDiffProcessor) processDiffHeader(lines []*diffLineData, diffHeaderIndex int) (generatedLines []*diffLineData, currentFile string, err error) {
96 var oldFile, newFile, oldFileMode, newFileMode string
97 var isBinary bool
98 var headerSeen bool
99 status := fileModified
100
101OuterLoop:
102 for lineIndex := diffHeaderIndex; lineIndex < len(lines); lineIndex++ {
103 line := lines[lineIndex]
104
105 switch line.lineType {
106 case dltGitDiffHeaderDiff:
107 if headerSeen {
108 break OuterLoop
109 }
110
111 matches := diffHeaderRegex.FindStringSubmatch(line.line)
112 if len(matches) != 3 {
113 err = fmt.Errorf("line: \"%v\" doesn't have expected diff header format: %v", line.line, matches)
114 return
115 }
116
117 newFile = matches[1]
118 headerSeen = true
119 case dltGitDiffHeaderNewFile:
120 newFile = oldNewFileRegex.ReplaceAllString(line.line, "")
121 case dltGitDiffHeaderOldFile:
122 oldFile = oldNewFileRegex.ReplaceAllString(line.line, "")
123 case dltGitDiffHeaderNewMode:
124 newFileMode = oldNewModeRegex.ReplaceAllString(line.line, "")
125 case dltGitDiffHeaderOldMode:
126 oldFileMode = oldNewModeRegex.ReplaceAllString(line.line, "")
127 case dltGitDiffHeaderNewFileMode:
128 status = fileAdded
129 case dltGitDiffHeaderDeletedFileMode:
130 status = fileDeleted
131 case dltGitDiffHeaderSimilarityIndex:
132 status = fileRenamed
133 case dltGitDiffHeaderRenameFrom:
134 oldFile = renameFromToRegex.ReplaceAllString(line.line, "")
135 case dltGitDiffHeaderRenameTo:
136 newFile = renameFromToRegex.ReplaceAllString(line.line, "")
137 case dltGitDiffHeaderBinaryFile:
138 isBinary = true
139 case dltGitDiffHeaderIndex:
140 default:
141 break OuterLoop
142 }
143 }
144
145 if newFile == "" {
146 err = fmt.Errorf("Unable to determine new file from diff headers")
147 return
148 }
149
150 currentFile = newFile
151 if status == fileDeleted && oldFile != "" {
152 currentFile = oldFile

Callers 1

processDiffMethod · 0.95

Calls 4

determineCommonFixesFunction · 0.85
newDiffLineDataFunction · 0.85
highlightLineFunction · 0.85
newSectionedDiffLineDataFunction · 0.85

Tested by

no test coverage detected