本NODE模块提供了 CSESParser 和 CSESGenerator 两个类,用于解析和生成 CSES 格式的 YAML 文件。CSES 格式为课表迁移统一格式。
npm install jscsesCSESParser 类用于解析 CSES 格式的 YAML 文件,并提取课程信息和课程安排。
const { CSESParser } = require('jscses');
const parser = new CSESParser(filePath);参数:
filePath:CSES 格式的 YAML 文件路径。
获取所有科目信息。
返回值:返回一个数组,包含所有科目的信息,每个科目是一个对象,包含以下字段:
name:科目名称。simplified_name:科目简称(可选)。teacher:教师姓名(可选)。room:教室名称(可选)。
获取所有课程安排。
返回值:返回一个数组,包含所有课程安排的信息,每个课程安排是一个对象,包含以下字段:
name:课程安排名称(如“Odd_Monday”)。enable_day:课程安排的星期(整数型,如 1、2 等)。weeks:周次类型(如 'all'、'odd'、'even')。classes:课程列表,每个课程是一个对象,包含以下字段:subject:科目名称。start_time:课程开始时间。end_time:课程结束时间。
根据星期获取课程安排。
参数:
day:星期(整数型,如 1、2 等)。
返回值:返回该星期的课程安排数组,每个课程是一个对象,包含以下字段:
subject:科目名称。start_time:课程开始时间。end_time:课程结束时间。
判断是否为 CSES 格式的文件。
参数:
filePath:文件路径。
返回值:返回一个布尔值,表示该文件是否为 CSES 格式的文件。
CSESGenerator 类用于生成 CSES 格式的 YAML 文件。
const { CSESGenerator } = require('jscses');
const generator = new CSESGenerator(version);参数:
version:CSES 格式的版本号,默认为 1。
添加科目信息。
参数:
name:科目名称。simplifiedName:科目简称(可选)。teacher:教师姓名(可选)。room:教室名称(可选)。
添加课程安排。
参数:
name:课程安排名称(如“Odd_Monday”)。enableDay:课程安排的星期(整数型,如 1、2 等)。weeks:周次类型(如 'all'、'odd'、'even')。classes:课程列表,每个课程是一个对象,包含以下字段:subject:科目名称。start_time:课程开始时间。end_time:课程结束时间。
生成 CSES 格式的字典数据。
返回值:返回一个对象,包含 CSES 格式的字典数据。
将 CSES 数据保存到 YAML 文件。
参数:
filePath:输出文件路径。
const { CSESParser } = require('jscses');
try {
const parser = new CSESParser('path/to/cses_file.yaml');
const subjects = parser.getSubjects();
console.log('Subjects:', subjects);
const schedules = parser.getSchedules();
console.log('Schedules:', schedules);
const mondaySchedule = parser.getScheduleByDay(1);
console.log('Monday Schedule:', mondaySchedule);
} catch (error) {
console.error('Error:', error.message);
}const { CSESGenerator } = require('jscses');
const generator = new CSESGenerator();
// 添加科目
generator.addSubject('Math', 'M', 'John Doe', 'Room 101');
generator.addSubject('Science', 'Sci', 'Jane Smith', 'Room 102');
// 添加课程安排
generator.addSchedule('Monday', 1, 'all', [
{ subject: 'Math', start_time: '09:00', end_time: '10:00' },
{ subject: 'Science', start_time: '10:00', end_time: '11:00' }
]);
// 保存到文件
generator.saveToFile('path/to/output_file.yaml');确保输入的 YAML 文件格式正确,否则可能会导致解析失败。 在生成 YAML 文件时,确保输出路径有效且具有写入权限。
如有任何问题或建议,发布议题,感谢您的使用。
