summaryrefslogtreecommitdiffstats
path: root/flashcards
blob: 7ba5fa630743df593708326973534d6adca3be9c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#!/usr/bin/python3

import re
import sys
from pathlib import Path
from random import shuffle

'''
class color:
   PURPLE = '\033[95m'
   CYAN = '\033[96m'
   DARKCYAN = '\033[36m'
   BLUE = '\033[94m'
   GREEN = '\033[92m'
   YELLOW = '\033[93m'
   RED = '\033[91m'
   BOLD = '\033[1m'
   UNDERLINE = '\033[4m'
   END = '\033[0m'

print color.BOLD + 'Hello World !' + color.END
'''

cardRegex = "CARD: "
prefixLength = len(cardRegex)

# Returns a list of Path objects, containing the path to each valid file provided
def getFileList():
    fileList = []
    if len(sys.argv) > 1:
        for f in sys.argv[1:]:
            path = Path(f)
            if path.exists() and path.is_file():
                fileList.append(f)
        return fileList
    else:
        print("Missing arguments")
        sys.exit()

# Returns cards in the form [(front, back)]
def createCardList(files):
    cards = []
    for f in files:
        cards = cards + extractCards(f)
    return cards

# Extracts cards from a single file into a list of the form [(front, back)]
def extractCards(f):
    front = ""
    back = ""
    cards = []
    with open(f) as cardFile:
        for l in cardFile:
            match = re.match(cardRegex, l)
            if match:
                if front != "":
                    cards.append([front.strip(), back.strip()])
                    back = ""
                front = match.string[prefixLength:]
            else:
                back += l
    # do the last front-back pair before returning
    cards.append([front.strip(), back.strip()])
    return cards

# Loops serving cards to the user until the program is exited
def serveCards(cards):
    while True:
        for card in cards:
            print("----------------------------------------------------------------------------")
            print(card[0])
            input()
            print(card[1])
            input()

def debugCards(cardList):
    for c in cardList:
        print("Front:", c[0])
        print("Back:", c[1])

def main():
    files = getFileList()
    cards = createCardList(files)
    shuffle(cards)
    serveCards(cards)

if __name__ == "__main__":
    main()