src = 'questions-en.txt'
dst_dir = '../quiz-app/src/assets/translations/en'
import json,os
from copy import deepcopy
from matplotlib.cbook import ls_mapper
def mk_id(s): # convert from 4B/4E to numeric lesson id
lesson_no = int(s[:-1])
return lesson_no + (100 if s[-1]=='B' else 200)
with open('template.json') as f:
doc = json.load(f)
inp = open(src,encoding='utf-8').readlines()
prev_q = None
prev_l = None
prev_l_id = None
lessons = { }
for l in inp:
l = l.strip()
if l=='': continue
if l.startswith('+') or l.startswith('-'): # answer
prev_q['answerOptions'].append({ "answerText" : l[2:], "isCorrect" : l.startswith('+') })
elif l.startswith('*'):
if prev_q:
prev_l['quiz'].append(prev_q)
prev_q = { "questionText" : l[2:], "answerOptions" : [] };
elif l.startswith('Lesson'):
if prev_q:
prev_l['quiz'].append(prev_q)
prev_q = None
if prev_l is not None:
lessons[prev_l_id] = prev_l
prev_l_id = l[7:l.find(' ',7)]
prev_l = { "id" : mk_id(prev_l_id), "title" : l[l.find(' ',7)+1:], "quiz" : [] }
else:
print(f"Error: {l}")
prev_l['quiz'].append(prev_q)
lessons[prev_l_id] = prev_l
lesson_content = {}
for k,v in lessons.items():
no = int(k[:-1])
if no not in lesson_content.keys():
lesson_content[no] = deepcopy(doc)
lesson_content[no][0]['quizzes'].append(v)
with open(os.path.join(dst_dir,'index.js'),'w',encoding='utf-8') as f:
for i,k in enumerate(lesson_content.keys()):
f.write(f'import x{k} from "./lesson-{k}.json";\n')
t = ', '.join([ f"{i} : x{k}[0]" for i,k in enumerate(lesson_content.keys())]);
f.write(f"const quiz = {{ {t} }}; \n");
f.write("export default quiz;")
for k,v in lesson_content.items():
with open(os.path.join(dst_dir,f"lesson-{k}.json"),'w', encoding='utf-8') as f:
json.dump(v,f,indent=2)microsoft/AI-For-Beginners
Publicmirrored fromhttps://github.com/microsoft/AI-For-BeginnersAvailable
etc/quiz-src/qzmkjson.py
62lines · modepreview