Use cmark-gfm by default, adapt CLI args, use escapes via find and replace if discount must be used.

This commit is contained in:
bratekarate 2024-10-03 02:25:06 +02:00
parent 845e87b521
commit 22aa7cf966
No known key found for this signature in database
GPG Key ID: 7FA4488395F8E7F3
1 changed files with 22 additions and 14 deletions

36
main.go
View File

@ -74,21 +74,21 @@ func highlight(w io.Writer, source, lexer, style string) error {
return err
}
/* HACK: If background color is white, set to a reasonable, light grey
* default. */
if s.Get(chroma.Background).Background.String() == "#ffffff" {
senr := s.Get(chroma.Background)
senr.Background = chroma.ParseColour("#f6f8fa");
s, err = s.Builder().AddEntry(chroma.Background, senr).Build();
if err != nil {
return err
}
}
/* HACK: If background color is white, set to a reasonable, light grey
* default. */
if s.Get(chroma.Background).Background.String() == "#ffffff" {
senr := s.Get(chroma.Background)
senr.Background = chroma.ParseColour("#f6f8fa");
s, err = s.Builder().AddEntry(chroma.Background, senr).Build();
if err != nil {
return err
}
}
return f.Format(w, s, it)
}
const Version = "0.1.2"
const Version = "0.1.3"
func main() {
css := flag.String("css", "", "Path to a CSS import to include at the beginning of the output")
@ -119,6 +119,7 @@ func main() {
bs := bufio.NewScanner(r)
lang := ""
needCSS := false
cmark, lookErr := exec.LookPath("cmark-gfm")
for bs.Scan() {
text := bs.Text()
trimmed := strings.TrimSpace(text)
@ -141,6 +142,12 @@ func main() {
currentCodeBlock.WriteString(text)
currentCodeBlock.WriteByte('\n')
} else {
/* If cmark is not installed then discount will be used, and we have to
* do some encoding ourselves. */
if lookErr != nil {
text = strings.Replace(text, "\\<", "&lt;", -1)
text = strings.Replace(text, "\\>", "&gt;", -1)
}
out.WriteString(text)
out.WriteByte('\n')
}
@ -157,12 +164,13 @@ func main() {
checkError(writeErr, "writing data to temporary file")
// shell out to markdown because of
// https://github.com/russross/blackfriday/issues/403
cmark, lookErr := exec.LookPath("cmark")
args := []string{cmark, "--unsafe", f.Name()}
var args []string
if lookErr != nil {
cmark, lookErr = exec.LookPath("markdown")
checkError(lookErr, "finding markdown binary")
args = []string{cmark, f.Name()}
args = []string{cmark, "-f", "smarty,pants", f.Name()}
} else {
args = []string{cmark, "--smart", "--unsafe", "--extension", "table", f.Name()}
}
execErr := localExec(cmark, args, []string{})
checkError(execErr, "executing markdown binary")