ebba1e4e02
7 funciones Go del dominio tui: apply_gradient (gradiente de color en texto), draw_box y draw_separator (renderizado de cajas y separadores con box_chars), load_ascii_art (carga de arte ASCII desde archivos), normalize_terminal_output y strip_ansi (limpieza de salida de terminal), read_dir_autocomplete (autocompletado de rutas de directorio). Incluye box_chars.go como helper de caracteres Unicode para bordes.
33 lines
896 B
Go
33 lines
896 B
Go
package tui
|
|
|
|
import (
|
|
"os"
|
|
"sort"
|
|
"strings"
|
|
)
|
|
|
|
// AutocompleteCandidate represents a directory entry for path autocomplete.
|
|
type AutocompleteCandidate struct {
|
|
Name string
|
|
IsDir bool
|
|
}
|
|
|
|
// ReadDirAutocomplete reads entries from searchDir whose name starts with prefix
|
|
// (case-insensitive). Returns candidates sorted by name.
|
|
func ReadDirAutocomplete(searchDir, prefix string) ([]AutocompleteCandidate, error) {
|
|
entries, err := os.ReadDir(searchDir)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
prefixLower := strings.ToLower(prefix)
|
|
var results []AutocompleteCandidate
|
|
for _, e := range entries {
|
|
name := e.Name()
|
|
if prefix == "" || strings.HasPrefix(strings.ToLower(name), prefixLower) {
|
|
results = append(results, AutocompleteCandidate{Name: name, IsDir: e.IsDir()})
|
|
}
|
|
}
|
|
sort.Slice(results, func(i, j int) bool { return results[i].Name < results[j].Name })
|
|
return results, nil
|
|
}
|