468fc26eb0
CodeQL Advanced / Analyze (actions) (push) Has been cancelled
CodeQL Advanced / Analyze (javascript-typescript) (push) Has been cancelled
CodeQL Advanced / Analyze (python) (push) Has been cancelled
Scorecard supply-chain security / Scorecard analysis (push) Has been cancelled
63 lines
1.9 KiB
Python
63 lines
1.9 KiB
Python
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)
|