1
1
use std:: str:: FromStr ;
2
2
3
3
use mlua:: { ExternalError , FromLua , IntoLua , Lua , Value } ;
4
- use yazi_fs:: SortBy ;
4
+ use yazi_fs:: { SortBys , SortBy } ;
5
5
use yazi_shared:: event:: CmdCow ;
6
6
7
7
#[ derive( Debug , Default ) ]
8
8
pub struct SortOpt {
9
- pub by : Option < Vec < SortBy > > ,
9
+ pub by : Option < SortBys > ,
10
10
pub reverse : Option < bool > ,
11
11
pub dir_first : Option < bool > ,
12
12
pub sensitive : Option < bool > ,
@@ -17,9 +17,13 @@ impl TryFrom<CmdCow> for SortOpt {
17
17
type Error = anyhow:: Error ;
18
18
19
19
fn try_from ( c : CmdCow ) -> Result < Self , Self :: Error > {
20
+ let by = ( 0 ..)
21
+ . map_while ( |i| c. str ( i) )
22
+ . map ( SortBy :: from_str)
23
+ . collect :: < Result < Vec < SortBy > , _ > > ( ) ?;
24
+
20
25
Ok ( Self {
21
- // TODO(SuniRein): multiple sort by methods
22
- by : c. first_str ( ) . map ( SortBy :: from_str) . transpose ( ) ?. map ( |v| vec ! [ v] ) ,
26
+ by : if by. is_empty ( ) { None } else { Some ( SortBys ( by) ) } ,
23
27
reverse : c. maybe_bool ( "reverse" ) ,
24
28
dir_first : c. maybe_bool ( "dir-first" ) ,
25
29
sensitive : c. maybe_bool ( "sensitive" ) ,
0 commit comments