]> git.armaanb.net Git - lightcards.git/blob - lightcards/lightcards.py
66d123189628ce426ba3e69707a0635cb8941338
[lightcards.git] / lightcards / lightcards.py
1 #!/usr/bin/env python
2 # Markdown flashcard utility
3 # Armaan Bhojwani 2021
4
5 import argparse
6 from curses import wrapper
7 from random import shuffle
8 import sys
9
10 from . import display, parse
11 from .deck import Status
12
13
14 def parse_args():
15     parser = argparse.ArgumentParser(description="Terminal flashcards from Markdown")
16     parser.add_argument("inp",
17                         metavar="input file",
18                         type=str,
19                         nargs=1)
20     parser.add_argument("-f", "--flip",
21                         action='store_true',
22                         help="show second column first")
23     parser.add_argument("-r", "--reverse",
24                         action='store_true',
25                         help="reverse card order")
26     parser.add_argument("-s", "--shuffle",
27                         action='store_true',
28                         help="shuffle card order")
29     parser.add_argument("-v", "--version",
30                         action='version',
31                         version="lightcards 0.3.0")
32     return parser.parse_args()
33
34
35 def show(args, stack, headers):
36     """
37     Manipulate deck according to passed arguments, and send it to the display
38     functions
39     """
40     idx = Status()
41     if args.flip:
42         for x in stack:
43             x[0], x[1] = x[1], x[0]
44         headers[0], headers[1] = headers[1], headers[0]
45     if args.shuffle:
46         shuffle(stack)
47     elif args.reverse:
48         stack.reverse()
49     wrapper(display.init_disp, stack, headers, idx)
50
51
52 def main(args=sys.argv):
53     args = parse_args()
54     (headers, stack) = parse.parse_html(parse.md2html(args.inp[0]))
55     show(args, stack, headers)
56
57
58 if __name__ == "__main__":
59     main()