@@ -5,7 +5,7 @@ use yazi_fs::{CWD, path::expand_url, provider::{DirReader, FileHolder}};
55use yazi_macro:: { act, render, succ} ;
66use yazi_parser:: cmp:: { CmpItem , ShowOpt , TriggerOpt } ;
77use yazi_proxy:: CmpProxy ;
8- use yazi_shared:: { AnyAsciiChar , data:: Data , natsort, path:: { AsPath , PathBufDyn , PathLike } , scheme:: { SchemeCow , SchemeLike } , strand:: StrandBufLike , url:: { UrlBuf , UrlCow , UrlLike } } ;
8+ use yazi_shared:: { AnyAsciiChar , data:: Data , natsort, path:: { PathBufDyn , PathDyn , PathLike } , scheme:: { SchemeCow , SchemeLike } , strand:: StrandLike , url:: { UrlBuf , UrlCow , UrlLike } } ;
99use yazi_vfs:: provider;
1010
1111use crate :: { Actor , Ctx } ;
@@ -74,28 +74,25 @@ impl Trigger {
7474 }
7575
7676 let sep = if cfg ! ( windows) {
77- AnyAsciiChar :: new ( & [ b'/' , b'\\' ] ) . unwrap ( )
77+ AnyAsciiChar :: new ( b"/ \\ " ) . unwrap ( )
7878 } else {
79- AnyAsciiChar :: new ( & [ b'/' ] ) . unwrap ( )
79+ AnyAsciiChar :: new ( b"/" ) . unwrap ( )
8080 } ;
8181
82- Some ( match path. as_path ( ) . rsplit_pred ( sep) {
82+ Some ( match path. rsplit_pred ( sep) {
8383 Some ( ( p, c) ) if p. is_empty ( ) => {
84- let root = PathBufDyn :: with ( scheme. kind ( ) , MAIN_SEPARATOR_STR ) . expect ( "valid root" ) ;
84+ let root = PathDyn :: with ( scheme. kind ( ) , MAIN_SEPARATOR_STR ) . expect ( "valid root" ) ;
8585 ( UrlCow :: try_from ( ( scheme, root) ) . ok ( ) ?. into_owned ( ) , c. into ( ) )
8686 }
87- Some ( ( p, c) ) => {
88- let parent = PathBufDyn :: with ( scheme. kind ( ) , p. as_dyn ( ) ) . expect ( "valid parent" ) ;
89- ( expand_url ( UrlCow :: try_from ( ( scheme, parent) ) . ok ( ) ?) , c. into ( ) )
90- }
87+ Some ( ( p, c) ) => ( expand_url ( UrlCow :: try_from ( ( scheme, p) ) . ok ( ) ?) , c. into ( ) ) ,
9188 None => ( CWD . load ( ) . as_ref ( ) . clone ( ) , path. into ( ) ) ,
9289 } )
9390 }
9491}
9592
9693#[ cfg( test) ]
9794mod tests {
98- use yazi_shared:: { path :: PathBufLike , url:: UrlLike } ;
95+ use yazi_shared:: url:: UrlLike ;
9996
10097 use super :: * ;
10198
@@ -113,11 +110,19 @@ mod tests {
113110 yazi_fs:: init ( ) ;
114111 compare ( "" , "" , "" ) ;
115112 compare ( " " , "" , " " ) ;
113+
116114 compare ( "/" , "/" , "" ) ;
117- compare ( "//" , "//" , "" ) ;
115+ compare ( "//" , "/" , "" ) ;
116+ compare ( "///" , "/" , "" ) ;
117+
118118 compare ( "/foo" , "/" , "foo" ) ;
119+ compare ( "//foo" , "/" , "foo" ) ;
120+ compare ( "///foo" , "/" , "foo" ) ;
121+
119122 compare ( "/foo/" , "/foo/" , "" ) ;
123+ compare ( "//foo/" , "/foo/" , "" ) ;
120124 compare ( "/foo/bar" , "/foo/" , "bar" ) ;
125+ compare ( "///foo/bar" , "/foo/" , "bar" ) ;
121126 }
122127
123128 #[ cfg( windows) ]
0 commit comments