github.com/fluffynuts/lazygit@v0.8.1/pkg/git/patch_parser.go (about) 1 package git 2 3 import ( 4 "strings" 5 6 "github.com/sirupsen/logrus" 7 ) 8 9 type PatchParser struct { 10 Log *logrus.Entry 11 } 12 13 // NewPatchParser builds a new branch list builder 14 func NewPatchParser(log *logrus.Entry) (*PatchParser, error) { 15 return &PatchParser{ 16 Log: log, 17 }, nil 18 } 19 20 func (p *PatchParser) ParsePatch(patch string) ([]int, []int, error) { 21 lines := strings.Split(patch, "\n") 22 hunkStarts := []int{} 23 stageableLines := []int{} 24 pastHeader := false 25 for index, line := range lines { 26 if strings.HasPrefix(line, "@@") { 27 pastHeader = true 28 hunkStarts = append(hunkStarts, index) 29 } 30 if pastHeader && (strings.HasPrefix(line, "-") || strings.HasPrefix(line, "+")) { 31 stageableLines = append(stageableLines, index) 32 } 33 } 34 p.Log.WithField("staging", "staging").Info(stageableLines) 35 return hunkStarts, stageableLines, nil 36 }