all repos — emoji @ 84a0a67371e0847129343a1165bdd41e95f5b49d

A minimalistic emoji package for Go (golang)

internal/generator/strutil.go (view raw)

  1package main
  2
  3import (
  4	"regexp"
  5	"strings"
  6)
  7
  8var (
  9	nonAlphaNumRegex = regexp.MustCompile(`[^\w\d]+`)
 10	whitespaceRegex  = regexp.MustCompile(`\s+`)
 11
 12	changes = map[string]string{
 13		"*":    "asterisk",
 14		"#":    "hash",
 15		"1st":  "first",
 16		"2nd":  "second",
 17		"3rd":  "third",
 18		"&":    "and",
 19		"U.S.": "US",
 20		"Š":    "S",
 21		"š":    "s",
 22		"Đ":    "Dj",
 23		"đ":    "dj",
 24		"Ž":    "Z",
 25		"ž":    "z",
 26		"Č":    "C",
 27		"č":    "c",
 28		"Ć":    "C",
 29		"ć":    "c",
 30		"À":    "A",
 31		"Á":    "A",
 32		"Â":    "A",
 33		"Ã":    "A",
 34		"Ä":    "A",
 35		"Å":    "A",
 36		"Æ":    "A",
 37		"Ç":    "C",
 38		"È":    "E",
 39		"É":    "E",
 40		"Ê":    "E",
 41		"Ë":    "E",
 42		"Ì":    "I",
 43		"Í":    "I",
 44		"Î":    "I",
 45		"Ï":    "I",
 46		"Ñ":    "N",
 47		"Ò":    "O",
 48		"Ó":    "O",
 49		"Ô":    "O",
 50		"Õ":    "O",
 51		"Ö":    "O",
 52		"Ø":    "O",
 53		"Ù":    "U",
 54		"Ú":    "U",
 55		"Û":    "U",
 56		"Ü":    "U",
 57		"Ý":    "Y",
 58		"Þ":    "B",
 59		"ß":    "Ss",
 60		"à":    "a",
 61		"á":    "a",
 62		"â":    "a",
 63		"ã":    "a",
 64		"ä":    "a",
 65		"å":    "a",
 66		"æ":    "a",
 67		"ç":    "c",
 68		"è":    "e",
 69		"é":    "e",
 70		"ê":    "e",
 71		"ë":    "e",
 72		"ì":    "i",
 73		"í":    "i",
 74		"î":    "i",
 75		"ï":    "i",
 76		"ð":    "o",
 77		"ñ":    "n",
 78		"ò":    "o",
 79		"ó":    "o",
 80		"ô":    "o",
 81		"õ":    "o",
 82		"ö":    "o",
 83		"ø":    "o",
 84		"ù":    "u",
 85		"ú":    "u",
 86		"û":    "u",
 87		"ý":    "y",
 88		"þ":    "b",
 89		"ÿ":    "y",
 90		"Ŕ":    "R",
 91		"ŕ":    "r",
 92	}
 93)
 94
 95// clean makes string more cleaner.
 96// It changes non-latin letters with latin version.
 97// It removes non–alpha-numeric characters.
 98func clean(str string) string {
 99	for o, n := range changes {
100		str = strings.ReplaceAll(str, o, n)
101	}
102
103	str = nonAlphaNumRegex.ReplaceAllString(str, " ")
104
105	return str
106}
107
108// removeSpaces removes consecutive whitespaces.
109func removeSpaces(str string) string {
110	return whitespaceRegex.ReplaceAllString(str, "")
111}