"""
代码 HTML 构建模块 - 生成带有行号和高亮的代码 HTML
"""
import html
from code_highlighting import highlight_python_line
def build_code_html(code: str, line_numbers: dict) -> str:
"""
构建带有交互式标记的代码 HTML
用于在演示中突出显示关键代码行和标记
"""
lines = code.splitlines()
rendered = ['
']
marker_t = "__TOK_T__"
marker_k = "__TOK_K__"
marker_v = "__TOK_V__"
for index, line in enumerate(lines, start=1):
line_with_markers = line
if index == line_numbers["LINE_TRY"]:
line_with_markers = line_with_markers.replace("kkk[j:j+w]", marker_k, 1)
line_with_markers = line_with_markers.replace("t", marker_t, 1)
if index == line_numbers["LINE_ASSIGN"]:
line_with_markers = line_with_markers.replace("vvv[j+w]", marker_v, 1)
highlighted = highlight_python_line(line_with_markers)
highlighted = highlighted.replace(
marker_t, '
t'
)
highlighted = highlighted.replace(
marker_k, '
kkk[j:j+w]'
)
highlighted = highlighted.replace(
marker_v, '
vvv[j+w]'
)
rendered.append(
'
'
'{line}'
'{text}'
"
".format(line=index, text=highlighted)
)
rendered.append("
")
return "\n".join(rendered)