|
1 |
| -import { Course, Day, Module } from './types' |
2 |
| -import { read as readXLSX, utils } from 'xlsx' |
| 1 | +import {Course, Day, Module} from './types' |
| 2 | +import {read as readXLSX, utils} from 'xlsx' |
3 | 3 | import * as assert from 'assert'
|
4 | 4 |
|
5 | 5 | /**
|
@@ -63,7 +63,7 @@ const analyzeDayAndPeriod = (str: string): { day: Day; period: number }[] => {
|
63 | 63 |
|
64 | 64 | //どのテストにも合格しなかったが空文字でなければ仮にunknownとする
|
65 | 65 | if (str !== '' && result.length === 0)
|
66 |
| - result.push({ day: Day.Unknown, period: 0 }) |
| 66 | + result.push({day: Day.Unknown, period: 0}) |
67 | 67 |
|
68 | 68 | return result
|
69 | 69 | }
|
@@ -142,7 +142,7 @@ const analyzeRow = (columns: string[]) => {
|
142 | 142 | const courseData: Course = {
|
143 | 143 | code: columns[0],
|
144 | 144 | name: columns[1],
|
145 |
| - credits: Number(columns[3]), |
| 145 | + credits: !Number.isNaN(parseInt(columns[3])) ? Number(columns[3]) : 0, |
146 | 146 | type: Number(columns[2]),
|
147 | 147 | overview: columns[9],
|
148 | 148 | remarks: columns[10],
|
@@ -208,10 +208,15 @@ export default (data: Buffer): Course[] => {
|
208 | 208 | const courses: Course[] = []
|
209 | 209 |
|
210 | 210 | for (let r = 5; ; r++) {
|
| 211 | + // sheetの終端で終了 |
| 212 | + if (typeof sheet[utils.encode_cell({r, c: 0})] === 'undefined') break |
| 213 | + |
211 | 214 | const columns: string[] = []
|
212 | 215 | for (let c = 0; c <= 16; c++)
|
213 |
| - columns.push(sheet[utils.encode_cell({ r, c })].v) |
214 |
| - if (columns[0] === '') break |
| 216 | + columns.push(sheet[utils.encode_cell({r, c})].v) |
| 217 | + |
| 218 | + // 科目番号が空の行はスキップ |
| 219 | + if (columns[0] === '') continue |
215 | 220 | courses.push(analyzeRow(columns))
|
216 | 221 | }
|
217 | 222 | return courses
|
|
0 commit comments