二、正确性 Bug
5. 搜索引擎结果强制小写(search.py 第 72 行)
snippet.lower().replace(q, ...) 把整个摘要先转为小写。中文不受影响,但英文搜索结果全部小写输出,专有名词面目全非。
修复:用正则 re.sub(q, highlight, snippet, flags=re.IGNORECASE) 保持原大小写做替换。
6. 英文归档/标签页使用中文侧边栏(generate-archive.ps1)
无论 -Lang en 参数,脚本始终加载 sidebar-left.html 和 sidebar-right.html(中文版)。英文标签页写着"留言板"和"最新文章"而不是英文。
修复:根据 $Lang 参数选择对应的英文侧边栏组件。
7. 英文 latest-posts 构建顺序错误(rebuild-all.ps1)
英文博客页面在英文 latest-posts-en.html 生成之前就构建了。首次构建时英文博客侧边栏的"最新文章"会为空。第二次构建才能看到(使用的是上次的缓存文件)。
修复:把英文 archive 生成移到英文页面构建之前。
8. 留言板 email 字段 name 属性冲突(sidebar-left.html)
email 输入框同时有 name="email" 和 name="content"。IE5.5 可能取后者,导致邮件地址覆盖留言正文。
修复:删掉多余的 name="content"。
9. 脚注正则无法处理跨行定义(build.ps1)
[^\n]*? 明确排除了换行。脚注定义如果分成两段(第二段不是新的定义),后半段会丢失。
修复:改为 (?:(?!\1>).)*? + Singleline 模式,让脚注内容可以跨行。
10. 草稿检测误判(build.ps1)
用 $content -match '' 在全文搜索。如果文章正文中正好包含了这段注释(比如这篇 build-script 博文,或者技术教程里引用草稿相关的代码示例),就会被当成草稿跳过。
修复:只检测文件前 N 个字符或前 3 行,而不是全文搜索。
11. 编辑时标题重复注入(editor.py)
编辑已有文章时,标题替换正则遇到"已经替换过的标题"就匹配不上,但 else 分支又会再套一层标题,结果出现双标题。
修复:检测是否已经存在标题 heading(而非依赖"标题"占位符),存在则替换文本内容,不存在则新增。
12. 搜索索引分隔符冲突(generate-archive.ps1)
用 --- 分隔索引条目,但文章正文中完全可能包含三个连续的破折号,导致搜索索引解析错乱。
修复:使用更不容易冲突的分隔符,比如 ===END===,或者改用固定的长度前缀。
|