// Package sorting implements Sorting type for interactive table. package sorting import "git.burning.moe/celediel/gt/internal/files" type Sorting int const ( Name Sorting = iota + 1 NameReverse Date DateReverse Path PathReverse Size SizeReverse Extension ExtensionReverse Directory DirectoryReverse ) func (s Sorting) Next() Sorting { switch s { case DirectoryReverse: return Name default: return s + 1 } } func (s Sorting) Prev() Sorting { switch s { case Name: return DirectoryReverse default: return s - 1 } } func (s Sorting) String() string { switch s { case Name: return "name ↑" case NameReverse: return "name ↓" case Date: return "date ↑" case DateReverse: return "date ↓" case Path: return "path ↑" case PathReverse: return "path ↓" case Size: return "size ↑" case SizeReverse: return "size ↓" case Extension: return "extension ↑" case ExtensionReverse: return "extension ↓" case Directory: return "directories ↑" case DirectoryReverse: return "directories ↓" default: return "0" } } func (s Sorting) Sorter() func(a, b files.File) int { switch s { case Name: return files.SortByName case NameReverse: return files.SortByNameReverse case Date: return files.SortByModified case DateReverse: return files.SortByModifiedReverse case Path: return files.SortByPath case PathReverse: return files.SortByPathReverse case Size: return files.SortBySize case SizeReverse: return files.SortBySizeReverse case Extension: return files.SortByExtension case ExtensionReverse: return files.SortByExtensionReverse case Directory: return files.SortDirectoriesFirst case DirectoryReverse: return files.SortDirectoriesLast default: return files.SortByName } }