Zig Requires Chilkat v11.2.0+
Zig
Markdown to HTML - Full Document, Custom Theme with Code Syntax Highlighting
See more Markdown Examples
Demonstrates how to convert a complete Markdown document to HTML using your own custom theme with Cloudfare Prism's code syntax highlighting.Chilkat Zig Downloads
const std = @import("std");
const chilkat = @import("chilkat");
pub fn main(init: std.process.Init) !void {
const alloc = init.arena.allocator();
var success: bool = false;
success = false;
const options = try chilkat.JsonObject.init();
defer options.deinit();
// Instead of specifying a "theme", provide values for the HTML document parts.
const sb_head = try chilkat.StringBuilder.init();
defer sb_head.deinit();
const b_crlf = true;
sb_head.appendLine("<head>", b_crlf) catch {};
sb_head.appendLine("<style>", b_crlf) catch {};
sb_head.appendLine("body {", b_crlf) catch {};
sb_head.appendLine(" font-family: \"Segoe UI\", Tahoma, Geneva, Verdana, sans-serif;", b_crlf) catch {};
sb_head.appendLine("}", b_crlf) catch {};
sb_head.appendLine("</style>", b_crlf) catch {};
sb_head.appendLine("</head>", b_crlf) catch {};
// Each HTML section can be set individually.
options.updateString("docType", "<!DOCTYPE html>") catch {};
options.updateString("rootElement", "<html lang=\"en\">") catch {};
options.updateString("head", try sb_head.getAsString(alloc)) catch {};
options.updateString("bodyStart", "<body>\n<div id=\"content\"") catch {};
options.updateString("bodyEnd", "</div>\n</body>") catch {};
// We can add extra content to the bottom of the HTML head and body sections like this:
// Here we are using the Cloudfare Prism "coy" theme for code syntax higlighting.
options.updateString("extraHead", "<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism-coy.min.css\" />") catch {};
options.updateString("extraBody", "<script src=\"https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/prism.min.js\"></script><script src =\"https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/plugins/autoloader/prism-autoloader.min.js\"></script>") catch {};
const sb_markdown = try chilkat.StringBuilder.init();
defer sb_markdown.deinit();
const sb_html = try chilkat.StringBuilder.init();
defer sb_html.deinit();
sb_markdown.loadFile("qa_data/markdown/test1.md", "utf-8") catch {
std.debug.print("{s}\n", .{try sb_markdown.getLastErrorText(alloc)});
return;
};
sb_markdown.markdownToHtml(options, sb_html) catch {};
sb_html.toCRLF() catch {};
std.debug.print("{s}\n", .{try sb_html.getAsString(alloc)});
// The sample markdown input for this example is identical to the one at Markdown to HTML - Full Document, Raw, where you can view it.
// Sample HTML output as viewed in a browser:
//
}