package highlight import "strings" type Syntax struct { FileType string FileMatch []string Flags int } // HLDB - The "database" of syntax types var HLDB = []*Syntax{{ "c", []string{".c", ".h", ".cpp"}, HighlightNumbers, }, { "go", []string{".go", "go.mod"}, HighlightNumbers, }, { "makefile", []string{"Makefile", "makefile"}, 0, }} func GetSyntaxByFilename(filename string) *Syntax { if filename == "" { return nil } extInd := strings.LastIndex(filename, ".") ext := filename[extInd:len(filename)] for i := 0; i < len(HLDB); i++ { s := HLDB[i] for j := range s.FileMatch { if s.FileMatch[j] == ext || strings.Contains(filename, s.FileMatch[j]) { return s } } } return nil }