Skip to content

Commit 4881d0e

Browse files
committed
docs(KP-448): added TSDoc to semesterUtils
1 parent 1ea68d0 commit 4881d0e

File tree

1 file changed

+40
-4
lines changed

1 file changed

+40
-4
lines changed

shared/semesterUtils.ts

Lines changed: 40 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ export enum SemesterNumber {
1515
/**
1616
* Takes a yearSemesterNumber and returns a yearSemesterNumber representing the semester previous to the given semester
1717
*
18-
* @param {Object} yearSemesterNumber
19-
* @returns
18+
* @param param0 YearSemesterNumber, e.g. { year: 2024, semesterNumber: 1 }
19+
* @returns YearSemesterNumber, e.g. { year: 2023, semesterNumber: 2 }
2020
*/
2121
export const calcPreviousSemester = ({ year, semesterNumber }: YearSemesterNumber) => {
2222
if (semesterNumber === 2) {
@@ -33,16 +33,27 @@ export const calcPreviousSemester = ({ year, semesterNumber }: YearSemesterNumbe
3333
}
3434

3535
/**
36+
* Takes a KTH semester in string or number format, returns an array with year at index 0
37+
* and semester number at index 1.
38+
* YearSemesterNumberArray is a legacy format, which is used in some parts of our code.
39+
* The preferred format is YearSemesterNumber.
3640
*
37-
* @param {number} semester
38-
* @returns
41+
* @param semester "20241" or 20241
42+
* @returns [2024, 1]
3943
*/
4044
export const parseSemesterIntoYearSemesterNumberArray = (semester: string | number) => {
4145
const yearSemesterNumberArrayStrings = semester.toString().match(/.{1,4}/g)
4246

4347
return yearSemesterNumberArrayStrings.map(str => Number(str))
4448
}
4549

50+
// TODO Refactor this, confusing name as "Period" is ladok-speak, but here we create a KTH semester string
51+
/**
52+
* Returns a KTH semester string.
53+
*
54+
* @param date
55+
* @returns a KTH semester string "20241"
56+
*/
4657
export const getPeriodCodeForDate = (date: Date) => {
4758
const JULY = 6
4859
const year = date.getFullYear()
@@ -51,6 +62,15 @@ export const getPeriodCodeForDate = (date: Date) => {
5162
return `${year}${semester}`
5263
}
5364

65+
/**
66+
* Takes a string in LadokPeriod format and returns a YearSemesterNumberArray
67+
* Note that YearSemesterNumberArray is a legacy format.
68+
* YearSemesterNumber or AcademicSemester are preferred.
69+
* If possible, use {parseSemesterIntoYearSemesterNumber}.
70+
*
71+
* @param semester Semester string in ladok format, e.g. "VT2024"
72+
* @returns YearSemesterNumberArray, e.g. [2024, 1]
73+
*/
5474
const parseLadokSemester = (semester: string) => {
5575
let match = undefined
5676
if (semester) {
@@ -65,6 +85,15 @@ const parseLadokSemester = (semester: string) => {
6585
return [Number(year), semesterNumber]
6686
}
6787

88+
/**
89+
* Takes a string in KTH semester format and returns a YearSemesterNumberArray
90+
* Note that YearSemesterNumberArray is a legacy format.
91+
* YearSemesterNumber or AcademicSemester are preferred.
92+
* If possible, use {parseSemesterIntoYearSemesterNumber}.
93+
*
94+
* @param semester Semester string in KTH format, e.g. 20241
95+
* @returns YearSemesterNumberArray, e.g. [2024, 1]
96+
*/
6897
export const parseSemester = (semester: string) => {
6998
let match = undefined
7099
if (semester) {
@@ -80,6 +109,13 @@ export const parseSemester = (semester: string) => {
80109
return [Number(year), semesterNumber]
81110
}
82111

112+
/**
113+
* Takes a semester, either in LadokPeriod string format or KTH Semester string or number format.
114+
* Returns a YearSemesterNumber.
115+
*
116+
* @param semester A semester string|number in either KTH or Ladok format, e.g. "VT2024", "20241", 20241
117+
* @returns YearSemesterNumber, e.g. { year: 2024, semesterNumber: 1 }
118+
*/
83119
export const parseSemesterIntoYearSemesterNumber = (semester: string | number): YearSemesterNumber => {
84120
const semesterString = semester.toString()
85121
const semesterRegex = /^([A-Za-z]{2}\d{4})$/

0 commit comments

Comments
 (0)