def _answer(self): if self.question.multiline: answer = self.answers elif self.answers: answer = self.answers[0] else: answer = '' if answer == 'EOF': return True # quit if answer == '': return kwargs = {} if self._tempdir: kwargs['tempdir'] = self._tempdir answer = self._process_answer(answer=answer) correct,details = self.ui.process_answer( question=self.question, answer=answer, **kwargs) if correct: print(_colorize(self.ui.colors['correct'], 'correct\n')) else: print(_colorize(self.ui.colors['incorrect'], 'incorrect')) if details: print(_colorize( self.ui.colors['incorrect'], '{}\n'.format(details))) else: print('') return self.get_question()
def _set_ps1(self): "Pose a question and prompt" if self.question: lines = [ '', _colorize( self.ui.colors['question'], self.question.format_prompt()), ] lines.extend( _colorize(self.ui.colors['prompt'], line) for line in self._extra_ps1_lines()) lines.append(_colorize(self.ui.colors['prompt'], self._prompt)) self.prompt = '\n'.join(lines) else: self.prompt = _colorize(self.ui.colors['prompt'], self._prompt)
def _color_string(string, color=None): color = { 'magenta': 'fuchsia', 'cyan': 'turquoise', None: 'reset', }.get(color, color) return _colorize(color_key=color, text=string)
def _display_results(self): print(_colorize(self.colors['result'], 'results:')) answers = self.answers.get_answers(user=self.user) for question in self.quiz: if question.id in answers: self._display_result(question=question) print() self._display_totals()
def _display_result(self, question): answers = self.answers.get_answers(user=self.user).get(question.id, []) print('question:') print(' {}'.format( _colorize( self.colors['question'], question.format_prompt(newline='\n ')))) la = len(answers) lc = len([a for a in answers if a['correct']]) if la: print('answers: {}/{} ({:.2f})'.format(lc, la, float(lc)/la)) for answer in answers: if answer['correct']: correct = 'correct' else: correct = 'incorrect' correct = _colorize(self.colors[correct], correct) ans = answer['answer'] if question.multiline: ans = '\n '.join(ans) print(' you answered: {}'.format(ans)) print(' which was: {}'.format(correct))
def _set_ps2(self): "Just prompt (without the question, e.g. for multi-line answers)" self.prompt = _colorize(self.ui.colors['prompt'], self._prompt)