Skip to content

Instantly share code, notes, and snippets.

@yangshun
Created June 30, 2014 04:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yangshun/f8c8f0c92c44ef48bab8 to your computer and use it in GitHub Desktop.
Save yangshun/f8c8f0c92c44ef48bab8 to your computer and use it in GitHub Desktop.
Creating nus_timetable_data.js
var fs = require('fs');
var data = JSON.parse(fs.readFileSync('modules.json'));
var lessonTypes = ['DESIGN LECTURE', 'LABORATORY', 'LECTURE', 'PACKAGED LECTURE',
'PACKAGED TUTORIAL', 'RECITATION', 'SECTIONAL TEACHING',
'SEMINAR-STYLE MODULE CLASS', 'TUTORIAL', 'TUTORIAL TYPE 2',
'TUTORIAL TYPE 3'];
var weeks = ['EVERY WEEK', 'ODD WEEKS', 'EVEN WEEKS'];
var days = ['MONDAY', 'TUESDAY', 'WEDNESDAY', 'THURSDAY', 'FRIDAY', 'SATURDAY'];
var timetableData = {
"correctAsAt": "30 Jun 2014 17:14",
"lectureTypes": [
2,
3,
4,
6,
7
],
"tutorialTypes": [
0,
1,
5,
8,
9,
10
],
"mods": {}
}
for (var i = 0; i < data.length; i++) {
data[i].description = data[i].ModuleDescription;
delete data[i].ModuleDescription;
data[i].title = data[i].ModuleTitle;
delete data[i].ModuleTitle;
data[i].department = data[i].Department;
delete data[i].Department;
data[i].mc = data[i].ModuleCredit;
delete data[i].ModuleCredit;
data[i].workload = data[i].Workload;
delete data[i].Workload;
data[i].preclusion = data[i].Preclusion;
delete data[i].Preclusion;
data[i].prerequisite = data[i].Prerequisite;
delete data[i].Prerequisite;
delete data[i].CorsBiddingStats;
data[i].exams = 'Unknown';
data[i].lessons = [];
if (data[i].Timetable) {
for (var j = 0; j < data[i].Timetable.length; j++) {
var lesson = data[i].Timetable[j];
data[i].lessons.push([
lessonTypes.indexOf(lesson.LessonType),
lesson.ClassNo,
weeks.indexOf(lesson.WeekText),
days.indexOf(lesson.DayText),
lesson.StartTime,
lesson.EndTime,
lesson.Venue,
]);
}
delete data[i].Timetable;
}
var modCode = data[i].ModuleCode;
delete data[i].ModuleCode;
timetableData.mods[modCode] = data[i];
}
fs.writeFileSync('timetable_data.js', JSON.stringify(timetableData, undefined, 2));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment