func (matcher *Matcher) Abbreviate(word string) string {
	return (*matcher).Match(word)
}
Abbreviate returns an abbreviation looked up from pre-defined mappings
package domain
import (
	"fmt"
	"sort"
	"strings"
)
type Abbreviator interface {
	Abbreviate(word string) string
}
type NoAbbreviator struct{}
func (a *NoAbbreviator) Abbreviate(word string) string {
	return word
}
type Matcher struct {
	mainWords, prefixes, suffixes map[string]string
}
func NewMatcher(mainWords, prefixes, suffixes map[string]string) *Matcher {
	return &Matcher{
		mainWords: mainWords,
		prefixes:  prefixes,
		suffixes:  suffixes,
	}
}