update fronttxt for cloze match
Browse files
app.py
CHANGED
|
@@ -111,40 +111,56 @@ def extract_text_from_doc_or_docx(file):
|
|
| 111 |
|
| 112 |
# function that generates a random string
|
| 113 |
def generate_random_string(length=23):
|
| 114 |
-
|
| 115 |
-
|
| 116 |
-
|
|
|
|
| 117 |
|
| 118 |
# function that adds the necessary json fields
|
| 119 |
-
def handle_json_output(json_list
|
| 120 |
n = len(json_list)
|
| 121 |
-
for i in range(n)
|
| 122 |
# not last element
|
| 123 |
random_string1 = generate_random_string()
|
| 124 |
random_string2 = generate_random_string()
|
| 125 |
element = json_list[i]
|
| 126 |
front = element["frontText"]
|
| 127 |
back = element["backText"]
|
| 128 |
-
element["frontHTML"] = (
|
| 129 |
-
|
| 130 |
-
|
| 131 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 132 |
element["termType"] = "basic"
|
| 133 |
-
cloze_matches = re.findall(r
|
| 134 |
# match only the first one, if there is multiple don't do anything
|
| 135 |
-
if (cloze_matches != []) & (len(cloze_matches)<= 2):
|
| 136 |
# It's a cloze type card
|
| 137 |
element["termType"] = "cloze"
|
|
|
|
| 138 |
# inject the back in a span format into the front
|
| 139 |
def replace_cloze(match):
|
| 140 |
return f'</p><p><span class="closure">{back}</span></p><p>'
|
| 141 |
-
|
| 142 |
-
|
| 143 |
-
element["frontHTML"] = (
|
| 144 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 145 |
element["backText"] = ""
|
| 146 |
-
|
| 147 |
-
|
|
|
|
|
|
|
|
|
|
| 148 |
|
| 149 |
return json_list
|
| 150 |
|
|
|
|
| 111 |
|
| 112 |
# function that generates a random string
|
| 113 |
def generate_random_string(length=23):
|
| 114 |
+
characters = string.ascii_letters + string.digits # Includes letters and digits
|
| 115 |
+
random_string = "".join(random.choice(characters) for _ in range(length))
|
| 116 |
+
return random_string
|
| 117 |
+
|
| 118 |
|
| 119 |
# function that adds the necessary json fields
|
| 120 |
+
def handle_json_output(json_list: list):
|
| 121 |
n = len(json_list)
|
| 122 |
+
for i in range(n):
|
| 123 |
# not last element
|
| 124 |
random_string1 = generate_random_string()
|
| 125 |
random_string2 = generate_random_string()
|
| 126 |
element = json_list[i]
|
| 127 |
front = element["frontText"]
|
| 128 |
back = element["backText"]
|
| 129 |
+
element["frontHTML"] = (
|
| 130 |
+
f'<div id="element-richtextarea-{random_string1}" style="position:absolute;left:100px;top:50px;width:800px;height:300px;text-align:center;display:flex;align-items:center;font-size:40px;">'
|
| 131 |
+
f"<p>{front}</p></div>"
|
| 132 |
+
)
|
| 133 |
+
element["backHTML"] = (
|
| 134 |
+
f'<div id="element-richtextarea-{random_string2}" style="position:absolute;left:100px;top:50px;width:800px;height:300px;text-align:center;display:flex;align-items:center;font-size:40px;">'
|
| 135 |
+
f"<p>{back}</p></div>"
|
| 136 |
+
)
|
| 137 |
element["termType"] = "basic"
|
| 138 |
+
cloze_matches = re.findall(r"_{2,}", front)
|
| 139 |
# match only the first one, if there is multiple don't do anything
|
| 140 |
+
if (cloze_matches != []) & (len(cloze_matches) <= 2):
|
| 141 |
# It's a cloze type card
|
| 142 |
element["termType"] = "cloze"
|
| 143 |
+
|
| 144 |
# inject the back in a span format into the front
|
| 145 |
def replace_cloze(match):
|
| 146 |
return f'</p><p><span class="closure">{back}</span></p><p>'
|
| 147 |
+
|
| 148 |
+
front_html = re.sub(r"_{2,}", replace_cloze, front)
|
| 149 |
+
element["frontHTML"] = (
|
| 150 |
+
f'<div id="element-richtextarea-{random_string1}" style="position:absolute;left:100px;top:50px;width:800px;height:300px;text-align:center;display:flex;align-items:center;font-size:40px;">'
|
| 151 |
+
f"<p>{front_html}</p></div>"
|
| 152 |
+
)
|
| 153 |
+
|
| 154 |
+
def replace_underscores(match):
|
| 155 |
+
return f" {back} "
|
| 156 |
+
|
| 157 |
+
element["frontText"] = re.sub(r"_{2,}", replace_underscores, front)
|
| 158 |
element["backText"] = ""
|
| 159 |
+
|
| 160 |
+
element["backHTML"] = (
|
| 161 |
+
f'<div id="element-richtextarea-{random_string2}" style="position:absolute;left:100px;top:50px;width:800px;height:300px;text-align:center;display:flex;align-items:center;font-size:40px;">'
|
| 162 |
+
f"<p><br></p></div>"
|
| 163 |
+
)
|
| 164 |
|
| 165 |
return json_list
|
| 166 |
|