-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy pathsort.go
90 lines (82 loc) · 1.97 KB
/
sort.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package main
import (
"strings"
"github.com/pyed/rtapi"
)
// sort changes torrents sorting
func sort(tokens []string) {
if len(tokens) == 0 {
send(`sort takes one of:
(*name, downrate, uprate, size, ratio, age, upload*)
optionally start with (*rev*) for reversed order
e.g. "*sort rev size*" to get biggest torrents first.`, true)
return
}
var reversed bool
if strings.ToLower(tokens[0]) == "rev" &&
len(tokens) > 1 {
reversed = true
tokens = tokens[1:]
}
switch strings.ToLower(tokens[0]) {
case "name":
if reversed {
rtapi.CurrentSorting = rtapi.ByNameRev
send("sort: by `reversed name`", true)
break
}
rtapi.CurrentSorting = rtapi.ByName
send("sort: by `name`", true)
case "downrate":
if reversed {
rtapi.CurrentSorting = rtapi.ByDownRateRev
send("sort: by `reversed down rate`", true)
break
}
rtapi.CurrentSorting = rtapi.ByDownRate
send("sort: by `down rate`", true)
case "uprate":
if reversed {
rtapi.CurrentSorting = rtapi.ByUpRateRev
send("sort: by `reversed up rate`", true)
break
}
rtapi.CurrentSorting = rtapi.ByUpRate
send("sort: by `up rate`", true)
case "size":
if reversed {
rtapi.CurrentSorting = rtapi.BySizeRev
send("sort: by `reversed size`", true)
break
}
rtapi.CurrentSorting = rtapi.BySize
send("sort: by `size`", true)
case "ratio":
if reversed {
rtapi.CurrentSorting = rtapi.ByRatioRev
send("sort: by `reversed ratio`", true)
break
}
rtapi.CurrentSorting = rtapi.ByRatio
send("sort: by `ratio`", true)
case "age":
if reversed {
rtapi.CurrentSorting = rtapi.ByAgeRev
send("sort: by `reversed age`", true)
break
}
rtapi.CurrentSorting = rtapi.ByAge
send("sort: by `age`", true)
case "upload":
if reversed {
rtapi.CurrentSorting = rtapi.ByUpTotalRev
send("sort: by `reversed up total`", true)
break
}
rtapi.CurrentSorting = rtapi.ByUpTotal
send("sort: by `up total`", true)
default:
send("unkown sorting method", false)
return
}
}