MCPcopy Create free account
hub / github.com/antonmedv/gitmal / ParseTextFragmentHeader

Method ParseTextFragmentHeader

pkg/gitdiff/text.go:39–75  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

37}
38
39func (p *parser) ParseTextFragmentHeader() (*TextFragment, error) {
40 const (
41 startMark = "@@ -"
42 endMark = " @@"
43 )
44
45 if !strings.HasPrefix(p.Line(0), startMark) {
46 return nil, nil
47 }
48
49 parts := strings.SplitAfterN(p.Line(0), endMark, 2)
50 if len(parts) < 2 {
51 return nil, p.Errorf(0, "invalid fragment header")
52 }
53
54 f := &TextFragment{}
55 f.Comment = strings.TrimSpace(parts[1])
56
57 header := parts[0][len(startMark) : len(parts[0])-len(endMark)]
58 ranges := strings.Split(header, " +")
59 if len(ranges) != 2 {
60 return nil, p.Errorf(0, "invalid fragment header")
61 }
62
63 var err error
64 if f.OldPosition, f.OldLines, err = parseRange(ranges[0]); err != nil {
65 return nil, p.Errorf(0, "invalid fragment header: %v", err)
66 }
67 if f.NewPosition, f.NewLines, err = parseRange(ranges[1]); err != nil {
68 return nil, p.Errorf(0, "invalid fragment header: %v", err)
69 }
70
71 if err := p.Next(); err != nil && err != io.EOF {
72 return nil, err
73 }
74 return f, nil
75}
76
77func (p *parser) ParseTextChunk(frag *TextFragment) error {
78 if p.Line(0) == "" {

Callers 4

ParseTextFragmentsMethod · 0.95
ParseNextFileHeaderMethod · 0.95

Calls 4

LineMethod · 0.95
ErrorfMethod · 0.95
NextMethod · 0.95
parseRangeFunction · 0.85

Tested by 2