diff options
author | JoelHMikael <joel.h.kronqvist@gmail.com> | 2021-12-06 13:55:50 +0200 |
---|---|---|
committer | JoelHMikael <joel.h.kronqvist@gmail.com> | 2021-12-06 13:55:50 +0200 |
commit | f443956978103c1de16717a34f4dca4300a2d4fb (patch) | |
tree | faf584511d1edc0264206001c338462c5bd31bea | |
parent | f76bd0750ee43bdda28f075de2744ed5fe115aba (diff) | |
download | LYLLRuoka-f443956978103c1de16717a34f4dca4300a2d4fb.tar.gz LYLLRuoka-f443956978103c1de16717a34f4dca4300a2d4fb.zip |
Parsing completed
Also some improved server logic
-rw-r--r-- | parse.js | 36 | ||||
-rw-r--r-- | server.js | 37 |
2 files changed, 50 insertions, 23 deletions
@@ -3,7 +3,6 @@ let db = []; // first level array: days - second level array: shifts - third level dict: course/teacher - fourth level array: indexes while (db.length < weekdays.length) { - console.log("\nParsing weekday " + weekdays[db.length] + ";"); i = findExpression(data, weekdays[db.length], i); let end = i; if (db.length === weekdays.length) @@ -16,7 +15,6 @@ do { - console.log("Parsing shift " + (shifts + 1) + ";"); let teachers = []; let courses = []; i = findExpression(data, "RUOKAILUVUORO", i); @@ -30,12 +28,10 @@ nextLineStart = getNextChar(data, i + 1, "\n"); } let parsedLine = data.substring(i, nextLineStart).replaceAll(",", "").replaceAll("ja ", ""); - console.log(parsedLine); let parse_i = 0; let nextSpace = getNextChar(parsedLine, parse_i, " "); while (parse_i !== -1) { - //console.log("Parsing the courses / teachers."); courses.push(parsedLine.substring(parse_i, nextSpace)); parse_i = nextSpace + 1; nextSpace = getNextChar(parsedLine, parse_i, " "); @@ -116,7 +112,7 @@ function parseLine(line, toRemove = " ja KAHDEN TUTKINNON OPINNOT 1., 2. ja 3. V if (line.substring(line.length - toRemove.length, line.length) === toRemove) line = line.substring(0, line.length - toRemove.length); - line = line.replaceAll(",", ""); + line = line.replaceAll(",", "").replaceAll("ja ", ""); const getElement = list => { @@ -182,19 +178,35 @@ function parseShift(data, weekdays = ["MAANANTAISIN", "TIISTAISIN", "KESKIVIIKKO /* * DB structure: - * WEEKDAY - * FOOD SHIFTS - * COURSE INDEXES - * TEACHER INDEXES + * list + * WEEKDAY - list + * FOOD SHIFTS - dict + * COURSE INDEXES - list + * TEACHER INDEXES - list */ -function getShift(day, index, db) +function getShift(day, index, db) // day: int, 1 = monday; index: string of course/teacher; db: parsed shifts { - let shifts = db[day]; + if ((typeof day !== "number") || isNaN(day) || (typeof index !== "string")) + return -1; + + let shifts = db[day - 1]; + + let _endOfIndex = parseInt(index.substring(2, 4)); + let is_teacher = _endOfIndex.toString() !== index.substring(2, 4); + let is_course = !is_teacher; + for (const [key, val] of Object.entries(shifts)) { + let indexes = val[+is_teacher]; + for (let i = 0; i < indexes.length; i++) + { + if (indexes[i] === index) + return key; + } } + return -1; } -exports.shift = parseShift; +exports.build = parseShift; exports.get = getShift; @@ -4,7 +4,7 @@ const url = require("url"); const parse = require("./parse.js"); -function init() +async function init() { const weekdays = [undefined, "MAANANTAI", "TIISTAI", "KESKIVIIKKO", "TORSTAI", "PERJANTAI", undefined]; @@ -23,9 +23,12 @@ function init() }; const errorPath = "./404/index.html"; + let shiftcont = await openFile("./shifts.txt"); + const DB = await parse.build(shiftcont.toString("utf-8")); + async function server(req, res) { - let q = url.parse(req.url, true); //true? + let q = url.parse(req.url, true); let path = "." + q.pathname; if (path == "./") path = "./index.html"; @@ -34,16 +37,15 @@ function init() const args = { "path": path, "query": q.query, - "shifts": shifts + "shifts": shifts, + "db": DB }; - try + if (typeof build[path] === "function") { data = await build[path](args); } - catch (error) + else { - if (!(error instanceof TypeError)) - console.log("ERROR!!! " + error); data = await build404(errorPath, q.pathname); } res.write(data); @@ -70,14 +72,27 @@ function openFile(path) async function buildMain(args) { const path = args["path"]; - const query = args["query"]; + const index = args["query"].index.toUpperCase().replaceAll(".", "").replaceAll(" ", ""); const shifts = args["shifts"]; + const DB = args["db"]; const data = await openFile(path); const data_string = data.toString("utf-8"); - if (query.index === undefined) - return data_string.replace("\\(result\\)", ""); - return data_string.replace("\\(result\\)", shifts[parseshift(query) - 1]); + let res; + + const d = new Date(); + const day = d.getDay(); + + if ((day === 0) || (day === 6)) + res = `Maanantain ruoka: ${parse.get(day, query.index, DB)}`; + if ((index === undefined) || (index === "")) + res = ""; + if (res === undefined) + res = parse.get(day, index, DB); + if (res === -1) + res = "Kyseiselle kurssille/opettajalle ei löydy ruokailua päivältä!"; + + return data_string.replace("\\(result\\)", res); } async function build404(path, attemptpath) |