Files
ALL-teach_sys/frontend_化工/fix_multiline_complete.py

99 lines
3.5 KiB
Python
Raw Permalink Normal View History

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import re
def fix_multiline_strings(content):
"""修复JavaScript文件中的多行字符串问题"""
# 查找所有的 "overview":, "process":, "keyPoints": 字段
lines = content.split('\n')
fixed_lines = []
in_string = False
current_field = None
string_content = []
for i, line in enumerate(lines):
# 检查是否是字段开始
if not in_string:
if '"overview":' in line or '"process":' in line or '"keyPoints":' in line:
# 提取字段名和开始的内容
match = re.match(r'(\s*"(overview|process|keyPoints)":\s*")(.*)', line)
if match:
prefix = match.group(1)
field = match.group(2)
content = match.group(3)
# 检查是否在同一行结束
if content.endswith('",') or content.endswith('"'):
# 单行字符串,直接添加
fixed_lines.append(line)
else:
# 多行字符串开始
in_string = True
current_field = field
string_content = [content]
# 保存前缀,稍后使用
current_prefix = prefix
else:
fixed_lines.append(line)
else:
fixed_lines.append(line)
else:
# 在字符串内部
# 检查是否是字符串结束
if line.strip().endswith('",') or line.strip().endswith('"'):
# 字符串结束
# 提取结束部分的内容
end_content = line.strip()
if end_content.endswith('",'):
string_content.append(end_content[:-2])
ending = '",'
else:
string_content.append(end_content[:-1])
ending = '"'
# 合并所有内容并转义换行符
full_content = '\\n'.join(string_content)
# 转义其他特殊字符
full_content = full_content.replace('\\', '\\\\')
full_content = full_content.replace('"', '\\"')
# 创建修复后的行
fixed_line = current_prefix + full_content + ending
fixed_lines.append(fixed_line)
# 重置状态
in_string = False
current_field = None
string_content = []
else:
# 继续收集字符串内容
string_content.append(line)
return '\n'.join(fixed_lines)
def main():
# 读取文件
with open('src/mocks/projectLibraryMock.js', 'r', encoding='utf-8') as f:
content = f.read()
# 修复多行字符串
fixed_content = fix_multiline_strings(content)
# 保存修复后的文件
with open('src/mocks/projectLibraryMock.js', 'w', encoding='utf-8') as f:
f.write(fixed_content)
print("✅ 多行字符串已修复")
# 验证语法
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()