From cf21b69a8572010cd6054a96774c1dc0545f8dbf Mon Sep 17 00:00:00 2001 From: Steve Date: Sat, 30 Jul 2022 16:12:04 +0530 Subject: [PATCH] Copy button in the terminal #177 --- dynamic/utility.py | 47 +++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 44 insertions(+), 3 deletions(-) diff --git a/dynamic/utility.py b/dynamic/utility.py index 9faf891..1f31330 100644 --- a/dynamic/utility.py +++ b/dynamic/utility.py @@ -3,6 +3,7 @@ from rich.console import Console from rich.markdown import Markdown import sys as sys +import pyperclip as pc # Required for Questions Panel import os @@ -14,7 +15,7 @@ from error import SearchError from save import SaveSearchResults -from markdown import MarkdownRenderer +# from markdown import MarkdownRenderer from settings import PLAYBOOK_FILE # Required for OAuth @@ -246,6 +247,7 @@ def return_formatted_ans(self, ques_id): ] for convert_from, convert_to in xml_markup_replacement: body_markdown = body_markdown.replace(convert_from, convert_to) + self.dbmd = body_markdown width = os.get_terminal_size().columns console = Console(width=width - 4) markdown = Markdown(body_markdown, hyperlinks=False) @@ -277,16 +279,17 @@ def navigate_questions_panel(self, playbook=False): if playbook: message = "Playbook Questions" instructions = ". Press 'd' to delete from playbook" - keys = ("enter", "d") + keys = ("enter", "d", "c") else: message = "Relevant Questions" instructions = ". Press 'p' to save in playbook" - keys = ("enter", "p") + keys = ("enter", "p", "c") console.rule("[bold blue] {}".format(message), style="bold red") console.print( "[yellow] Use arrow keys to navigate." + "'q' or 'Esc' to quit. 'Enter' to open in a browser" + instructions + +". Press 'c' to Copy Code" ) console.print() options = ["|".join(map(str, question)) for question in self.questions_data] @@ -310,6 +313,44 @@ def navigate_questions_panel(self, playbook=False): self.playbook.add_to_playbook( self, self.questions_data[options_index][1] ) + elif question_menu.chosen_accept_key == "c": + code = "" + i = 0 + flag = False + self.dbmd = "'''" + self.dbmd + "'''" + while i 0) and (counter % 4 == 0): + flag = True + while((self.dbmd[i] != '\n' and self.dbmd[i] != '\r') and i+1 < len(self.dbmd) ): + code += self.dbmd[i] + i += 1 + while(True): + b = self.dbmd[i] + while(self.dbmd[i] == '\n' or self.dbmd[i] == '\r'): + code += self.dbmd[i] + i+=1 + b = self.dbmd[i] + if self.dbmd[i] == " " and self.dbmd[i+1] == " " and self.dbmd[i+2] == " " and self.dbmd[i+3] == " ": + i += 4 + while((self.dbmd[i] != '\n' and self.dbmd[i] != '\r') and i+1 < len(self.dbmd) ): + code += self.dbmd[i] + i += 1 + else: + break + i += 1 + if flag: + break + pc.copy(code) + console.print("\nCopied Sucessfully !!\n") elif question_menu.chosen_accept_key == "d" and playbook: self.playbook.delete_from_playbook( self, self.questions_data[options_index][1]