mirror of
https://github.com/cheat/cheat.git
synced 2024-11-17 17:35:21 +01:00
1790aec85d
Bump `alecthomas/chroma` to `v2`: https://github.com/cheat/cheat/issues/735
33 lines
968 B
Go
33 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
|
|
})
|
|
}
|