Skill detail and linked markdown files now use the same preview-md pipeline as Memory/Notes, with code highlighting and KaTeX enhancement.
55 lines
1.8 KiB
Python
55 lines
1.8 KiB
Python
"""Skills detail markdown must use the shared preview-md styling pipeline."""
|
|
|
|
from pathlib import Path
|
|
|
|
|
|
PANELS_JS = Path("static/panels.js").read_text(encoding="utf-8")
|
|
|
|
|
|
def _function_block(name: str) -> str:
|
|
marker = f"function {name}("
|
|
start = PANELS_JS.find(marker)
|
|
assert start != -1, f"{name}() not found"
|
|
params_end = PANELS_JS.find("){", start)
|
|
assert params_end != -1, f"{name}() body not found"
|
|
brace = params_end + 1
|
|
depth = 0
|
|
for idx in range(brace, len(PANELS_JS)):
|
|
ch = PANELS_JS[idx]
|
|
if ch == "{":
|
|
depth += 1
|
|
elif ch == "}":
|
|
depth -= 1
|
|
if depth == 0:
|
|
return PANELS_JS[start : idx + 1]
|
|
raise AssertionError(f"{name}() body did not close")
|
|
|
|
|
|
def test_skill_detail_wraps_markdown_in_preview_md():
|
|
block = _function_block("_renderSkillDetail")
|
|
assert "_skillMarkdownHtml(" in block, "Skill detail must render through the shared markdown wrapper"
|
|
assert "renderMd(markdownBody" not in block.replace(" ", ""), (
|
|
"Skill detail must not inject raw renderMd() output without preview-md styling"
|
|
)
|
|
|
|
|
|
def test_skill_markdown_helper_uses_preview_md():
|
|
block = _function_block("_skillMarkdownHtml")
|
|
assert 'class="preview-md"' in block.replace("'", '"')
|
|
assert "renderMd(" in block
|
|
|
|
|
|
def test_skill_detail_enhances_markdown_after_render():
|
|
detail_block = _function_block("_renderSkillDetail")
|
|
assert "_enhanceSkillMarkdown(body)" in detail_block
|
|
|
|
enhance_block = _function_block("_enhanceSkillMarkdown")
|
|
assert "highlightCode" in enhance_block
|
|
assert "renderKatexBlocks" in enhance_block
|
|
|
|
|
|
def test_open_skill_file_markdown_uses_preview_md():
|
|
block = _function_block("openSkillFile")
|
|
assert "_skillMarkdownHtml(" in block
|
|
assert "if (isMd) _enhanceSkillMarkdown(body)" in block
|