diff options
| -rw-r--r-- | js/index.js | 100 |
1 files changed, 78 insertions, 22 deletions
diff --git a/js/index.js b/js/index.js index da350b4..7639cbc 100644 --- a/js/index.js +++ b/js/index.js @@ -339,26 +339,64 @@ function entkuerzeleFach(kuerzel){ // wenn vorhanden, Langform zurückgeben /* konvertiert die extrahierten Strings in ein lesbares Format und filtert nach relevanten Vertretungen */ function parseVertretungen(str, username){ - //Klasse Stunde Entfall Vertreter Fach Raum Art Lehrer Info - var vertretungenRe = /([\wäöü]+)[ ]+(\d(?:[ ]*-[ ]*\d)?)[ ]+(x?)[ ]*([\wäöü]+|---|[+.])[ ]+([\wäöü]+|---|[+.])[ ]+(\d+|---)[ ]+([\wäöü]*|---|[+.])[ ]+([\wäöü]+|\+)()/i; //TODO Info nicht dabei, Probleme mit "Klasse xxx" oder "Jahrgang yy" + /* + * Abstandhalter [ ]* + * + * ([\wäöü]+) + * Klasse + * + * (\d+(?:[ ]*-[ ]*\d+)?) + * (Stunde x bis)? Stunde y + * + * (x?) + * Entfall ja/nein + * + * (?:(?:([\wäöü]+|\+)[ ]*->[ ]*([\wäöü]+|\+))|(?:()([\wäöü]+|\+))) + * Altes Fach -> Neues Fach | Neues Fach + * + * (?:(?:(\d+|---)[ ]*->[ ]*(\d+|---))|(?:()(\d+|---))) + * Alter Raum -> neuer Raum | neuer Raum + * + * ([\wäöü]+|---|[+.]) + * Art-Text + * + * (?:(?:([\wäöü]+|\+)[ ]*->[ ]*([\wäöü]+|\+))|(?:()([\wäöü]+|\+))) + * Alter Lehrer -> Neuer Lehrer | Neuer Lehrer + * + * ([\wäöü]*) + * Info-Text + */ + + var vertretungenRe = /([\wäöü]+)[ ]+(\d+(?:[ ]*-[ ]*\d+)?)[ ]+(x?)[ ]*(?:(?:([\wäöü]+|\+)[ ]*->[ ]*([\wäöü]+|\+))|(?:()([\wäöü]+|\+)))[ ]+(?:(?:(\d+|---)[ ]*->[ ]*(\d+|---))|(?:()(\d+|---)))[ ]+([\wäöü]+|---|[+.])[ ]+(?:(?:([\wäöü]+|\+)[ ]*->[ ]*([\wäöü]+|\+))|(?:()([\wäöü]+|\+)))[ ]*([\wäöü]*)/i; var res; var vertretungen = []; var nutzerklasse = username.match(/(\w+)_.*/)[1].toUpperCase(); str.split('\n').forEach(function(vertretungsstr){ - res = vertretungsstr.match(vertretungenRe); + result = vertretungsstr.match(vertretungenRe); + + if(result !== null){ + // aufräumen + var res = []; + + for(var j = 0; j < result.length; j++){ + if(result[j] != null){ + res.push(result[j]); + } + } - if(res !== null){ - var klasse = res[1].toUpperCase(); - var stunde = res[2].replace(/ /g, ''); + var klasse = res[1].toUpperCase() + var stunde = res[2].trim(); var entfall = res[3].indexOf('x') > -1; - var vertreter = res[4]; + var altFach = res[4]; var fach = res[5]; - var raum = res[6]; - var art = res[7]; - var lehrer = res[8]; - var info = res[9]; + var altRaum = res[6]; + var raum = res[7]; + var art = res[8]; + var lehrer = res[9]; + var vertreter = res[10]; + var info = res[11]; var wichtig = false; @@ -377,41 +415,59 @@ function parseVertretungen(str, username){ /* entkürzeln :) */ lehrer = entkuerzeleLehrer(lehrer); vertreter = entkuerzeleLehrer(vertreter); + altFach = entkuerzeleFach(altFach); fach = entkuerzeleFach(fach); if(wichtig === false){ return; } - if(entfall === true){ + if(entfall === false){ if(info.length <= 1){ info = ""; }else{ info = " Info:" + info; } - vertretungen.push(klasse + " " + stunde + ". Stunde Entfall statt " + lehrer + info); - }else{ if(art.length <= 1){ art = ""; }else{ art = art + " in "; } - if(info.length <= 1){ - info = ""; + var nlehrer; + var nraum; + var nfach; + + if(lehrer != vertreter && lehrer != '' && vertreter != ''){ + nlehrer = "mit " + vertreter + " (statt " + lehrer + ") "; }else{ - info = " Info:" + info; + nlehrer = "mit " + vertreter + " "; } - var nlehrer; + if(raum != altRaum && raum != '' && altRaum != ''){ + nraum = "in Raum " + raum + " (statt " + altRaum + ") "; + }else{ + nraum = "in Raum " + raum + " "; + } - if(lehrer !== vertreter){ - nlehrer = " bei " + vertreter + " (statt " + lehrer + ")"; - vertretungen.push(klasse + " " + stunde + ". Stunde " + art + fach + nlehrer + " in Raum " + raum + info); + if(fach != altFach && fach != '' && altFach != ''){ + nfach = fach + " (statt " + altFach + ") "; }else{ - vertretungen.push(klasse + " " + stunde + ". Stunde " + art + fach + ", Raum " + raum + info); + nfach = fach + " "; } + + vertretungen.push(klasse + " " + stunde + ". Stunde " + art + nfach + nlehrer + nraum + info); + }else{ + var nstr = " (statt " + fach + " mit " + vertreter + ")"; + + if(info.length <= 1){ + info = ""; + }else{ + info = " Info:" + info; + } + + vertretungen.push(klasse + " " + stunde + ". Stunde Entfall" + nstr + info); } }else{ if(vertretungsstr.indexOf('Unterrichtsschluss') > -1){ |
