MCPcopy Create free account
hub / github.com/JanSmrcka/differ / parseDiffLine

Function parseDiffLine

internal/ui/diff.go:64–104  ·  view source on GitHub ↗
(line string, oldNum, newNum *int)

Source from the content-addressed store, hash-verified

62}
63
64func parseDiffLine(line string, oldNum, newNum *int) *DiffLine {
65 switch {
66 case strings.HasPrefix(line, "diff --git"),
67 strings.HasPrefix(line, "index "),
68 strings.HasPrefix(line, "new file"),
69 strings.HasPrefix(line, "deleted file"),
70 strings.HasPrefix(line, "similarity"),
71 strings.HasPrefix(line, "rename"),
72 strings.HasPrefix(line, "old mode"),
73 strings.HasPrefix(line, "new mode"),
74 strings.HasPrefix(line, "--- "),
75 strings.HasPrefix(line, "+++ "):
76 // Skip raw git headers — we show a clean file banner instead
77 return nil
78 case strings.HasPrefix(line, "@@"):
79 parseHunkHeader(line, oldNum, newNum)
80 content := extractHunkContext(line)
81 return &DiffLine{Type: LineHunkHeader, Content: content, OldNum: -1, NewNum: -1}
82 case strings.HasPrefix(line, "+"):
83 dl := &DiffLine{Type: LineAdded, Content: line[1:], OldNum: -1, NewNum: *newNum}
84 *newNum++
85 return dl
86 case strings.HasPrefix(line, "-"):
87 dl := &DiffLine{Type: LineRemoved, Content: line[1:], OldNum: *oldNum, NewNum: -1}
88 *oldNum++
89 return dl
90 case strings.HasPrefix(line, `\`):
91 return nil
92 case line == "":
93 return nil
94 default:
95 content := line
96 if strings.HasPrefix(line, " ") {
97 content = line[1:]
98 }
99 dl := &DiffLine{Type: LineContext, Content: content, OldNum: *oldNum, NewNum: *newNum}
100 *oldNum++
101 *newNum++
102 return dl
103 }
104}
105
106// extractHunkContext pulls the function/context part from a hunk header.
107// "@@ -13,6 +13,7 @@ func main() {" → "func main() {"

Callers 1

ParseDiffFunction · 0.85

Calls 2

parseHunkHeaderFunction · 0.85
extractHunkContextFunction · 0.85

Tested by

no test coverage detected