| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- package highlight
- import (
- "embed"
- "fmt"
- "path/filepath"
- "strings"
- )
- //go:embed queries/*.scm
- var QueryFS embed.FS
- func GetQuery(lang string) ([]byte, error) {
- path := fmt.Sprintf("queries/%s.scm", lang)
- data, err := QueryFS.ReadFile(path)
- if err != nil {
- return nil, fmt.Errorf("no highlight query found for language %q: %w", lang, err)
- }
- return data, nil
- }
- func DetectLanguage(filePath string) string {
- ext := strings.ToLower(filepath.Ext(filePath))
- switch ext { // TODO: set this in configuration
- case ".go":
- return "go"
- case ".py":
- return "python"
- case ".rs":
- return "rust"
- case ".js", ".jsx":
- return "javascript"
- case ".ts", ".tsx":
- return "typescript"
- case ".c", ".h":
- return "c"
- case ".cpp", ".hpp", ".cc":
- return "cpp"
- case ".json":
- return "json"
- case ".lua":
- return "lua"
- default:
- return "" // Unknown/Plaintext
- }
- }
|