From efbcc700388561f7c706bb88ee5d284b703750ef Mon Sep 17 00:00:00 2001 From: xigoi Date: Fri, 4 Sep 2020 20:43:05 +0200 Subject: [PATCH] Weekdays and null handling --- bakalari.nim | 14 ++++++++++---- bk.nim | 11 ++++++++++- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/bakalari.nim b/bakalari.nim index f1ed59b..b82a01d 100644 --- a/bakalari.nim +++ b/bakalari.nim @@ -46,6 +46,12 @@ type const iso8601 = initTimeFormat("yyyy-MM-dd'T'HH:mm:sszzz") +let + invalidHour = Hour(number: "-", beginTime: "--:--", endTime: "--:--") + invalidRoom = Room(name: "---", abbrev: "---") + invalidSubject = Subject(name: "---", abbrev: "---") + invalidTeacher = Teacher(name: "---", abbrev: "---") + proc newBakalari*(website: Uri, username: string, password: string): Bakalari = new result result.website = website @@ -159,10 +165,10 @@ proc timetable*(bakalari: Bakalari, permanent: bool): Timetable = var day: Day for lessonNode in dayNode{"Atoms"}: var lesson: Lesson - lesson.hour = hours[lessonNode{"HourId"}.getInt] - lesson.subject = subjects[lessonNode{"SubjectId"}.getStr] - lesson.teacher = teachers[lessonNode{"TeacherId"}.getStr] - lesson.room = rooms[lessonNode{"RoomId"}.getStr] + lesson.hour = hours.getOrDefault(lessonNode{"HourId"}.getInt, invalidHour) + lesson.room = rooms.getOrDefault(lessonNode{"RoomId"}.getStr, invalidRoom) + lesson.subject = subjects.getOrDefault(lessonNode{"SubjectId"}.getStr, invalidSubject) + lesson.teacher = teachers.getOrDefault(lessonNode{"TeacherId"}.getStr, invalidTeacher) day.lessons.add lesson day.dayOfWeek = dayNode{"DayOfWeek"}.getInt day.date = dayNode{"Date"}.getStr.parse(iso8601) diff --git a/bk.nim b/bk.nim index d0f9454..2fce453 100644 --- a/bk.nim +++ b/bk.nim @@ -10,6 +10,15 @@ type const defaultConfigFile = getConfigDir() / "bk.json" + dayNames = [ + 1: "Mon", + 2: "Tue", + 3: "Wed", + 4: "Thu", + 5: "Fri", + 6: "Sat", + 7: "Sun", + ] proc loadConfig(configFile = defaultConfigFile): Config = defaultConfigFile.readFile.parseJson.to(Config) @@ -46,7 +55,7 @@ proc timetable( configFile.saveConfig(config) let timetable = baka.timetable(bakalari, permanent) for day in timetable.days: - stdout.writeLine day.date.format("yyyyMMdd") + stdout.writeLine dayNames[day.dayOfWeek] & " " & day.date.format("yyyyMMdd") for lesson in day.lessons: var line = "" line &= lesson.hour.number