add flutter quiz project code
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
const fs = require('fs');
|
||||
const vm = require('vm');
|
||||
|
||||
const html = fs.readFileSync('index.html', 'utf8');
|
||||
const start = html.indexOf('const questions');
|
||||
const arrStart = html.indexOf('[', start);
|
||||
let depth = 0, inStr = false, esc = false, end = -1;
|
||||
for (let i = arrStart; i < html.length; i++) {
|
||||
const c = html[i];
|
||||
if (inStr) {
|
||||
if (esc) { esc = false; continue; }
|
||||
if (c === '\\') { esc = true; continue; }
|
||||
if (c === "'") inStr = false;
|
||||
continue;
|
||||
}
|
||||
if (c === "'") { inStr = true; continue; }
|
||||
if (c === '[') depth++;
|
||||
else if (c === ']') { depth--; if (depth === 0) { end = i; break; } }
|
||||
}
|
||||
let src = html.slice(arrStart, end + 1);
|
||||
src = src.replace(/\/\/\s*=====[^']*?=====\s*/g, ' ');
|
||||
|
||||
const questions = vm.runInNewContext(src);
|
||||
const withIds = questions.map((q, i) => ({ id: i + 1, ...q }));
|
||||
const data = {
|
||||
sets: [{ id: 1, name: 'Dart & Flutter 学习测验', questions: withIds }],
|
||||
nextSetId: 2,
|
||||
nextQId: withIds.length + 1
|
||||
};
|
||||
fs.writeFileSync('questions.json', JSON.stringify(data, null, 2), 'utf8');
|
||||
console.log('已提取', withIds.length, '道题 -> questions.json');
|
||||
Reference in New Issue
Block a user