mirror of
https://gitea.com/Sirherobrine23/tea.git
synced 2024-08-21 21:27:23 +00:00
48 lines
915 B
Go
48 lines
915 B
Go
|
package types
|
||
|
|
||
|
type Changeset struct {
|
||
|
FromHash string
|
||
|
ToHash string
|
||
|
Path string
|
||
|
Whitespace string
|
||
|
Diffs []*Diff
|
||
|
}
|
||
|
|
||
|
func (r Changeset) ForEachComment(callback func(*Diff, *Comment, *Comment)) {
|
||
|
for _, diff := range r.Diffs {
|
||
|
stack := make([]*Comment, 0)
|
||
|
parents := make(map[*Comment]*Comment)
|
||
|
stack = append(stack, diff.FileComments...)
|
||
|
stack = append(stack, diff.LineComments...)
|
||
|
pos := 0
|
||
|
|
||
|
for pos < len(stack) {
|
||
|
comment := stack[pos]
|
||
|
|
||
|
if comment.Comments != nil {
|
||
|
stack = append(stack, comment.Comments...)
|
||
|
for _, c := range comment.Comments {
|
||
|
parents[c] = comment
|
||
|
}
|
||
|
}
|
||
|
|
||
|
callback(diff, comment, parents[comment])
|
||
|
|
||
|
pos++
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (r Changeset) ForEachLine(
|
||
|
callback func(*Diff, *Hunk, *Segment, *Line) error,
|
||
|
) error {
|
||
|
for _, diff := range r.Diffs {
|
||
|
err := diff.ForEachLine(callback)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return nil
|
||
|
}
|