1
0

fix: Another fucking teacher absence
All checks were successful
Remote Deploy / deploy (push) Successful in 9s

This commit is contained in:
2026-02-11 20:21:27 +01:00
parent bb70b8bc9d
commit af4eb5bb88
2 changed files with 50 additions and 0 deletions

View File

@@ -156,6 +156,29 @@ export default function parseAbsence(input: string, teacherMap: TeacherMap = {})
}
}
// 1b. Teachers with "-exk" followed by spec (e.g. "Ex-exk. 3+")
const teacherExkWithSpecRe = /([A-Za-z]+)-exk(?:\.)?\s*(\d+(?:\+|-\d+|,\d+)?)/gi;
while ((m = teacherExkWithSpecRe.exec(s)) !== null) {
const matchStart = m.index;
const matchEnd = teacherExkWithSpecRe.lastIndex;
if (isConsumed(matchStart)) continue;
const teacherCode = m[1];
const specStr = m[2];
const spec = parseSpec(specStr);
if (spec) {
const { name } = resolveTeacher(teacherCode, teacherMap);
results.push({
teacher: name,
teacherCode: teacherCode.toLowerCase(),
type: "exkurze",
hours: spec.value,
});
markConsumed(matchStart, matchEnd);
}
}
// 2. Teachers with "-exk" suffix
const teacherExkRe = /([A-Za-z]+)-exk/gi;
while ((m = teacherExkRe.exec(s)) !== null) {

View File

@@ -259,6 +259,33 @@ test("Sv-5-exk", [
},
]);
test("Ex-exk. 3+", [
{
teacher: "Ing. Jana Exnerová",
teacherCode: "ex",
type: "exkurze",
hours: { from: 3, to: 10 },
},
]);
test("Ex-exk.3+", [
{
teacher: "Ing. Jana Exnerová",
teacherCode: "ex",
type: "exkurze",
hours: { from: 3, to: 10 },
},
]);
test("Ex-exk. 3", [
{
teacher: "Ing. Jana Exnerová",
teacherCode: "ex",
type: "exkurze",
hours: 3,
},
]);
function test(input: string, expectedOutput: any[]) {
const res = parseAbsence(input, teachermap);