2018-04-30

NaviServer and Markdown

naviserver-markdown


還是記錄一下這件事。和之前寫的東西類似,也就是 Markdown 檔案輸出為 HTML 格式。在研究 NaviServer 目前的 code 以後,我發現在 NaviServer tcl 目錄下加上 markdown.tcl,就可以用來處理 /*.md。

下面是 markdown.tcl 檔案的內容:
#
# markdown.tcl --
#
#   Add tclllib markdown support to NaviServer
#

#
# Register the ns_markdownfie handler for .md files
#

package require Markdown

ns_register_proc GET  /*.md ns_markdownfie

#
# ns_markdownfie --
#
#   Callback for Makrdown file.
#

proc ns_markdownfie {args} {

    set path [ns_url2file [ns_conn url]]
    if {![ns_filestat $path stat]} {
        ns_returnnotfound
        return
    }

    set infile [open $path]
    set md [read $infile]
    close $infile
    set data [::Markdown::convert $md]

    ns_headers 200 "text/html;charset=utf-8"
    ns_write $data
}

# EOF

重開 NaviServer 以後測試,我發現這個寫法是可行的。

沒有留言: