X-Git-Url: https://git.armaanb.net/?a=blobdiff_plain;f=lightcards%2Flightcards.py;h=2fa42f49e6cc214c92b82d2d1ea8a76fc825acb9;hb=da0b2a5411a041e29a0574d3aeb3f0da311ff5c1;hp=e70ac310d0a4725ffbca7f669b905859ebd7ca2f;hpb=6e8611d7230870ca6ea680bf59e45f8ad3b049ae;p=lightcards.git diff --git a/lightcards/lightcards.py b/lightcards/lightcards.py index e70ac31..2fa42f4 100644 --- a/lightcards/lightcards.py +++ b/lightcards/lightcards.py @@ -7,64 +7,91 @@ import os from random import shuffle import sys -from . import parse +from . import parse, progress from .display import Display from .deck import Status def parse_args(): - parser = argparse.ArgumentParser(description="Terminal flashcards from Markdown") - parser.add_argument("inp", - metavar="input file", - type=str, - nargs=1) - parser.add_argument("-f", "--flip", - action='store_true', - help="show second column first") - parser.add_argument("-r", "--reverse", - action='store_true', - help="reverse card order") - parser.add_argument("-s", "--shuffle", - action='store_true', - help="shuffle card order") - parser.add_argument("-v", "--version", - action='version', - version="lightcards 0.4.0") + parser = argparse.ArgumentParser( + description="Terminal flashcards from Markdown" + ) + parser.add_argument("inp", metavar="input file", type=str, nargs=1) + parser.add_argument( + "-a", + "--alphabetize", + action="store_true", + help="alphabetize card order", + ) + parser.add_argument( + "-f", "--flip", action="store_true", help="show second column first" + ) + parser.add_argument( + "-p", + "--purge", + action="store_true", + help="don't check cached info before starting", + ) + parser.add_argument( + "-r", "--reverse", action="store_true", help="reverse card order" + ) + parser.add_argument( + "-s", "--shuffle", action="store_true", help="shuffle card order" + ) + parser.add_argument( + "-v", "--version", action="version", version="lightcards 0.6.0" + ) return parser.parse_args() def show(args, stack, headers): """ - Manipulate deck according to passed arguments, and send it to the display - functions + Get objects from cache, manipulate deck according to passed arguments, and + send it to the display functions """ + # Purge caches if asked + if args.purge: + progress.purge(stack) + + # Check for caches idx = Status() + cache = progress.dive(get_orig()) + if cache: + (stack) = cache + + # Manipulate deck + if args.shuffle: + shuffle(stack) + if args.alphabetize: + stack.sort() + if args.reverse: + stack.reverse() if args.flip: for x in stack: x[0], x[1] = x[1], x[0] headers[0], headers[1] = headers[1], headers[0] - if args.shuffle: - shuffle(stack) - elif args.reverse: - stack.reverse() + # Send to display win = Display(stack, headers, idx) wrapper(win.run) def reparse(): + """Parse arguments and input file again""" args = parse_args() os.system(f"$EDITOR {args.inp[0]}"), return parse.parse_html(parse.md2html(args.inp[0])) + def get_orig(): - return((headers2, stack2)) + """Return original header and stack""" + return (headers, stack) + def main(args=sys.argv): args = parse_args() + global headers, stack (headers, stack) = parse.parse_html(parse.md2html(args.inp[0])) - global headers2, stack2 - (headers2, stack2) = (headers, stack) show(args, stack, headers)