66
|
1 package lexers
|
|
2
|
|
3 import (
|
|
4 "regexp"
|
|
5 )
|
|
6
|
|
7 var (
|
|
8 mysqlAnalyserNameBetweenBacktickRe = regexp.MustCompile("`[a-zA-Z_]\\w*`")
|
|
9 mysqlAnalyserNameBetweenBracketRe = regexp.MustCompile(`\[[a-zA-Z_]\w*\]`)
|
|
10 )
|
|
11
|
|
12 func 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 }
|