]> git.armaanb.net Git - lightcards.git/blob - lightcards/lightcards.py
Bump version to 0.4.0
[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 import os
8 from random import shuffle
9 import sys
10
11 from . import parse
12 from .display import Display
13 from .deck import Status
14
15
16 def parse_args():
17     parser = argparse.ArgumentParser(description="Terminal flashcards from Markdown")
18     parser.add_argument("inp",
19                         metavar="input file",
20                         type=str,
21                         nargs=1)
22     parser.add_argument("-f", "--flip",
23                         action='store_true',
24                         help="show second column first")
25     parser.add_argument("-r", "--reverse",
26                         action='store_true',
27                         help="reverse card order")
28     parser.add_argument("-s", "--shuffle",
29                         action='store_true',
30                         help="shuffle card order")
31     parser.add_argument("-v", "--version",
32                         action='version',
33                         version="lightcards 0.4.0")
34     return parser.parse_args()
35
36
37 def show(args, stack, headers):
38     """
39     Manipulate deck according to passed arguments, and send it to the display
40     functions
41     """
42     idx = Status()
43     if args.flip:
44         for x in stack:
45             x[0], x[1] = x[1], x[0]
46         headers[0], headers[1] = headers[1], headers[0]
47     if args.shuffle:
48         shuffle(stack)
49     elif args.reverse:
50         stack.reverse()
51
52     win = Display(stack, headers, idx)
53     wrapper(win.run)
54
55
56 def reparse():
57     args = parse_args()
58     os.system(f"$EDITOR {args.inp[0]}"),
59     return parse.parse_html(parse.md2html(args.inp[0]))
60
61 def get_orig():
62     return((headers2, stack2))
63
64 def main(args=sys.argv):
65     args = parse_args()
66     (headers, stack) = parse.parse_html(parse.md2html(args.inp[0]))
67     global headers2, stack2
68     (headers2, stack2) = (headers, stack)
69     show(args, stack, headers)
70
71
72 if __name__ == "__main__":
73     main()