a59885cede
Signed-off-by: Michael Mayer <michael@photoprism.app>
70 lines
1.5 KiB
Go
70 lines
1.5 KiB
Go
package fs
|
|
|
|
import (
|
|
"path/filepath"
|
|
"strings"
|
|
)
|
|
|
|
const (
|
|
ExtJPEG = ".jpg"
|
|
ExtPNG = ".png"
|
|
ExtDNG = ".dng"
|
|
ExtTHM = ".thm"
|
|
ExtAVC = ".avc"
|
|
ExtHEVC = ".hevc"
|
|
ExtMP4 = ".mp4"
|
|
ExtYAML = ".yml"
|
|
)
|
|
|
|
// Ext returns all extension of a file name including the dots.
|
|
func Ext(name string) string {
|
|
ext := filepath.Ext(name)
|
|
name = StripExt(name)
|
|
|
|
if Extensions.Known(name) {
|
|
ext = filepath.Ext(name) + ext
|
|
}
|
|
|
|
return ext
|
|
}
|
|
|
|
// NormalizedExt returns the file extension without dot and in lowercase.
|
|
func NormalizedExt(fileName string) string {
|
|
if dot := strings.LastIndex(fileName, "."); dot != -1 && len(fileName[dot+1:]) >= 1 {
|
|
return strings.ToLower(fileName[dot+1:])
|
|
}
|
|
|
|
return ""
|
|
}
|
|
|
|
// LowerExt returns the file name extension with dot in lower case.
|
|
func LowerExt(fileName string) string {
|
|
if fileName == "" {
|
|
return ""
|
|
}
|
|
|
|
return strings.ToLower(filepath.Ext(fileName))
|
|
}
|
|
|
|
// TrimExt removes unwanted characters from file extension strings, and makes it lowercase for comparison.
|
|
func TrimExt(ext string) string {
|
|
return strings.ToLower(strings.Trim(ext, " .,;:“”'`\""))
|
|
}
|
|
|
|
// StripExt removes the file type extension from a file name (if any).
|
|
func StripExt(name string) string {
|
|
if end := strings.LastIndex(name, "."); end != -1 {
|
|
name = name[:end]
|
|
}
|
|
|
|
return name
|
|
}
|
|
|
|
// StripKnownExt removes all known file type extension from a file name (if any).
|
|
func StripKnownExt(name string) string {
|
|
for Extensions.Known(name) {
|
|
name = StripExt(name)
|
|
}
|
|
|
|
return name
|
|
}
|