MCPcopy Create free account
hub / github.com/Qinbf/groundmap / _normalize_for_hash

Function _normalize_for_hash

scripts/postprocess.py:58–74  ·  view source on GitHub ↗

生成 hash 用的归一化文本:去 markdown 标记、压空白。 pipe-1:旧版会 `[:64]` 截断——导致超过 64 字边界的关键数字 / 论断被编辑时 归一化文本不变、hash6 与锚点都不变,`k.py list-broken-refs` 这条安全网兜不住 stale 引用。现改为对**完整**归一化内容做 hash,任意位置的实质编辑都会改变 hash6。

(s: str)

Source from the content-addressed store, hash-verified

56
57
58def _normalize_for_hash(s: str) -> str:
59 """生成 hash 用的归一化文本:去 markdown 标记、压空白。
60
61 pipe-1:旧版会 `[:64]` 截断——导致超过 64 字边界的关键数字 / 论断被编辑时
62 归一化文本不变、hash6 与锚点都不变,`k.py list-broken-refs` 这条安全网兜不住
63 stale 引用。现改为对**完整**归一化内容做 hash,任意位置的实质编辑都会改变 hash6。"""
64 s = re.sub(r"`+", "", s)
65 s = re.sub(r"\*+", "", s)
66 s = re.sub(r"_+", "", s)
67 s = re.sub(r"~+", "", s)
68 s = re.sub(r"#+", "", s)
69 s = re.sub(r">+", "", s)
70 s = re.sub(r"!\[([^\]]*)\]\([^\)]*\)", r"\1", s)
71 s = re.sub(r"\[([^\]]+)\]\([^\)]*\)", r"\1", s)
72 s = re.sub(r"[\[\]\(\)\|]", "", s)
73 s = re.sub(r"\s+", " ", s).strip().lower()
74 return s
75
76
77def _md5_6(s: str) -> str:

Callers 1

add_anchorsFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected