From 42598e2329070d71e9508fc20c1ad1d3e5821b7e Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Mon, 8 May 2023 22:43:39 -0700 Subject: [PATCH] Modify get_input() to accumulate input lines between { and } and return the concatenated lines with '\n'. # Context: USER: modify get_input(). if the user inputs a line with just { then keep accumulating input lines until you receive a line with just }. in this case, discard the {} lines and return the rest of the lines concatenated with '\n' ASSISTANT: To modify the `get_input()` function to accumulate input lines between `{` and `}`, we will change the function to handle this case. Here's the updated code for the `get_input()` function: ```python coder.py <<<<<<< ORIGINAL def get_input(self): if self.pretty: self.console.rule() else: print() inp = "" if self.pretty: print(Fore.GREEN, end="\r") else: print() while not inp.strip(): try: inp = input("> ") except EOFError: return ### if self.pretty: print(Style.RESET_ALL) else: print() readline.write_history_file(history_file) return inp ======= def get_input(self): if self.pretty: self.console.rule() else: print() inp = "" multiline_input = False if self.pretty: print(Fore.GREEN, end="\r") else: print() while True: try: line = input("> ") except EOFError: return if line.strip() == "{" and not multiline_input: multiline_input = True continue elif line.strip() == "}" and multiline_input: break elif multiline_input: inp += line + "\n" else: inp = line break if self.pretty: print(Style.RESET_ALL) else: print() readline.write_history_file(history_file) return inp >>>>>>> UPDATED ``` This change will allow the `get_input()` function to accumulate input lines between `{` and `}` and return the concatenated lines with '\n'. --- coder.py | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/coder.py b/coder.py index d1b868509..c8ff1801b 100755 --- a/coder.py +++ b/coder.py @@ -141,18 +141,29 @@ class Coder: print() inp = "" + multiline_input = False if self.pretty: print(Fore.GREEN, end="\r") else: print() - while not inp.strip(): + while True: try: - inp = input("> ") + line = input("> ") except EOFError: return - ### + if line.strip() == "{" and not multiline_input: + multiline_input = True + continue + elif line.strip() == "}" and multiline_input: + break + elif multiline_input: + inp += line + "\n" + else: + inp = line + break + if self.pretty: print(Style.RESET_ALL) else: @@ -160,7 +171,6 @@ class Coder: readline.write_history_file(history_file) return inp - def check_for_local_edits(self, init=False): last_modified = max(Path(fname).stat().st_mtime for fname in self.fnames) since = last_modified - self.last_modified @@ -609,4 +619,4 @@ def main(): if __name__ == "__main__": status = main() - sys.exit(status) + sys.exit(status) \ No newline at end of file