Files
crush/internal/diffdetect/detect.go
Christian RochaandGitHub f7beb12689 feat: generally render output that looks like a diff as a diff (#2607)
For example, the GitHub MCP server can fetch diffs. This makes those
diffs render as such, rather than just showing their raw output.
2026-04-21 14:00:41 +00:00

37 lines
895 B
Go

package diffdetect
import "strings"
// Signal describes which unified-diff markers were found while scanning text.
type Signal struct {
HasHunk bool
HasFileHeader bool
HasGitHeader bool
}
// Inspect scans content for unified-diff markers.
func Inspect(content string) Signal {
var signal Signal
for line := range strings.SplitSeq(content, "\n") {
if strings.HasPrefix(line, "@@") {
signal.HasHunk = true
}
if strings.HasPrefix(line, "--- ") || strings.HasPrefix(line, "+++ ") {
signal.HasFileHeader = true
}
if strings.HasPrefix(line, "diff --git ") {
signal.HasGitHeader = true
}
}
return signal
}
// IsUnifiedDiff reports whether content appears to be a unified diff.
func IsUnifiedDiff(content string) bool {
signal := Inspect(content)
if signal.HasGitHeader && signal.HasFileHeader {
return true
}
return signal.HasHunk && signal.HasFileHeader
}