54 lines
973 B
Go
54 lines
973 B
Go
package main
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
)
|
|
|
|
// LoadFile загружает содержимое файла
|
|
func LoadFile(path string) (string, error) {
|
|
data, err := os.ReadFile(path)
|
|
if err != nil {
|
|
if os.IsNotExist(err) {
|
|
return "", nil // Новый файл
|
|
}
|
|
return "", err
|
|
}
|
|
return string(data), nil
|
|
}
|
|
|
|
// DetectFileType определяет тип файла по расширению
|
|
func DetectFileType(path string) string {
|
|
ext := strings.TrimPrefix(filepath.Ext(path), ".")
|
|
ext = strings.ToLower(ext)
|
|
|
|
switch ext {
|
|
case "md", "markdown":
|
|
return "md"
|
|
case "txt":
|
|
return "txt"
|
|
case "go":
|
|
return "go"
|
|
case "py":
|
|
return "py"
|
|
case "js", "mjs", "cjs":
|
|
return "js"
|
|
case "ts", "tsx":
|
|
return "ts"
|
|
case "rs":
|
|
return "rs"
|
|
case "c", "h":
|
|
return "c"
|
|
case "cpp", "cc", "cxx", "hpp":
|
|
return "cpp"
|
|
case "java":
|
|
return "java"
|
|
case "sql":
|
|
return "sql"
|
|
case "sh", "bash":
|
|
return "sh"
|
|
default:
|
|
return "txt"
|
|
}
|
|
}
|