Encode encodes patch.
(patch Patch)
| 76 | |
| 77 | // Encode encodes patch. |
| 78 | func (e *UnifiedEncoder) Encode(patch Patch) error { |
| 79 | sb := &strings.Builder{} |
| 80 | |
| 81 | if message := patch.Message(); message != "" { |
| 82 | sb.WriteString(message) |
| 83 | if !strings.HasSuffix(message, "\n") { |
| 84 | sb.WriteByte('\n') |
| 85 | } |
| 86 | } |
| 87 | |
| 88 | for _, filePatch := range patch.FilePatches() { |
| 89 | e.writeFilePatchHeader(sb, filePatch) |
| 90 | g := newHunksGenerator(filePatch.Chunks(), e.contextLines) |
| 91 | for _, hunk := range g.Generate() { |
| 92 | hunk.writeTo(sb, e.color) |
| 93 | } |
| 94 | } |
| 95 | |
| 96 | _, err := e.Write([]byte(sb.String())) |
| 97 | return err |
| 98 | } |
| 99 | |
| 100 | func (e *UnifiedEncoder) writeFilePatchHeader(sb *strings.Builder, filePatch FilePatch) { |
| 101 | from, to := filePatch.Files() |