-
Notifications
You must be signed in to change notification settings - Fork 0
/
create_config.py
128 lines (81 loc) · 3.5 KB
/
create_config.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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
import os
def create_config(working_directory = './'):
make_directory(working_directory + '.vuepress')
template = open_file('templates/config.md')
table_of_contents = create_table_of_contents(working_directory)
template = template.replace('{table_of_contents}', table_of_contents)
with open(working_directory + '.vuepress/config.js', 'w', encoding='utf8') as configjs:
configjs.write(template)
def filter_files_for_vorlesungen_uebungen_zusammenfassungen(working_directory, modul):
vorlesungen = []
uebungen = []
zusammenfassungen = []
for week in get_directories(working_directory + modul):
files = get_files(working_directory + modul + '/' + week)
if 'vorlesung.md' in files:
vorlesungen.append(f'/{modul}/{week}/vorlesung')
if 'übung.md' in files:
uebungen.append(f'/{modul}/{week}/übung')
if 'zusammenfassung.md' in files:
zusammenfassungen.append(f'/{modul}/{week}/zusammenfassung')
return (vorlesungen, uebungen, zusammenfassungen)
def get_modules(path):
return filter(is_not_templates, filter(is_not_vuepress, get_directories(path)))
def has_elements(list):
return len(list) > 0
def create_table_of_contents(working_directory):
tab = ' '
table_of_contents = ''
for modul in get_modules(working_directory):
table_of_contents += f'{tab*3}"/{modul}/": [\n{tab*4}"/", /* semester-readme */\n{tab*4}"", /* modul-readme */\n'
(vorlesungen, uebungen, zusammenfassungen) = filter_files_for_vorlesungen_uebungen_zusammenfassungen(working_directory, modul)
if has_elements(vorlesungen):
table_of_contents += create_module_toc_string(tab, vorlesungen, 'Vorlesungen')
if has_elements(uebungen):
table_of_contents += create_module_toc_string(tab, uebungen, 'Übungen')
if has_elements(zusammenfassungen):
table_of_contents += create_module_toc_string(tab, zusammenfassungen, 'Zusammenfassungen')
table_of_contents += f'{tab*3}],\n'
table_of_contents += f'{tab*3}"/": [\n{tab*4}"",\n'
for modul in get_modules(working_directory):
table_of_contents += f'{tab*4}"{modul}/",\n'
table_of_contents += f'{tab*3}]'
return table_of_contents
def make_directory(path):
if not directoryExists(path):
os.mkdir(path)
def create_module_toc_string(tab, content, title):
toc_string = f'{tab*4}' + '{' + f'\n{tab*5}title: "{title}",\n{tab*5}children: [\n'
for file in content:
toc_string += f'{tab*6}"{file}",\n'
toc_string += f'{tab*5}]\n{tab*4}' + '},\n'
return toc_string
def directoryExists(path):
return os.path.isdir(path)
def open_file(path):
with open(path, 'r', encoding='utf8') as template:
return template.read()
def is_not_vuepress(directory):
return directory != '.vuepress'
def is_not_templates(directory):
return directory != 'templates'
def is_vorlesung_note(file):
return file == 'vorlesung.md'
def is_uebung_note(file):
return file == 'übung.md'
def is_zusammenfassung_note(file):
return file == 'zusammenfassung.md'
def get_directories(path):
directories = []
for file in os.listdir(path):
if os.path.isdir(os.path.join(path, file)):
directories.append(file)
return directories
def get_files(path):
files = []
for file in os.listdir(path):
if os.path.isfile(os.path.join(path, file)):
files.append(file)
return files
if __name__ == "__main__":
create_config()