HTML 4.01 embeds

This commit is contained in:
2026-07-14 23:39:26 +02:00
parent 9096844266
commit e0a04773de
5 changed files with 43 additions and 13 deletions
+39 -10
View File
@@ -256,12 +256,21 @@ print_html :: proc(token: ^Token) {
case TokenType.FootnoteRef:
if id, ok := token.value.(string); ok {
fmt.printf("<a href=\"#fn-%s\" id=\"ref-%s\"><sup>%s</sup></a>", escape_html(id), escape_html(id), escape_html(id))
fmt.printf(
"<a href=\"#fn-%s\" id=\"ref-%s\"><sup>%s</sup></a>",
escape_html(id),
escape_html(id),
escape_html(id),
)
}
case TokenType.FootnoteDef:
if id, ok := token.value.(string); ok {
fmt.printf("<div class=\"footnote\" id=\"fn-%s\"><a href=\"#ref-%s\">^</a> ", escape_html(id), escape_html(id))
fmt.printf(
"<div class=\"footnote\" id=\"fn-%s\"><a href=\"#ref-%s\">^</a> ",
escape_html(id),
escape_html(id),
)
for child in token.children {
print_html(child)
}
@@ -317,8 +326,8 @@ print_html :: proc(token: ^Token) {
case TokenType.HeaderLink:
if target, ok := token.value.(string); ok {
slug := slugifyifyifyify(target)
fmt.printf("<a href=\"#%s\">", escape_html(slug))
slug := slugifyifyifyify(target)
fmt.printf("<a href=\"#%s\">", escape_html(slug))
for child in token.children {
print_html(child)
}
@@ -346,20 +355,40 @@ print_html :: proc(token: ^Token) {
case TokenType.Audio:
if url, ok := token.value.(string); ok {
fmt.printf("<audio controls src=\"%s\">", escape_html(url))
mime := detect_mime_type(url)
b := strings.builder_make(context.temp_allocator)
for child in token.children {
print_html(child)
get_text_content(child, &b)
}
fmt.print("</audio>")
alt_text := strings.to_string(b)
if alt_text == "" {
alt_text = url
}
fmt.printf("<object data=\"%s\" type=\"%s\">\n", escape_html(url), escape_html(mime))
fmt.printf("<param name=\"src\" value=\"%s\">\n", escape_html(url))
fmt.printf("<param name=\"autoplay\" value=\"false\">\n")
fmt.printf("<param name=\"controller\" value=\"true\">\n")
fmt.printf("<a href=\"%s\">%s</a>\n", escape_html(url), escape_html(alt_text))
fmt.print("</object>\n")
}
case TokenType.Video:
if url, ok := token.value.(string); ok {
fmt.printf("<video controls src=\"%s\">", escape_html(url))
mime := detect_mime_type(url)
b := strings.builder_make(context.temp_allocator)
for child in token.children {
print_html(child)
get_text_content(child, &b)
}
fmt.print("</video>")
alt_text := strings.to_string(b)
if alt_text == "" {
alt_text = url
}
fmt.printf("<object data=\"%s\" type=\"%s\">\n", escape_html(url), escape_html(mime))
fmt.printf("<param name=\"src\" value=\"%s\">\n", escape_html(url))
fmt.printf("<param name=\"autoplay\" value=\"false\">\n")
fmt.printf("<param name=\"controller\" value=\"true\">\n")
fmt.printf("<a href=\"%s\">%s</a>\n", escape_html(url), escape_html(alt_text))
fmt.print("</object>\n")
}
case TokenType.Iframe: