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}