75 lines
2.5 KiB
Python
75 lines
2.5 KiB
Python
|
|
#!/usr/bin/env python3
|
|||
|
|
# -*- coding: utf-8 -*-
|
|||
|
|
import json
|
|||
|
|
import re
|
|||
|
|
|
|||
|
|
def escape_for_js(text):
|
|||
|
|
"""转义文本以适合在JavaScript字符串中使用"""
|
|||
|
|
# 转义反斜杠(必须首先做)
|
|||
|
|
text = text.replace('\\', '\\\\')
|
|||
|
|
# 转义换行符
|
|||
|
|
text = text.replace('\n', '\\n')
|
|||
|
|
# 转义双引号
|
|||
|
|
text = text.replace('"', '\\"')
|
|||
|
|
# 转义单引号
|
|||
|
|
text = text.replace("'", "\\'")
|
|||
|
|
return text
|
|||
|
|
|
|||
|
|
def main():
|
|||
|
|
# 读取完整数据
|
|||
|
|
with open('complete_project_data.json', 'r', encoding='utf-8') as f:
|
|||
|
|
complete_data = json.load(f)
|
|||
|
|
|
|||
|
|
# 读取当前的mock文件
|
|||
|
|
with open('src/mocks/projectLibraryMock.js', 'r', encoding='utf-8') as f:
|
|||
|
|
mock_content = f.read()
|
|||
|
|
|
|||
|
|
# 为每个项目更新完整的详情
|
|||
|
|
updates_made = 0
|
|||
|
|
|
|||
|
|
for project in complete_data:
|
|||
|
|
project_id = project['id']
|
|||
|
|
name = project['name']
|
|||
|
|
|
|||
|
|
print(f"\n处理项目 {project_id}: {name}")
|
|||
|
|
print(f" 流程数: {project['process_count']}, 技术点数: {project['keypoints_count']}")
|
|||
|
|
|
|||
|
|
# 转义内容
|
|||
|
|
overview = escape_for_js(project['overview'])
|
|||
|
|
process = escape_for_js(project['process'])
|
|||
|
|
keypoints = escape_for_js(project['keypoints'])
|
|||
|
|
|
|||
|
|
# 构建查找项目的正则表达式
|
|||
|
|
# 查找项目在详情数组中(getMockProjectDetail函数中)
|
|||
|
|
pattern = rf'(\{{\s*"id":\s*{project_id},\s*"name":\s*"[^"]+",.*?"unit":\s*"[^"]+",)\s*"overview":\s*"[^"]*",\s*"process":\s*"[^"]*",\s*"keyPoints":\s*"[^"]*"'
|
|||
|
|
|
|||
|
|
# 创建替换内容
|
|||
|
|
replacement = rf'\1\n "overview": "{overview}",\n "process": "{process}",\n "keyPoints": "{keypoints}"'
|
|||
|
|
|
|||
|
|
# 执行替换
|
|||
|
|
new_content, count = re.subn(pattern, replacement, mock_content, flags=re.DOTALL)
|
|||
|
|
|
|||
|
|
if count > 0:
|
|||
|
|
mock_content = new_content
|
|||
|
|
updates_made += count
|
|||
|
|
print(f" ✅ 更新成功")
|
|||
|
|
else:
|
|||
|
|
print(f" ⚠️ 未找到匹配")
|
|||
|
|
|
|||
|
|
# 保存更新后的文件
|
|||
|
|
with open('src/mocks/projectLibraryMock.js', 'w', encoding='utf-8') as f:
|
|||
|
|
f.write(mock_content)
|
|||
|
|
|
|||
|
|
print(f"\n✅ 完成!共更新了 {updates_made} 处项目详情")
|
|||
|
|
|
|||
|
|
# 验证JavaScript语法
|
|||
|
|
import subprocess
|
|||
|
|
result = subprocess.run(['node', '-c', 'src/mocks/projectLibraryMock.js'],
|
|||
|
|
capture_output=True, text=True)
|
|||
|
|
if result.returncode == 0:
|
|||
|
|
print("✅ JavaScript语法检查通过")
|
|||
|
|
else:
|
|||
|
|
print(f"❌ JavaScript语法错误: {result.stderr}")
|
|||
|
|
|
|||
|
|
if __name__ == "__main__":
|
|||
|
|
main()
|