mysql.go

 1package lexers
 2
 3import (
 4	"regexp"
 5)
 6
 7var (
 8	mysqlAnalyserNameBetweenBacktickRe = regexp.MustCompile("`[a-zA-Z_]\\w*`")
 9	mysqlAnalyserNameBetweenBracketRe  = regexp.MustCompile(`\[[a-zA-Z_]\w*\]`)
10)
11
12func init() { // nolint: gochecknoinits
13	Get("mysql").
14		SetAnalyser(func(text string) float32 {
15			nameBetweenBacktickCount := len(mysqlAnalyserNameBetweenBacktickRe.FindAllString(text, -1))
16			nameBetweenBracketCount := len(mysqlAnalyserNameBetweenBracketRe.FindAllString(text, -1))
17
18			var result float32
19
20			// Same logic as above in the TSQL analysis.
21			dialectNameCount := nameBetweenBacktickCount + nameBetweenBracketCount
22			if dialectNameCount >= 1 && nameBetweenBacktickCount >= (2*nameBetweenBracketCount) {
23				// Found at least twice as many `name` as [name].
24				result += 0.5
25			} else if nameBetweenBacktickCount > nameBetweenBracketCount {
26				result += 0.2
27			} else if nameBetweenBacktickCount > 0 {
28				result += 0.1
29			}
30
31			return result
32		})
33}