package cleaner

import (
	"regexp"
	"strings"
)

var (
	replaceMap = map[string]string{
		"a": "а",
		"e": "е",
		"o": "о",
		"c": "с",
		"p": "р",
		"x": "х",
		"y": "у",
		"k": "к",
		"m": "м",
		"t": "т",
		"h": "н",
		"b": "в",
		"u": "и",
	}
	re = regexp.MustCompile(`\(\[[a-zA-Zа-яА-Я\d-]+\]\)`)
)

type service struct{}

func NewCleaner() ICleaner {
	return &service{}
}

func (s *service) ClearCode(code string) string {
	code = strings.TrimPrefix(code, "(")
	code = strings.TrimPrefix(code, "[")
	code = strings.TrimSuffix(code, ")")
	code = strings.TrimSuffix(code, "]")
	code = strings.ToLower(code)
	code = strings.TrimSpace(code)
	code = strings.ReplaceAll(code, "-", "")
	for latin, cyrillic := range replaceMap {
		code = strings.ReplaceAll(code, latin, cyrillic)
	}
	return code
}

func (s *service) ClearText(text string) string {
	return strings.TrimSpace(re.ReplaceAllString(text, ""))
}
