mirror of https://github.com/cheat/cheat.git
34 lines
968 B
Go
34 lines
968 B
Go
|
package lexers
|
||
|
|
||
|
import (
|
||
|
"regexp"
|
||
|
)
|
||
|
|
||
|
var (
|
||
|
mysqlAnalyserNameBetweenBacktickRe = regexp.MustCompile("`[a-zA-Z_]\\w*`")
|
||
|
mysqlAnalyserNameBetweenBracketRe = regexp.MustCompile(`\[[a-zA-Z_]\w*\]`)
|
||
|
)
|
||
|
|
||
|
func init() { // nolint: gochecknoinits
|
||
|
Get("mysql").
|
||
|
SetAnalyser(func(text string) float32 {
|
||
|
nameBetweenBacktickCount := len(mysqlAnalyserNameBetweenBacktickRe.FindAllString(text, -1))
|
||
|
nameBetweenBracketCount := len(mysqlAnalyserNameBetweenBracketRe.FindAllString(text, -1))
|
||
|
|
||
|
var result float32
|
||
|
|
||
|
// Same logic as above in the TSQL analysis.
|
||
|
dialectNameCount := nameBetweenBacktickCount + nameBetweenBracketCount
|
||
|
if dialectNameCount >= 1 && nameBetweenBacktickCount >= (2*nameBetweenBracketCount) {
|
||
|
// Found at least twice as many `name` as [name].
|
||
|
result += 0.5
|
||
|
} else if nameBetweenBacktickCount > nameBetweenBracketCount {
|
||
|
result += 0.2
|
||
|
} else if nameBetweenBacktickCount > 0 {
|
||
|
result += 0.1
|
||
|
}
|
||
|
|
||
|
return result
|
||
|
})
|
||
|
}
|