def main(): arguments = docopt(__doc__, version=__version__) quantity = int(arguments['--quantity']) chain = MarkovChain( min_length=int(arguments['--min']), max_length=int(arguments['--max']), ) words = sort_words(arguments, list(islice(chain.unique_word(), quantity))) if arguments['--json']: output = {'quantity': quantity} output['names'] = words print(json.dumps(output)) else: init(autoreset=True) for i, word in enumerate(words): if i == quantity: break line = '{:>3}. {:<12}'.format(i + 1, word) if arguments['--nocolour']: print(line) else: # alternate row colours colour = Fore.BLUE if i % 2 == 0 else Fore.CYAN print(Style.BRIGHT + colour + line)
def test_reverse_length(self): self.assertEqual( sort_words({ '--length': True, '--reverse': True }, self.words), ['marillion', 'viserys', 'tyrion', 'hodor', 'xaro'], )
def test_reverse_alpha(self): self.assertEqual( sort_words({ '--alphabetical': True, '--reverse': True }, self.words), ['xaro', 'viserys', 'tyrion', 'marillion', 'hodor'], )
def test_length_sorting(self): self.assertEqual( sort_words({'--length': True}, self.words), ['xaro', 'hodor', 'tyrion', 'viserys', 'marillion'], )
def test_alpha_sorting(self): self.assertEqual( sort_words({'--alphabetical': True}, self.words), ['hodor', 'marillion', 'tyrion', 'viserys', 'xaro'], )
def test_no_sorting(self): self.assertEqual(sort_words({}, self.words), self.words)
def test_reverse_length(self): self.assertEqual( sort_words({'--length': True, '--reverse': True}, self.words), ['marillion', 'viserys', 'tyrion', 'hodor', 'xaro'], )
def test_reverse_alpha(self): self.assertEqual( sort_words({'--alphabetical': True, '--reverse': True}, self.words), ['xaro', 'viserys', 'tyrion', 'marillion', 'hodor'], )