in src/common/trie/trie.go [81:113]
func (t *Trie) Match(s string) bool {
n := t.root
i := 0
runes := []rune(s)
for ; i < len(runes); i++ {
m, ok := n.nodes['*']
if ok {
for ; i < len(runes) && runes[i] != ' '; i++ {
}
if i == len(runes) {
return true
}
i--
n = m
} else {
r := runes[i]
if m, ok := n.nodes[r]; ok {
n = m
} else {
return false
}
}
}
if len(n.nodes) == 0 || n.end {
return true
}
if _, ok := n.nodes[' ']; ok {
return true
}
_, ok := n.nodes['*']
return ok
}