80 lines
1.3 KiB
Go
80 lines
1.3 KiB
Go
|
package src
|
||
|
|
||
|
import "strings"
|
||
|
|
||
|
// SortMode struct - sort mode
|
||
|
type SortMode struct {
|
||
|
mode string
|
||
|
}
|
||
|
|
||
|
// Default - sort mode
|
||
|
func (m *SortMode) Default() *SortMode {
|
||
|
return &SortMode{
|
||
|
mode: "",
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// ByName - sort mode
|
||
|
func (m *SortMode) ByName() *SortMode {
|
||
|
return &SortMode{
|
||
|
mode: "name",
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// ByPath - sort mode
|
||
|
func (m *SortMode) ByPath() *SortMode {
|
||
|
return &SortMode{
|
||
|
mode: "path",
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// ByCreated - sort mode
|
||
|
func (m *SortMode) ByCreated() *SortMode {
|
||
|
return &SortMode{
|
||
|
mode: "created",
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// ByModified - sort mode
|
||
|
func (m *SortMode) ByModified() *SortMode {
|
||
|
return &SortMode{
|
||
|
mode: "modified",
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// BySize - sort mode
|
||
|
func (m *SortMode) BySize() *SortMode {
|
||
|
return &SortMode{
|
||
|
mode: "size",
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Reverse - sort mode
|
||
|
func (m *SortMode) Reverse() *SortMode {
|
||
|
if strings.HasPrefix(m.mode, "-") {
|
||
|
return &SortMode{
|
||
|
mode: m.mode[1:],
|
||
|
}
|
||
|
}
|
||
|
return &SortMode{
|
||
|
mode: "-" + m.mode,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (m *SortMode) String() string {
|
||
|
return m.mode
|
||
|
}
|
||
|
|
||
|
// UnmarshalJSON sort mode
|
||
|
func (m *SortMode) UnmarshalJSON(value []byte) error {
|
||
|
if value == nil || len(value) == 0 {
|
||
|
m.mode = ""
|
||
|
return nil
|
||
|
}
|
||
|
m.mode = string(value)
|
||
|
if strings.HasPrefix(m.mode, "\"") && strings.HasSuffix(m.mode, "\"") {
|
||
|
m.mode = m.mode[1 : len(m.mode)-1]
|
||
|
}
|
||
|
return nil
|
||
|
}
|