You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

51 lines
1.1 KiB

  1. package main
  2. import (
  3. "io/ioutil"
  4. "os"
  5. "path/filepath"
  6. "github.com/fatih/color"
  7. "github.com/gomarkdown/markdown"
  8. "github.com/gomarkdown/markdown/parser"
  9. )
  10. func check(err error) {
  11. if err != nil {
  12. color.Red(err.Error())
  13. }
  14. }
  15. func readDir(dirpath string) []string {
  16. var elems []string
  17. _ = filepath.Walk(dirpath, func(path string, f os.FileInfo, err error) error {
  18. elems = append(elems, path)
  19. return nil
  20. })
  21. return elems
  22. }
  23. func readFile(path string) (string, error) {
  24. dat, err := ioutil.ReadFile(path)
  25. if err != nil {
  26. color.Red(path)
  27. return "", err
  28. }
  29. return string(dat), nil
  30. }
  31. func fileToHTML(path string) (string, error) {
  32. mdExtensions := parser.NoIntraEmphasis | parser.Tables | parser.FencedCode |
  33. parser.Autolink | parser.Strikethrough | parser.SpaceHeadings | parser.HeadingIDs |
  34. parser.BackslashLineBreak | parser.DefinitionLists | parser.MathJax
  35. mdcontent, err := readFile(path)
  36. if err != nil {
  37. return "", err
  38. }
  39. mdParser := parser.NewWithExtensions(mdExtensions)
  40. htmlcontent := markdown.ToHTML([]byte(mdcontent), mdParser, nil)
  41. // htmlcontent := string(blackfriday.Run([]byte(mdcontent)))
  42. return string(htmlcontent), nil
  43. }