X-Git-Url: https://git.armaanb.net/?a=blobdiff_plain;f=lightcards%2Flightcards.py;h=768ac6852a14eb9d18a9c2960125db0ced324b2f;hb=23bedf0b57ac06fbee12af000f42c992d3227dd1;hp=775b13d24afaea722dc63296ef995e366a16c794;hpb=611a8e823ba8a4471d1b0cabb1dcd82506f36551;p=lightcards.git diff --git a/lightcards/lightcards.py b/lightcards/lightcards.py old mode 100755 new mode 100644 index 775b13d..768ac68 --- a/lightcards/lightcards.py +++ b/lightcards/lightcards.py @@ -1,40 +1,96 @@ -#!/usr/bin/env python # Markdown flashcard utility # Armaan Bhojwani 2021 import argparse from curses import wrapper +import os +from random import shuffle +import sys -from . import display, parse +from . import parse, progress +from .display import Display from .deck import Status def parse_args(): - parser = argparse.ArgumentParser(description="Simple terminal flashcards") + parser = argparse.ArgumentParser( + description="Terminal flashcards from Markdown") parser.add_argument("inp", metavar="input file", type=str, - nargs="*") - parser.add_argument("-v", "--version", + nargs=1) + 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") + # TODO: don't require input file when using -P + parser.add_argument("-P", "--purge-all", + action='store_true', + help="don't check cached info before starting") + parser.add_argument("-r", "--reverse", action='store_true', - help="print version") + 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") return parser.parse_args() -def show(stack, headers): - idx = Status() - wrapper(display.get_key, stack, headers, idx) +def show(args, stack, headers): + """ + 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) + if args.purge_all: + progress.purge_all() + + # Check for caches + ida = progress.dive(stack) + if ida: + (idx, stack, headers) = ida + else: + idx = Status() + # Manipulate deck + 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) + if args.reverse: + stack.reverse() -def main(): + # Send to display + win = Display(stack, headers, idx) + wrapper(win.run) + + +def reparse(): + """Parse arguments and input file again""" args = parse_args() - if args.version: - print("0.0.0") - exit(0) + os.system(f"$EDITOR {args.inp[0]}"), + return parse.parse_html(parse.md2html(args.inp[0])) + - headers = parse.parse_html(parse.md2html(args.inp[0]))[0] - stack = parse.parse_html(parse.md2html(args.inp[0]))[1] - show(stack, headers) +def get_orig(): + """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])) + show(args, stack, headers) if __name__ == "__main__":