-
-
Notifications
You must be signed in to change notification settings - Fork 21
/
name-generator.py
134 lines (107 loc) · 3.39 KB
/
name-generator.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
129
130
131
132
133
134
import os
from pathlib import Path
from ypackage.core.markdown import find_first_header_from_file
DESC_DERS = r"""---
description: >-
{} için ders konuları, içeriği veya notları
---
"""
DESC_PROJE = r"""---
description: >-
{} dersindeki proje ödevleri, proje konuları, içeriği veya notları
---
"""
DESC_SINAV = r"""---
description: >-
{} için sınav soruları, çıkmış sorular, çıkmışlar veya önceki senelerde çıkan sorular
---
"""
DESC_OGR = r"""---
description: >-
{} için öğrenci notları, el yazıları, tutulmuş veya alınmış notlar
---
"""
DESC_KARMA = r"""---
description: >-
{} için karışık, düzenlememiş ve eski içerikleri barındıran notlar
---
"""
DESC_GENEL = r"""---
description: >-
{} için genel, düzenlenmemiş, duyuru veya ek ders kaynağı notları
---
"""
DESC_DEFAULT = r"""---
description: >-
{} için {} notları
---
"""
def repeat(func):
for l1 in os.listdir():
if "donem" in l1:
l1 = os.path.join(os.getcwd(), l1)
for l2 in os.listdir(l1):
l2 = os.path.join(l1, l2)
if os.path.isdir(l2):
for l3 in os.listdir(l2):
l3 = os.path.join(l2, l3)
if os.path.isdir(l3):
for l4 in os.listdir(l3):
l4 = os.path.join(l3, l4)
if "README.md" in l4:
func(l4, 4)
elif os.path.isdir(l4):
for l5 in os.listdir(l4):
if "README.md" in l5:
l5 = os.path.join(l4, l5)
func(l5, 5)
def renew(path, lvl):
path = Path(path)
header = find_first_header_from_file(path).name
lesson_path = path
for i in range(2, lvl):
lesson_path = lesson_path.parent
lesson_path = lesson_path / "README.md"
lesson_header = find_first_header_from_file(lesson_path).name
lesson_header = lesson_header[lesson_header.find(
" ") + 1:] # Emojiyi kaldırma
print(repr(header), " - ", repr(lesson_header))
index = None
for regex in [r' \| ', r" | "]:
if regex in header:
index = header.find(regex)
header = header[:index]
pattern = ""
for name in lesson_header.split(" "):
pattern += name[0]
pattern = r" \| " + pattern
header += pattern
filestr = ""
description = ""
if "Öğrenci" in header:
description = DESC_OGR
elif "Ders" in header:
description = DESC_DERS
elif "Sınav" in header:
description = DESC_SINAV
elif "Karma" in header:
description = DESC_KARMA
elif "Genel" in header:
description = DESC_GENEL
elif "Proje" in header:
description = DESC_PROJE
else:
description = DESC_DEFAULT.format("{}", header[2:header.find(r" \|")])
filestr = description.format(lesson_header)
read = False
filestr += "# " + header + "\n"
with open(path, "r+", encoding="utf-8") as file:
for line in file:
if not read and "# " in line:
read = True
continue
if read:
filestr += line
with open(path, "w", encoding="utf-8") as file:
file.write(filestr)
repeat(renew)