@kuroson/cse-students
v0.4.1
Published
Student enrolment parser for UNSW CSE courses
Downloads
360
Readme
@kuroson/cse-students
Student enrolment parser for UNSW CSE courses.
Installation
npm install @kuroson/cse-students
# or
pnpm add @kuroson/cse-students
# or
yarn add @kuroson/cse-studentsUsage
import { Students, cleanUpName } from "@kuroson/cse-students";
import type { StudentEnrolment, TimetableInformation } from "@kuroson/cse-students";
// Parse students from a file
const students = new Students({
pathToFile: "./enrolments.txt",
});
// Or parse from a string
const students = new Students({
givenInput: "zID|name|class\n1234567|Smith, John|T09A",
});
// With timetable information for class code mapping
const timetable: TimetableInformation = [
{
classCode: "T09",
expandedClassCode: "T09A",
tuteLabLocation: ["1-5", "Mon 10:00", "K17-101", "1-5", "Mon 11:00", "K17-102"],
tutors: [{ zID: "z1234567", name: "John Smith" }],
},
];
const students = new Students({
pathToFile: "./enrolments.txt",
timeTable: timetable,
});
// With optional winston logger
import { createLogger } from "winston";
const logger = createLogger();
const students = new Students({
pathToFile: "./enrolments.txt",
winstonLogger: logger,
});
// Get parsed students
const studentList = students.getStudents();
// Returns: StudentEnrolment[]
// Get timetable key mappings
const keys = students.getTimeTableKeys();API
Students
Main class for parsing student enrolments.
Constructor Options
type InputOptions = {
timeTable?: TimetableInformation;
winstonLogger?: Logger;
} & ({ givenInput: string; pathToFile?: never } | { pathToFile: string; givenInput?: never });givenInput- Raw enrolment data as a string (mutually exclusive withpathToFile)pathToFile- Path to enrolment file (mutually exclusive withgivenInput)timeTable- Optional timetable information for class code mappingwinstonLogger- Optional winston logger instance
Methods
getStudents()- Returns array of parsed student enrolmentsgetTimeTableKeys()- Returns mapping of expanded class codes to class codes
cleanUpName(name: string)
Utility function to clean up student names from "Last, First" format.
cleanUpName("Smith, John"); // Returns: "John Smith"Types
StudentEnrolment
type StudentEnrolment = {
zID: string;
name: string;
class: string;
classCode?: string;
};TimetableInformation
type TimetableInformation = Array<{
classCode: string;
expandedClassCode: string;
otherExpandedClassCode?: string;
tuteLabLocation: [
tuteWeeks: string,
tuteTime: string,
tuteLocation: string,
labWeeks: string,
labTime: string,
labLocation: string,
];
tutors: Array<{ zID: string; name: string }>;
}>;Input Format
The expected input format is pipe-delimited with a header row:
zID|name|class
1234567|Smith, John|T09A
7654321|Doe, Jane|T10BRequirements
- Node.js >= 22
License
MIT
