From 523bfcaf7d886f55b17290dd393c6e93569294fc Mon Sep 17 00:00:00 2001 From: Matej Focko Date: Sat, 11 Sep 2021 19:44:30 +0200 Subject: [PATCH] refactor: Split processing of comments Signed-off-by: Matej Focko --- main.go | 102 ++++++++++++++++++++++++++++++++------------------------ 1 file changed, 58 insertions(+), 44 deletions(-) diff --git a/main.go b/main.go index f07b42b..996e27a 100644 --- a/main.go +++ b/main.go @@ -99,52 +99,66 @@ func FormatComment(body string, beenWrapped bool) string { return fmt.Sprintf("%s%s%s", config.Language.Opening, body, config.Language.Closing) } +func WriteCommentsInFile( + wrapper *wrap.Wrapper, + outputFile *os.File, + lineNum uint64, + comments []*gitea.PullReviewComment, + nextComment, commentsLength int, +) int { + for (nextComment < commentsLength) && comments[nextComment].LineNum == lineNum { + body := comments[nextComment].Body + + beenWrapped := len(body)+len(config.Language.Opening)+len(config.Language.Closing) > 100 + if beenWrapped { + body = GetSeparatorForMultiline() + wrapper.Wrap(body, 100) + } else { + body = " " + body + } + + body = strings.Replace(body, "\r", "", -1) + body = strings.Replace( + body, + config.Language.Continuation+"\n", + strings.TrimRightFunc(config.Language.Continuation, unicode.IsSpace)+"\n", + -1, + ) + comment := FormatComment(body, beenWrapped) + + fmt.Fprint(outputFile, comment) + fmt.Printf("L%04d:\n%s\n", comments[nextComment].LineNum, comment) + nextComment++ + } + return nextComment +} + +func ProcessFile(wrapper *wrap.Wrapper, filepath string, comments []*gitea.PullReviewComment) { + fmt.Printf("FILE: %s\n", filepath) + + BackUpSource(filepath) + + inputFile, err := os.Open(filepath + ".bck") + ExitOnError(err) + defer inputFile.Close() + + outputFile, err := os.Create(filepath) + ExitOnError(err) + defer outputFile.Close() + + var i uint64 = 1 + nextComment, commentsLength := 0, len(comments) + + scanner := bufio.NewScanner(inputFile) + for scanner.Scan() { + nextComment = WriteCommentsInFile(wrapper, outputFile, i, comments, nextComment, commentsLength) + fmt.Fprintln(outputFile, scanner.Text()) + i++ + } +} + func PatchFiles(wrapper *wrap.Wrapper, commentsByFile map[string]([]*gitea.PullReviewComment)) { for filepath, comments := range commentsByFile { - fmt.Printf("FILE: %s\n", filepath) - - BackUpSource(filepath) - - inputFile, err := os.Open(filepath + ".bck") - ExitOnError(err) - defer inputFile.Close() - - outputFile, err := os.Create(filepath) - ExitOnError(err) - defer outputFile.Close() - - var i uint64 = 1 - nextComment, commentsLength := 0, len(comments) - - scanner := bufio.NewScanner(inputFile) - for scanner.Scan() { - for (nextComment < commentsLength) && comments[nextComment].LineNum == i { - body := comments[nextComment].Body - - beenWrapped := len(body)+len(config.Language.Opening)+len(config.Language.Closing) > 100 - if beenWrapped { - body = GetSeparatorForMultiline() + wrapper.Wrap(body, 100) - } else { - body = " " + body - } - - body = strings.Replace(body, "\r", "", -1) - body = strings.Replace( - body, - config.Language.Continuation+"\n", - strings.TrimRightFunc(config.Language.Continuation, unicode.IsSpace)+"\n", - -1, - ) - comment := FormatComment(body, beenWrapped) - - fmt.Fprint(outputFile, comment) - fmt.Printf("L%04d:\n%s\n", comments[nextComment].LineNum, comment) - nextComment++ - } - - fmt.Fprintln(outputFile, scanner.Text()) - i++ - } + ProcessFile(wrapper, filepath, comments) } }