ceo
b2dd2f3aac
修正 JSON 位元組相容與 xref Unicode 邊界(審核意見)
依 #12 審核意見修正四項偏差,並補一項同源問題:
1. iterXrefs 前一字元檢查改 Unicode:isWordChar 改用
unicode.IsLetter/IsDigit,且以 utf8 正確解碼前一 rune
(原版只認 ASCII 又取單一位元組)。另補齊 Python finditer
的重試語義:起點被 lookbehind 擋下時從下一 rune 重試,
否則「修復bear-cli#9」會整段丟失(Python 匹配後半 cli#9);
lookbehind 字元集含 #(##5 不匹配)。
2. writeJSON 改 json.Encoder + SetEscapeHTML(false):
Python ensure_ascii=False 不轉義 <、>、&,json.Marshal 預設
會,標題含這些字元即失去位元組相容。
3. stalled_hours 改 strconv.FormatFloat(v,'f',1,64):整數值輸出
48.0(原 %g 輸出 48,極大值還會變 1e+06)。
4. Child.last_activity_at 無可解析時刻時輸出 null(原輸出 ""),
型別改 *string;格式對齊 FormatMoment(UTC 記 +00:00 非 Z)。
5. cmd/xcheck 輸出同樣停用 HTML 轉義(Marshal* 對自訂
MarshalJSON 的輸出仍會轉義)。
驗證:go build/vet/test 全綠(16 測試函式,新增 CJK、##5、
全形數字、HTML 字元、48.0、null 等案例);cmd/xcheck 與
gitea.py stalled 對真實 API 並行掃描輸出位元組相同(1749B,
含 bear-cli#9 父追蹤項與 5 子項摘要);--xrefs 對 CJK
邊界輸入與 Python 一致。