summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorJunegunn Choi <junegunn.c@gmail.com>2025-02-09 11:53:35 +0900
committerJunegunn Choi <junegunn.c@gmail.com>2025-02-09 11:53:35 +0900
commit2b584586ed1caf15429625da981575ee35d407b8 (patch)
tree6a4458be6e685f944214dc4c243234b7b8065cd7 /test
parenta1994ff0abb48dfe4c6951ad67e837f4c767cc39 (diff)
downloadfzf-2b584586ed1caf15429625da981575ee35d407b8.tar.gz
Add --accept-nth option to transform the output
This option can be used to replace a sed or awk in the post-processing step. ps -ef | fzf --multi --header-lines 1 | awk '{print $2}' ps -ef | fzf --multi --header-lines 1 --accept-nth 2 This may not be a very "Unix-y" thing to do, so I've always felt that fzf shouldn't have such an option, but I've finally changed my mind because: * fzf can be configured with a custom delimiter that is a fixed string or a regular expression. * In such cases, you'd need to repeat the delimiter again in the post-processing step. * Also, tools like awk or sed may interpret a regular expression differently, causing mismatches. You can still use sed, cut, or awk if you prefer. Close #3987 Close #1323
Diffstat (limited to 'test')
-rw-r--r--test/test_core.rb26
1 files changed, 26 insertions, 0 deletions
diff --git a/test/test_core.rb b/test/test_core.rb
index 276fa03d..e15ab8ee 100644
--- a/test/test_core.rb
+++ b/test/test_core.rb
@@ -1665,4 +1665,30 @@ class TestCore < TestInteractive
assert_equal '', File.read(tempname).chomp
end
end
+
+ def test_accept_nth
+ tmux.send_keys %((echo "foo bar baz"; echo "bar baz foo") | #{FZF} --multi --accept-nth 2,2 --sync --bind start:select-all+accept > #{tempname}), :Enter
+ wait do
+ assert_path_exists tempname
+ assert_equal ['bar bar', 'baz baz'], File.readlines(tempname, chomp: true)
+ end
+ end
+
+ def test_accept_nth_string_delimiter
+ tmux.send_keys %(echo "foo ,bar,baz" | #{FZF} -d, --accept-nth 2,2,1,3,1 --sync --bind start:accept > #{tempname}), :Enter
+ wait do
+ assert_path_exists tempname
+ # Last delimiter and the whitespaces are removed
+ assert_equal ['bar,bar,foo ,bazfoo'], File.readlines(tempname, chomp: true)
+ end
+ end
+
+ def test_accept_nth_regex_delimiter
+ tmux.send_keys %(echo "foo :,:bar,baz" | #{FZF} --delimiter='[:,]+' --accept-nth 2,2,1,3,1 --sync --bind start:accept > #{tempname}), :Enter
+ wait do
+ assert_path_exists tempname
+ # Last delimiter and the whitespaces are removed
+ assert_equal ['bar,bar,foo :,:bazfoo'], File.readlines(tempname, chomp: true)
+ end
+ end
end