Quellcode durchsuchen

fix: 中南林业科技大学课表地点去除重复楼栋名

教务系统返回的地点形如 树人楼(树人楼北508),括号内重复了楼栋名。
新增 dedupePosition() 用反向引用正则将其规范为 树人楼(北508)。
对无重复的地点(如 实验楼A栋(203))及非重复格式(如 树木楼(B座二楼西头…))不影响。
jinnianliuxing vor 1 Woche
Ursprung
Commit
6b71dee175
1 geänderte Dateien mit 8 neuen und 1 gelöschten Zeilen
  1. 8 1
      resources/CSUFT/csuft.js

+ 8 - 1
resources/CSUFT/csuft.js

@@ -95,6 +95,13 @@ function buildGrid(table) {
     return grid;
 }
 
+// 去掉地点中重复的楼栋名,如 "树人楼(树人楼北508)" -> "树人楼(北508)"
+function dedupePosition(pos) {
+    if (!pos) return pos;
+    var m = pos.match(/^(.+?)\s*[((]\s*\1\s*(.+?)[))]\s*$/);
+    return m ? m[1] + '(' + m[2] + ')' : pos;
+}
+
 function textOf(el, selector) {
     var t = el.querySelector(selector);
     return t ? trimText(t.textContent) : '';
@@ -153,7 +160,7 @@ function parseSchedule(doc) {
             var teacher = (abbr.match(/老师[::]\s*([^;;]*)/) || [])[1] || '';
             var position = (abbr.match(/地点[::]\s*([^;;]*)/) || [])[1] || '';
             if (teacher) teacher = trimText(teacher);
-            if (position) position = trimText(position);
+            if (position) position = trimText(dedupePosition(position));
 
             var weeks = [], start = 0, end = 0;
             var times = abbr.match(/时间[::]\s*([^;;]*)/g) || [];