from typing import Tuple from modules.m_active_voice import ActiveVoice from modules.m_htmlrender import HtmlRender from modules.m_datetime import Datetime class Connector: def __init__( self ) -> None: self.date = Datetime() self.avoice = ActiveVoice() self.html = HtmlRender() self.cache_sentence = None self.cache_html_format = None self.cache_str_format = None def view_conversion( self, active_sent: str, passive_sent: str ) -> None: print(f".goat: {self.date.full()} - '{active_sent}' -> '{passive_sent}'") def active2passive( self, sentence: str ) -> Tuple[str,str]: if sentence == self.cache_sentence: return self.cache_html_format, self.cache_str_format try: data = self.avoice.to_passive(sentence) except Exception as e: return self.html.error(str(e)), str(e) subj = self.html.budget(data['subj'], 'subject', 'primary') tobe = self.html.budget(data['tobe'],'to be','warning') participle = self.html.budget(data['participle'],'participle','danger') agent = self.html.budget(data['agent'],'agent','success') compl = self.html.budget(data['compl'],'compl.','dark') self.cache_sentence = sentence self.cache_str_format = f"{data['subj']} {data['tobe']} {data['participle']} {data['agent']} {data['compl']}" self.cache_html_format = self.html.output(f"{subj} {tobe} {participle} {agent} {compl}") self.view_conversion(self.cache_sentence, self.cache_str_format) return self.cache_html_format, self.cache_str_format