package protocol import "regexp" // CreateRegexMatcher Création d'une instance de RegexMatcher func CreateRegexMatcher(pattern string) *RegexMatcher { compile, err := regexp.Compile(pattern) if err != nil { return nil } return &RegexMatcher{matcher: compile} } // RegexMatcher Propose des méthodes relatives au matching de chaine de caractère type RegexMatcher struct { matcher *regexp.Regexp } // Match Permet de vérifier la validité d'une donnée affiliée à un protocole func (m RegexMatcher) Match(data string) bool { return m.matcher.MatchString(data) } // Build Permet de construire une chaine respectant une commande. Retourne la chaine et bool (TRUE si correct et FALSE si incorrect) func (m RegexMatcher) Build(cmd string, datas ...string) (string, bool) { str := cmd for _, data := range datas { str += " " + data } str += "\r\n" if m.Match(str) { return str, true } else { return "", false } } // Parse Permet de récupérer les différentes données de la chaine sur base du regex func (m RegexMatcher) Parse(data string) []string { return m.matcher.FindAllStringSubmatch(data, -1)[0] }