mirror of
https://github.com/kovidgoyal/kitty.git
synced 2024-09-22 03:57:30 +03:00
kitten: When guessing MIME types use a builtin list as a fallback, generated from the MIME type definitions available on the build system
This commit is contained in:
parent
16f767de7e
commit
b1934ce267
@ -562,6 +562,17 @@ def generate_readline_actions() -> str:
|
||||
''')
|
||||
|
||||
|
||||
def generate_mimetypes() -> str:
|
||||
import mimetypes
|
||||
if not mimetypes.inited:
|
||||
mimetypes.init()
|
||||
ans = ['package utils', 'import "sync"', 'var only_once sync.Once', 'var builtin_types_map map[string]string', 'func set_builtins() {', 'builtin_types_map = map[string]string{',]
|
||||
for k, v in mimetypes.types_map.items():
|
||||
ans.append(f' "{serialize_as_go_string(k)}": "{serialize_as_go_string(v)}",')
|
||||
ans.append('}}')
|
||||
return '\n'.join(ans)
|
||||
|
||||
|
||||
def main() -> None:
|
||||
with replace_if_needed('constants_generated.go') as f:
|
||||
f.write(generate_constants())
|
||||
@ -571,6 +582,8 @@ def main() -> None:
|
||||
f.write(generate_readline_actions())
|
||||
with replace_if_needed('tools/tui/spinners_generated.go') as f:
|
||||
f.write(generate_spinners())
|
||||
with replace_if_needed('tools/utils/mimetypes_generated.go') as f:
|
||||
f.write(generate_mimetypes())
|
||||
update_completion()
|
||||
update_at_commands()
|
||||
kitten_clis()
|
||||
|
@ -6,6 +6,7 @@ import (
|
||||
"fmt"
|
||||
"mime"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
)
|
||||
|
||||
var _ = fmt.Print
|
||||
@ -14,7 +15,14 @@ func GuessMimeType(filename string) string {
|
||||
ext := filepath.Ext(filename)
|
||||
mime_with_parameters := mime.TypeByExtension(ext)
|
||||
if mime_with_parameters == "" {
|
||||
return mime_with_parameters
|
||||
only_once.Do(set_builtins)
|
||||
mime_with_parameters = builtin_types_map[ext]
|
||||
if mime_with_parameters == "" {
|
||||
mime_with_parameters = builtin_types_map[strings.ToLower(ext)]
|
||||
if mime_with_parameters == "" {
|
||||
return ""
|
||||
}
|
||||
}
|
||||
}
|
||||
ans, _, err := mime.ParseMediaType(mime_with_parameters)
|
||||
if err != nil {
|
||||
|
Loading…
Reference in New Issue
Block a user