Sample code for 30+ languages & platforms
PureBasic

Markdown to HTML - Full Document, ChatGPT Theme with Code Syntax Highlighting

See more Markdown Examples

Demonstrates how to convert a complete Markdown document to HTML using the pre-defined "ChatGPT" theme but also with Cloudfare Prism's code syntax highlighting.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkStringBuilder.pb"
IncludeFile "CkJsonObject.pb"

Procedure ChilkatExample()

    success.i = 0

    success = 0

    ; Select the pre-defined "ChatGPT" style.
    options.i = CkJsonObject::ckCreate()
    If options.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkJsonObject::ckUpdateString(options,"theme","ChatGPT")

    ; We can also set an option for the max-width, which by default is "72ch".
    CkJsonObject::ckUpdateString(options,"ChatGPT.max-width","120ch")

    ; We can add extra content to the bottom of the HTML head and body sections like this:
    ; Here we are using the "tomorrow" theme.
    CkJsonObject::ckUpdateString(options,"extraHead","<link rel=" + Chr(34) + "stylesheet" + Chr(34) + " href=" + Chr(34) + "https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism-tomorrow.min.css" + Chr(34) + " />")
    CkJsonObject::ckUpdateString(options,"extraBody","<script src=" + Chr(34) + "https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/prism.min.js" + Chr(34) + "></script><script src =" + Chr(34) + "https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/plugins/autoloader/prism-autoloader.min.js" + Chr(34) + "></script>")

    sbMarkdown.i = CkStringBuilder::ckCreate()
    If sbMarkdown.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    sbHtml.i = CkStringBuilder::ckCreate()
    If sbHtml.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkStringBuilder::ckLoadFile(sbMarkdown,"qa_data/markdown/test1.md","utf-8")
    If success = 0
        Debug CkStringBuilder::ckLastErrorText(sbMarkdown)
        CkJsonObject::ckDispose(options)
        CkStringBuilder::ckDispose(sbMarkdown)
        CkStringBuilder::ckDispose(sbHtml)
        ProcedureReturn
    EndIf

    CkStringBuilder::ckMarkdownToHtml(sbMarkdown,options,sbHtml)
    CkStringBuilder::ckToCRLF(sbHtml)

    Debug CkStringBuilder::ckGetAsString(sbHtml)

    ; 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:

    ; image


    CkJsonObject::ckDispose(options)
    CkStringBuilder::ckDispose(sbMarkdown)
    CkStringBuilder::ckDispose(sbHtml)


    ProcedureReturn
EndProcedure