52 lines
1.6 KiB
Go
52 lines
1.6 KiB
Go
package stringutil
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"git.dekart811.net/icedream/workreportmgr/internal/util"
|
|
"github.com/russross/blackfriday"
|
|
)
|
|
|
|
const (
|
|
enabledExtensions = 0 |
|
|
blackfriday.EXTENSION_NO_INTRA_EMPHASIS |
|
|
blackfriday.EXTENSION_TABLES |
|
|
blackfriday.EXTENSION_FENCED_CODE |
|
|
blackfriday.EXTENSION_AUTOLINK |
|
|
blackfriday.EXTENSION_STRIKETHROUGH |
|
|
blackfriday.EXTENSION_SPACE_HEADERS |
|
|
blackfriday.EXTENSION_HEADER_IDS |
|
|
blackfriday.EXTENSION_BACKSLASH_LINE_BREAK |
|
|
blackfriday.EXTENSION_DEFINITION_LISTS
|
|
)
|
|
|
|
var additionalTexReplacements = []Converter{
|
|
// NewStringConverter("{", "\\{"),
|
|
// NewStringConverter("}", "\\}"),
|
|
// NewStringConverter("\\", "\\textbackslash{}"),
|
|
//
|
|
// NewStringConverter("&", "\\&"),
|
|
// NewStringConverter("%", "\\%"),
|
|
// NewStringConverter("$", "\\$"),
|
|
// NewStringConverter("#", "\\#"),
|
|
// NewStringConverter("_", "\\_"),
|
|
// NewStringConverter("~", "\\textasciitilde{}"),
|
|
// NewStringConverter("^", "\\textasciicircum{}"),
|
|
// NewStringConverter("ß", "\\ss{}"),
|
|
|
|
NewSimpleRegexConverter(`"([^"]+)"`, `\enquote{$1}`),
|
|
// NewSimpleRegexConverter("`([^`]+)`", "\\verb`$1`"),
|
|
}
|
|
|
|
/*
|
|
Latexize takes an input text as parsed from the value of any field in a project
|
|
file and turns it into LaTeX code.
|
|
*/
|
|
func Latexize(input string) string {
|
|
renderer := util.DocumentlessRenderer{Renderer: blackfriday.LatexRenderer(0)}
|
|
renderedString := string(blackfriday.Markdown([]byte(input), renderer, enabledExtensions))
|
|
renderedString = CustomEscape(renderedString, additionalTexReplacements...)
|
|
renderedString = strings.TrimSpace(renderedString)
|
|
return renderedString
|
|
}
|