-
Notifications
You must be signed in to change notification settings - Fork 0
/
moodleGIFTcleaner.py
73 lines (55 loc) · 2.14 KB
/
moodleGIFTcleaner.py
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
"""
moodleGIFTcleaner.py
Processes all text files in a specified folder to
clean all of the extra gunk Moodle adds to exported
GIFT format exam questions. Needs to be run in the same
folder as the files you want processed.
"""
import os
import re
import time
import argparse
# TODO: add ability to add CL arguments for directory
# TODO: add parsing of individual questions before cleaning
def file_cleaning(dirty_file):
"""Searches through the file using regex to find the gunk"""
opened_file = open(dirty_file, encoding="utf-8")
contents = opened_file.read()
opened_file.close()
category_regex = re.compile(r'\$.*\n')
new_contents = category_regex.sub('', contents)
titles_regex = re.compile(r'\:\:.*\:\:')
#new_contents = titles_regex.sub('::question::\n', new_contents) # add in generic question name for Schoolhouse Test
new_contents = titles_regex.sub('', new_contents) # remove question titles
moodle_info_regex = re.compile(r'\/\/.*\n')
new_contents = moodle_info_regex.sub('', new_contents)
brace_regex = re.compile(r'(.)\{')
new_contents = brace_regex.sub(r'\1\n{', new_contents)
html_regex = re.compile(r'<.*?>')
new_contents = html_regex.sub('', new_contents)
bracket_regex = re.compile(r'\[.*\]')
new_contents = bracket_regex.sub('', new_contents)
opened_file = open(dirty_file.strip(".txt")+"_cleaned.txt", 'w')
opened_file.write(new_contents)
opened_file.close()
open_yes_no = input("Would you like to open this cleaned file? (y/n)")
if open_yes_no == "y":
os.startfile(dirty_file.strip(".txt")+"_cleaned.txt")
FILES = os.listdir(os.getcwd())
for file in FILES:
if not file.endswith('.txt') or 'cleaned' in file:
continue
while True:
yesno = input(
"Is "+file+" a GIFT-formatted text file you would like cleaned? (y/n)")
if yesno == "y":
print(" \nProcessing...\n")
file_cleaning(file)
time.sleep(0.2)
break
elif yesno == "n":
break
else:
print("Please enter either 'y' or 'n'")
time.sleep(0.2)
print("Process Complete.")