Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 26 additions & 19 deletions parselearn.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,20 @@ import (
"bufio"
"os"
"strings"
"regexp"
"time"

"github.com/gocarina/gocsv"
)

type Submission struct {
FirstName string `csv:"FirstName"`
LastName string `csv:"LastName"`
Matriculation string `csv:"Matriculation"`
StudentName string `csv:"StudentName"`
UUN string `csv:"UUN"`
Assignment string `csv:"Assignment"`
DateSubmittedRaw string `csv:"DateSubmittedRaw"`
DateSubmitted string `csv:"DateSubmitted"`
LateSubmission string `csv:"LateSubmission"`
ExtraTime int `csv:"ExtraTime"`
SubmissionField string `csv:"SubmissionField"`
Comments string `csv:"Comments"`
OriginalFilename string `csv:"OriginalFilename"`
Expand All @@ -26,6 +30,11 @@ type Submission struct {
NumberOfPages string `csv:"NumberOfPages"`
FilesizeMB float64 `csv:"FilesizeMB"`
NumberOfFiles int `csv:"NumberOfFiles"`
OutputFile string `csv:"OutputFile"`
}

func BlankSubmission() (Submission) {
return Submission{}
}

func ParseLearnReceipt(inputPath string) (Submission, error) {
Expand Down Expand Up @@ -71,25 +80,17 @@ SCAN:

sub.NumberOfFiles = 0

// we will take the first file as the one we expect to see renamed
gotOriginal := false
gotNew := false

for scanner.Scan() {
line := strings.TrimSpace(scanner.Text())

switch {
case strings.HasPrefix(line, "Original filename:"):
if !gotOriginal {
processOriginalFilename(line, &sub)
gotOriginal = true
}

processOriginalFilename(line, &sub)
sub.NumberOfFiles++
case strings.HasPrefix(line, "Filename:"):
if !gotNew {
processFilename(line, &sub)
gotNew = true
}

processFilename(line, &sub)
default:
continue
}
Expand All @@ -109,9 +110,8 @@ func processName(line string, sub *Submission) {
name := strings.TrimSpace(line[m+1 : n])
matric := strings.TrimSpace(line[n+1 : p])

sub.FirstName = "-"
sub.LastName = name
sub.Matriculation = matric
sub.StudentName = name
sub.UUN = strings.ToUpper(matric)
}

//Assignment: Practice Exam Drop Box
Expand All @@ -125,7 +125,9 @@ func processAssignment(line string, sub *Submission) {
func processDateSubmitted(line string, sub *Submission) {
line = strings.TrimSpace(line)
line = strings.TrimPrefix(line, "Date Submitted:")
sub.DateSubmitted = strings.TrimSpace(line)
sub.DateSubmittedRaw = strings.TrimSpace(line)
sub_time, _ := time.Parse("Monday, _2 January 2006 15:04:05 o'clock MST", sub.DateSubmittedRaw)
sub.DateSubmitted = sub_time.Format("2006-01-02-15-04-05")
}

//Submission Field:
Expand Down Expand Up @@ -153,6 +155,11 @@ func processFilename(line string, sub *Submission) {
line = strings.TrimSpace(line)
line = strings.TrimPrefix(line, "Filename:")
sub.Filename = strings.TrimSpace(line)
// check if the submitted file has .pdf (or .PDF) extension
matched, _ := regexp.MatchString(`(?i)\.pdf$`, sub.Filename)
if(!matched) {
sub.FiletypeError = "Not PDF"
}
}

func WriteSubmissionsToCSV(subs []Submission, outputPath string) error {
Expand Down