@@ -656,10 +656,7 @@ mod tests {
656656 fn test_escaped_pipe ( ) {
657657 let input = "foo|bar" ;
658658 // Replace pipe with dash
659- assert_eq ! (
660- process( input, r"{replace:s/\|/-/}" ) . unwrap( ) ,
661- "foo-bar"
662- ) ;
659+ assert_eq ! ( process( input, r"{replace:s/\|/-/}" ) . unwrap( ) , "foo-bar" ) ;
663660 // Replace with escaped pipe in replacement
664661 assert_eq ! (
665662 process( input, r"{replace:s/\|/\\\|/}" ) . unwrap( ) ,
@@ -676,15 +673,9 @@ mod tests {
676673 fn test_escaped_pipe_in_args ( ) {
677674 let input = "a|b|c" ;
678675 // Split by pipe and join with dash
679- assert_eq ! (
680- process( input, r"{split:\|:..|join:-}" ) . unwrap( ) ,
681- "a-b-c"
682- ) ;
676+ assert_eq ! ( process( input, r"{split:\|:..|join:-}" ) . unwrap( ) , "a-b-c" ) ;
683677 // Split by pipe and join with pipe
684- assert_eq ! (
685- process( input, r"{split:\|:..|join:\|}" ) . unwrap( ) ,
686- "a|b|c"
687- ) ;
678+ assert_eq ! ( process( input, r"{split:\|:..|join:\|}" ) . unwrap( ) , "a|b|c" ) ;
688679 // Split by pipe and append/prepend with pipes
689680 assert_eq ! (
690681 process( input, r"{split:\|:..|append:\|y|join:,}" ) . unwrap( ) ,
@@ -806,4 +797,36 @@ mod tests {
806797 "A-B-C"
807798 ) ;
808799 }
800+
801+ #[ test]
802+ fn test_shorthand_index ( ) {
803+ let input = "a b c d e" ;
804+ // Test shorthand index
805+ assert_eq ! ( process( input, "{1}" ) . unwrap( ) , "b" ) ;
806+ assert_eq ! ( process( input, "{-1}" ) . unwrap( ) , "e" ) ;
807+ assert_eq ! ( process( input, "{0}" ) . unwrap( ) , "a" ) ;
808+
809+ // Test shorthand ranges
810+ assert_eq ! ( process( input, "{1..3}" ) . unwrap( ) , "b c" ) ;
811+ assert_eq ! ( process( input, "{1..=3}" ) . unwrap( ) , "b c d" ) ;
812+ assert_eq ! ( process( input, "{..2}" ) . unwrap( ) , "a b" ) ;
813+ assert_eq ! ( process( input, "{2..}" ) . unwrap( ) , "c d e" ) ;
814+ assert_eq ! ( process( input, "{..=2}" ) . unwrap( ) , "a b c" ) ;
815+ assert_eq ! ( process( input, "{..}" ) . unwrap( ) , "a b c d e" ) ;
816+ assert_eq ! ( process( input, "{-2..}" ) . unwrap( ) , "d e" ) ;
817+ assert_eq ! ( process( input, "{-3..-1}" ) . unwrap( ) , "c d" ) ;
818+ assert_eq ! ( process( input, "{-3..=-1}" ) . unwrap( ) , "c d e" ) ;
819+
820+ // Test with empty input
821+ assert_eq ! ( process( "" , "{1}" ) . unwrap( ) , "" ) ;
822+ assert_eq ! ( process( "" , "{1..3}" ) . unwrap( ) , "" ) ;
823+ assert_eq ! ( process( "" , "{..}" ) . unwrap( ) , "" ) ;
824+
825+ // Test with single word
826+ assert_eq ! ( process( "word" , "{0}" ) . unwrap( ) , "word" ) ;
827+ assert_eq ! ( process( "word" , "{1}" ) . unwrap( ) , "word" ) ;
828+ assert_eq ! ( process( "word" , "{..}" ) . unwrap( ) , "word" ) ;
829+ assert_eq ! ( process( "word" , "{0..}" ) . unwrap( ) , "word" ) ;
830+ assert_eq ! ( process( "word" , "{..1}" ) . unwrap( ) , "word" ) ;
831+ }
809832}
0 commit comments