diff options
| author | Furkan Sahin <furkan-dev@proton.me> | 2021-04-13 10:02:24 -0500 |
|---|---|---|
| committer | Furkan Sahin <furkan-dev@proton.me> | 2021-04-13 10:02:24 -0500 |
| commit | 569488c24ac0ee5c4cca9adfb0dc3f3aa9e7eca4 (patch) | |
| tree | c4a895432fbf193d5d753c3bb6f22318f45fdd15 /src/features | |
| parent | 67b7f56f9aeaf5d32cc07d0d776d2e4e95dea21c (diff) | |
| parent | e14581fb25febd28b8e55ca8e2b24ebafa3abbc2 (diff) | |
Merge pull request #1 from cobraguy/typescript-migration
Migrate to TypeScript
Diffstat (limited to 'src/features')
| -rw-r--r-- | src/features/parser.ts (renamed from src/features/parser.js) | 49 |
1 files changed, 20 insertions, 29 deletions
diff --git a/src/features/parser.js b/src/features/parser.ts index f91d926..7839564 100644 --- a/src/features/parser.js +++ b/src/features/parser.ts @@ -2,7 +2,7 @@ import Lab from '@/models/Lab'; import PeerTeacher from '@/models/PeerTeacher'; import EventInfo from '../models/EventInfo'; -export function parseLabFile(file) { +export function parseLabFile(file: File): Promise<Lab[]> { const validCourses = [ '110', '111', @@ -16,26 +16,24 @@ export function parseLabFile(file) { '315', ]; - const reader = new FileReader(); - return new Promise((resolve, reject) => { - const result = []; + const result: Lab[] = []; - reader.onload = (event) => { + file.text().then((text) => { let jsonData; try { - jsonData = JSON.parse(event.target.result); + jsonData = JSON.parse(text); } catch (e) { reject(new Error(e)); } const labs = jsonData.data; - labs.forEach((lab) => { + labs.forEach((lab: any) => { if (validCourses.includes(lab.courseNumber)) { const newLab = new Lab(lab.courseNumber, lab.sequenceNumber); if (lab.instructionalMethod !== 'Web Based') { - lab.meetingsFaculty.every((meeting) => { + lab.meetingsFaculty.every((meeting: any) => { const { meetingTime } = meeting; if (meetingTime.meetingType === 'LAB') { @@ -62,21 +60,17 @@ export function parseLabFile(file) { }); resolve(result); - }; - - reader.readAsText(file); + }); }); } -export function parsePtSchedule(file) { - const reader = new FileReader(); - +export function parsePtSchedule(file: File): Promise<PeerTeacher> { return new Promise((resolve) => { - reader.onload = (event) => { + file.text().then((text) => { const peerTeacher = new PeerTeacher(); const namePattern = /^(.*)\s(.*)\s(\d{9})/; const eventPattern = /^(M?T?W?R?F?)\s(\d{1,2}:\d{2})\s?-\s?(\d{1,2}:\d{2})/; - const lines = event.target.result.split('\n').filter((line) => line.trim()); + const lines = text.split('\n').filter((line) => line.trim()); lines.forEach((line) => { const ptName = line.match(namePattern); @@ -95,18 +89,17 @@ export function parsePtSchedule(file) { }); resolve(peerTeacher); - }; - - reader.readAsText(file); + }); }); } -export function parsePtDatabase(file) { - const reader = new FileReader(); - +export function parsePtDatabase(file: File): Promise<{ + labs: Map<string, Lab>, + peerTeachers: Map<number, PeerTeacher> +}> { return new Promise((resolve) => { - reader.onload = (event) => { - const jsonObj = JSON.parse(event.target.result); + file.text().then((text) => { + const jsonObj = JSON.parse(text); const result = { labs: new Map(), peerTeachers: new Map(), @@ -121,18 +114,16 @@ export function parsePtDatabase(file) { Object.keys(jsonObj.peerTeachers).forEach((key) => { const pt = jsonObj.peerTeachers[key]; const ptObj = new PeerTeacher(pt.firstname, pt.lastname, pt.uin); - ptObj.events = pt.events.map((eventObj) => new EventInfo(eventObj.days, + ptObj.events = pt.events.map((eventObj: any) => new EventInfo(eventObj.days, eventObj.start, eventObj.end)); ptObj.assignedLabs = new Set(); - pt.assignedLabs.forEach((labId) => { + pt.assignedLabs.forEach((labId: string) => { ptObj.assignedLabs.add(labId); }); result.peerTeachers.set(key, ptObj); }); resolve(result); - }; - - reader.readAsText(file); + }); }); } |
