markdown/cmd/markdown/main.go

52 lines
1002 B
Go

package main
import (
"bufio"
"flag"
"fmt"
"github.com/knieriem/markdown"
"log"
"os"
)
var format = flag.String("t", "html", "output format")
func main() {
var opt markdown.Extensions
flag.BoolVar(&opt.Notes, "notes", false, "turn on footnote syntax")
flag.BoolVar(&opt.Smart, "smart", false, "turn on smart quotes, dashes, and ellipses")
flag.BoolVar(&opt.Strike, "strike", false, "turn on strike-through syntax")
flag.BoolVar(&opt.Dlists, "dlists", false, "support definitions lists")
flag.Usage = func() {
fmt.Fprintf(os.Stderr, "Usage: %s [FILE]\n", os.Args[0])
flag.PrintDefaults()
}
flag.Parse()
r := os.Stdin
if flag.NArg() > 0 {
f, err := os.Open(flag.Arg(0))
if err != nil {
log.Fatal(err)
}
defer f.Close()
r = f
}
p := markdown.NewParser(&opt)
startPProf()
defer stopPProf()
w := bufio.NewWriter(os.Stdout)
switch *format {
case "groff-mm":
p.Markdown(r, markdown.ToGroffMM(w))
default:
p.Markdown(r, markdown.ToHTML(w))
}
w.Flush()
}