Skip to content
Snippets Groups Projects
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
	
}