Something went wrong on our end
-
Volker Schukai authoredVolker Schukai authored
mapping.go 2.81 KiB
package document
import (
"fmt"
"regexp"
"strings"
)
var kbdMapping = map[string]string{
"ctrl": "\\LKeyStrg",
"tux": "\\LKeyTux",
"win": "\\LKeyWin",
"menu": "\\LKeyMenu",
"strg": "\\LKeyStrg",
"alt": "\\LKeyAlt",
"altgr": "\\LKeyAltGr",
"shift": "\\LKeyShift",
"enter": "\\LKeyEnter",
"tab": "\\LKeyTab",
"capslock": "\\LKeyCapsLock",
"pos": "\\LKeyPos",
"entf": "\\LKeyEntf",
"del": "\\LKeyDel",
"ins": "\\LKeyIns",
"einf": "\\LKeyEinf",
"leer": "\\LKeyLeer",
"space": "\\LKeySpace",
"esc": "\\LKeyEsc",
"ende": "\\LKeyEnde",
"back": "\\LKeyBack",
"up": "\\LKeyUp",
"dwon": "\\LKeyDown",
"left": "\\LKeyLeft",
"right": "\\LKeyRight",
"pgup": "\\LKeyPgUp",
"pgdown": "\\LKeyPgDown",
}
func convertCircledNumbers(content string) string {
circleMap := map[string]string{
"➊": "\\large\\libertineGlyph{uni2776}\\normalsize",
"➋": "\\large\\libertineGlyph{uni2777}\\normalsize",
"➌": "\\large\\libertineGlyph{uni2778}\\normalsize",
"➍": "\\large\\libertineGlyph{uni2779}\\normalsize",
"➎": "\\large\\libertineGlyph{uni277A}\\normalsize",
"➏": "\\large\\libertineGlyph{uni277B}\\normalsize",
"➐": "\\large\\libertineGlyph{uni277C}\\normalsize",
"➑": "\\large\\libertineGlyph{uni277D}\\normalsize",
"➒": "\\large\\libertineGlyph{uni277E}\\normalsize",
"➓": "\\large\\libertineGlyph{uni277F}\\normalsize",
"⓫": "\\large\\libertineGlyph{uni24EB}\\normalsize",
"⓬": "\\large\\libertineGlyph{uni24EC}\\normalsize",
"⓭": "\\large\\libertineGlyph{uni24ED}\\normalsize",
"⓮": "\\large\\libertineGlyph{uni24EE}\\normalsize",
"⓯": "\\large\\libertineGlyph{uni24EF}\\normalsize",
"⓰": "\\large\\libertineGlyph{uni24F0}\\normalsize",
"⓱": "\\large\\libertineGlyph{uni24F1}\\normalsize",
"⓲": "\\large\\libertineGlyph{uni24F2}\\normalsize",
"⓳": "\\large\\libertineGlyph{uni24F3}\\normalsize",
"⓴": "\\large\\libertineGlyph{uni24F4}\\normalsize",
}
for k, v := range circleMap {
content = strings.Replace(content, k, v, -1)
}
return content
}
func replaceKbd(content string) string {
regEx := regexp.MustCompile(`(?P<match><kbd[^>]*>(?P<key>[^<]*)</kbd>)`)
matches := regEx.FindAllStringSubmatch(content, -1)
if matches == nil {
return content
}
for _, match := range matches {
result := make(map[string]string)
for i, name := range regEx.SubexpNames() {
if i != 0 && name != "" {
result[name] = match[i]
}
}
r, ok := kbdMapping[strings.ToLower(result["key"])]
if !ok {
runes := []rune(result["key"])
for _, k := range runes {
h := strings.ToUpper(fmt.Sprintf("uni%04x", k))
r += fmt.Sprintf("\\biolinumKeyGlyph{%s}", h)
}
}
content = strings.Replace(content, result["match"], r, -1)
}
return content
}