瀏覽代碼

fix: frontmatter

Timothy J. Baek 10 月之前
父節點
當前提交
5c0015cd66
共有 1 個文件被更改,包括 25 次插入10 次删除
  1. 25 10
      backend/apps/webui/utils.py

+ 25 - 10
backend/apps/webui/utils.py

@@ -10,17 +10,32 @@ def extract_frontmatter(file_path):
     Extract frontmatter as a dictionary from the specified file path.
     """
     frontmatter = {}
-    frontmatter_pattern = re.compile(r"^([a-z_]+):\s*(.*)\s*$", re.IGNORECASE)
+    frontmatter_started = False
+    frontmatter_ended = False
+    frontmatter_pattern = re.compile(r"^\s*([a-z_]+):\s*(.*)\s*$", re.IGNORECASE)
 
-    with open(file_path, "r", encoding="utf-8") as file:
-        for line in file:
-            if line.strip() == '"""':
-                # End of frontmatter section
-                break
-            match = frontmatter_pattern.match(line)
-            if match:
-                key, value = match.groups()
-                frontmatter[key] = value
+    try:
+        with open(file_path, "r", encoding="utf-8") as file:
+            for line in file:
+                if '"""' in line:
+                    if not frontmatter_started:
+                        frontmatter_started = True
+                        continue  # skip the line with the opening triple quotes
+                    else:
+                        frontmatter_ended = True
+                        break
+
+                if frontmatter_started and not frontmatter_ended:
+                    match = frontmatter_pattern.match(line)
+                    if match:
+                        key, value = match.groups()
+                        frontmatter[key.strip()] = value.strip()
+    except FileNotFoundError:
+        print(f"Error: The file {file_path} does not exist.")
+        return {}
+    except Exception as e:
+        print(f"An error occurred: {e}")
+        return {}
 
     return frontmatter