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

Method ParseGitFileHeader

pkg/gitdiff/file_header.go:63–108  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

61}
62
63func (p *parser) ParseGitFileHeader() (*File, error) {
64 const prefix = "diff --git "
65
66 if !strings.HasPrefix(p.Line(0), prefix) {
67 return nil, nil
68 }
69 header := p.Line(0)[len(prefix):]
70
71 defaultName, err := parseGitHeaderName(header)
72 if err != nil {
73 return nil, p.Errorf(0, "git file header: %v", err)
74 }
75
76 f := &File{}
77 for {
78 end, err := parseGitHeaderData(f, p.Line(1), defaultName)
79 if err != nil {
80 return nil, p.Errorf(1, "git file header: %v", err)
81 }
82
83 if err := p.Next(); err != nil {
84 if err == io.EOF {
85 break
86 }
87 return nil, err
88 }
89
90 if end {
91 break
92 }
93 }
94
95 if f.OldName == "" && f.NewName == "" {
96 if defaultName == "" {
97 return nil, p.Errorf(0, "git file header: missing filename information")
98 }
99 f.OldName = defaultName
100 f.NewName = defaultName
101 }
102
103 if (f.NewName == "" && !f.IsDelete) || (f.OldName == "" && !f.IsNew) {
104 return nil, p.Errorf(0, "git file header: missing filename information")
105 }
106
107 return f, nil
108}
109
110func (p *parser) ParseTraditionalFileHeader() (*File, error) {
111 const shortestValidFragHeader = "@@ -1 +1 @@\n"

Callers 3

ParseNextFileHeaderMethod · 0.95
TestParseGitFileHeaderFunction · 0.80

Calls 5

LineMethod · 0.95
ErrorfMethod · 0.95
NextMethod · 0.95
parseGitHeaderNameFunction · 0.85
parseGitHeaderDataFunction · 0.85

Tested by 2

TestParseGitFileHeaderFunction · 0.64