feat: 🎸 Misc codes (Lunch, Prandium, MTID)

This commit is contained in:
Johan Öbrink 2021-04-13 15:22:28 +02:00
parent bf299ea1f0
commit 59e350b6ab
2 changed files with 40 additions and 6 deletions

View File

@ -1,6 +1,23 @@
import parse from './' import parse from './'
describe('parse', () => { describe('parse', () => {
it('Diverse', () => {
expect(parse('Lunch')).toEqual({
code: 'Lunch',
category: 'Diverse',
name: 'Lunch',
})
expect(parse('Prandium')).toEqual({
code: 'Prandium',
category: 'Diverse',
name: 'Lunch',
})
expect(parse('MTID')).toEqual({
code: 'MTID',
category: 'Diverse',
name: 'Mentorstid',
})
})
it('Ämnesområden', () => { it('Ämnesområden', () => {
expect(parse('BL')).toEqual({ code: 'BL', category: '', name: 'Bild' }) expect(parse('BL')).toEqual({ code: 'BL', category: '', name: 'Bild' })
expect(parse('EN')).toEqual({ code: 'EN', category: '', name: 'Engelska' }) expect(parse('EN')).toEqual({ code: 'EN', category: '', name: 'Engelska' })
@ -1054,8 +1071,8 @@ describe('parse', () => {
}) })
expect(parse('MTID Arbetslagsråd 7C')).toEqual({ expect(parse('MTID Arbetslagsråd 7C')).toEqual({
code: 'MTID', code: 'MTID',
category: 'Okänd', category: 'Diverse',
name: 'MTID', name: 'Mentorstid',
comment: 'Arbetslagsråd 7C', comment: 'Arbetslagsråd 7C',
}) })
}) })

View File

@ -217,6 +217,12 @@ const languages: Repo = {
SPK: 'Övriga språk', SPK: 'Övriga språk',
} }
const misc: Repo = {
Lunch: 'Lunch',
Prandium: 'Lunch',
MTID: 'Mentorstid',
}
type Parser = (code: string) => Subject | null type Parser = (code: string) => Subject | null
const parseSubject: Parser = (code) => { const parseSubject: Parser = (code) => {
if (!subjects[code]) return null if (!subjects[code]) return null
@ -273,13 +279,24 @@ const parseNativeLanguage: Parser = (code) => {
} }
} }
const parseMisc: Parser = (code) => {
if (!misc[code]) return null
return {
code,
category: 'Diverse',
name: misc[code] as string,
}
}
const parse = (code: string): Subject => { const parse = (code: string): Subject => {
const [subjectCode, ...rest] = code.split(' ') const [subjectCode, ...rest] = code.split(' ')
const result: Subject = parseSubject(subjectCode) || const result: Subject = parseSubject(subjectCode) ||
parseTrainingSubject(code) || parseTrainingSubject(subjectCode) ||
parseLanguage(code) || parseLanguage(subjectCode) ||
parseAltLanguage(code) || parseAltLanguage(subjectCode) ||
parseNativeLanguage(code) || { parseNativeLanguage(subjectCode) ||
parseMisc(subjectCode) || {
code: subjectCode, code: subjectCode,
category: 'Okänd', category: 'Okänd',
name: subjectCode, name: subjectCode,