Skip to content

Commit

Permalink
Prereq string parser functional
Browse files Browse the repository at this point in the history
  • Loading branch information
oshaw committed Apr 6, 2017
1 parent e5d39bf commit 5df23ae
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 19 deletions.
8 changes: 2 additions & 6 deletions server/api-handler.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,7 @@

const assist = require('./assist-scraper.js')
const parser = require('./parse-agreement.js')
const prereq = require('./get-dvc-prereq.js')

const logObject = function (object) {
console.log(JSON.stringify(object, null, 4))
}
const appendPrerequisites = require('./append-prerequisites.js')

module.exports = function (query, callback, error) {
switch (query.endpoint) {
Expand Down Expand Up @@ -60,7 +56,7 @@ module.exports = function (query, callback, error) {
break
}
assist.getAgreement(query.origin, query.destination, query.year, query.major, function (data) {
prereq(parser(data.agreement), function (plan) { callback(plan) })
appendPrerequisites(parser(data.agreement), function (plan) { callback(plan) })
})
break
}
Expand Down
16 changes: 12 additions & 4 deletions server/get-dvc-prereq.js → server/append-prerequisites.js
Original file line number Diff line number Diff line change
@@ -1,18 +1,26 @@
'use strict'

const request = require('./request.js')
const appendPrereqs = function (course, callback) {
const parsePrerequisites = function (string) {
return string.replace(/[Ee]quivalent/g, '')
.replace(/\s((or)|(OR))\s/g, '~')
.replace(/~\s*$/g, ' ')
.replace(/\s+/g, ' ')
.trim()
.split('~')
}
const appendPrerequisites = function (course, callback) {
const url = 'http://www3.dvc.edu/org/info/course-outlines/'
request(url + 'course-outline-results.htm?course=' + course.id.replace(/\s/, '+'), function ($) {
$('a').each(function (i, link) {
if ($(this).text().match(/See details\.\.\./)) {
request(url + $(this).attr('href'), function ($) {
$('font').each(function (j, row) {
if ($(this).text().match(/Prerequisite/)) {
course.prerequisites = $('font')[j + 1].children[0].data
course.prerequisites = parsePrerequisites($('font')[j + 1].children[0].data)
}
if ($(this).text().match(/Recommended/)) {
course.recommended = $('font')[j + 1].children[0].data
course.recommended = parsePrerequisites($('font')[j + 1].children[0].data)
}
if ($(this).text().match(/Notes/)) {
course.notes = $('font')[j + 1].children[0].data
Expand All @@ -36,7 +44,7 @@ const recursiveCourseLoop = function (block, callback) {
} else if (block.course.relation !== undefined) {
recursiveCourseLoop(block.course, callback)
} else if (block.course.articulated === undefined) {
appendPrereqs(block.course, callback)
appendPrerequisites(block.course, callback)
} else callback()
}

Expand Down
10 changes: 3 additions & 7 deletions server/parse-agreement.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,5 @@
'use strict'

// const fs = require('fs')
// let agreement = fs.readFileSync('./server/angeles.txt', 'UTF8')

let logObject = function (object) {
console.log(JSON.stringify(object, null, 4))
}
let isLineOrHeader = function (line) {
line = line.toLowerCase()
let tests = [
Expand Down Expand Up @@ -167,7 +161,9 @@ let parseAmpersand = function (plan) {
let buffer = []
let flush = function () {
if (buffer.length) {
output.parts.push({ course: { raw: buffer } })
(key === 'course')
? output.parts.push({ course: { raw: buffer } })
: output.parts.push({ equals: { raw: buffer } })
buffer = []
}
}
Expand Down
2 changes: 0 additions & 2 deletions server/server.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
'use strict'

const api = require('./api-handler.js')
const parser = require('./parse-agreement.js')
const prereq = require('./get-dvc-prereq.js')

module.exports = function (server, root) {
server.get('/api', function (req, res) {
Expand Down

0 comments on commit 5df23ae

Please sign in to comment.