Weekdays and null handling

This commit is contained in:
xigoi 2020-09-04 20:43:05 +02:00
parent 6175a93bd7
commit efbcc70038
2 changed files with 20 additions and 5 deletions

View File

@ -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)

11
bk.nim
View File

@ -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