From 39bb25d5f6693422a7e7941dfbae1682c32be0d7 Mon Sep 17 00:00:00 2001 From: Patrick Devine Date: Sat, 29 Jul 2023 13:35:23 -0700 Subject: [PATCH] allow multiline text using three double-quotes (#239) --- cmd/cmd.go | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/cmd/cmd.go b/cmd/cmd.go index 06e58009..61658f87 100644 --- a/cmd/cmd.go +++ b/cmd/cmd.go @@ -358,6 +358,9 @@ func generateInteractive(cmd *cobra.Command, model string) error { } defer scanner.Close() + var multiLineBuffer string + var isMultiLine bool + for { line, err := scanner.Readline() switch { @@ -376,6 +379,22 @@ func generateInteractive(cmd *cobra.Command, model string) error { line = strings.TrimSpace(line) switch { + case isMultiLine: + if strings.HasSuffix(line, `"""`) { + isMultiLine = false + multiLineBuffer += strings.TrimSuffix(line, `"""`) + line = multiLineBuffer + multiLineBuffer = "" + scanner.SetPrompt(">>> ") + } else { + multiLineBuffer += line + " " + continue + } + case strings.HasPrefix(line, `"""`): + isMultiLine = true + multiLineBuffer = strings.TrimPrefix(line, `"""`) + " " + scanner.SetPrompt("... ") + continue case strings.HasPrefix(line, "/list"): args := strings.Fields(line) if err := ListHandler(cmd, args[1:]); err != nil {