tests: Add tests and some other changes
All checks were successful
Remote Deploy / deploy (push) Successful in 5s
All checks were successful
Remote Deploy / deploy (push) Successful in 5s
This commit is contained in:
@@ -50,7 +50,7 @@ const makeResult = (teacherCode, spec, teacherMap) => {
|
||||
const { name } = resolveTeacher(teacherCode, teacherMap);
|
||||
const type = spec ? (spec.kind === "range" ? "range" : "single") : "wholeDay";
|
||||
const hours = spec ? spec.value : null;
|
||||
return { teacher: name, teacherCode, type, hours };
|
||||
return { teacher: name, teacherCode: teacherCode.toLowerCase(), type, hours };
|
||||
};
|
||||
|
||||
// -------------------------------
|
||||
@@ -58,18 +58,15 @@ const makeResult = (teacherCode, spec, teacherMap) => {
|
||||
// -------------------------------
|
||||
const processTeacherList = (teacherListStr, spec, teacherMap) => {
|
||||
let results = [];
|
||||
const teachers = teacherListStr.split(/[,;]\s*/).filter(Boolean);
|
||||
|
||||
if (teacherListStr.includes(",")) {
|
||||
const teachers = teacherListStr.split(/\s*,\s*/).filter(Boolean);
|
||||
results = teachers.map((t) => makeResult(t, spec, teacherMap));
|
||||
} else if (teacherListStr.includes(";")) {
|
||||
const teachers = teacherListStr.split(/\s*;\s*/).filter(Boolean);
|
||||
if (teacherListStr.includes(";")) {
|
||||
teachers.forEach((t, i) => {
|
||||
const resSpec = i === teachers.length - 1 ? spec : null;
|
||||
results.push(makeResult(t, resSpec, teacherMap));
|
||||
});
|
||||
} else {
|
||||
results.push(makeResult(teacherListStr, spec, teacherMap));
|
||||
results = teachers.map((t) => makeResult(t, spec, teacherMap));
|
||||
}
|
||||
|
||||
return results;
|
||||
@@ -104,6 +101,23 @@ export default function parseAbsence(input, teacherMap = {}) {
|
||||
markConsumed(matchStart, matchEnd);
|
||||
}
|
||||
|
||||
const teacherExkRe = /([A-Za-z]+)-exk/gi;
|
||||
while ((m = teacherExkRe.exec(s)) !== null) {
|
||||
const matchStart = m.index;
|
||||
const matchEnd = teacherExkRe.lastIndex;
|
||||
if (isConsumed(matchStart)) continue;
|
||||
|
||||
const teacherCode = m[1];
|
||||
const { name } = resolveTeacher(teacherCode, teacherMap);
|
||||
results.push({
|
||||
teacher: name,
|
||||
teacherCode: teacherCode.toLowerCase(),
|
||||
type: "exkurze",
|
||||
hours: null,
|
||||
});
|
||||
markConsumed(matchStart, matchEnd);
|
||||
}
|
||||
|
||||
// Standalone teachers → whole day
|
||||
const teacherOnlyRe = /([A-Za-z]+(?:[,;]\s?[A-Za-z]+)*)/g;
|
||||
while ((m = teacherOnlyRe.exec(s)) !== null) {
|
||||
|
||||
Reference in New Issue
Block a user