replace $match->{url} with $match->{value} which is used in handlers
authorSimon Ruderich <simon@ruderich.org>
Sat, 23 Jan 2016 23:40:04 +0000 (00:40 +0100)
committerSimon Ruderich <simon@ruderich.org>
Sat, 23 Jan 2016 23:40:04 +0000 (00:40 +0100)
$match->{string} is the matched string from the input. $match->{value}
is used in handlers and defaults to $match->{string} but may be
overwritten.

bin/fcscs

index 675b7f2f2daf33265e6b8db32cfa67e729281607..ade298a6114e57a3d8ee7a77b1fff068fc1f041d 100755 (executable)
--- a/bin/fcscs
+++ b/bin/fcscs
@@ -673,7 +673,7 @@ sub handler_yank {
     # Use a temporary file to prevent leaking the yanked data to other users
     # with the command line, e.g. ps aux or top.
     my ($fh, $tmp) = File::Temp::tempfile(); # dies on its own
-    print $fh $screen->encode($match->{string});
+    print $fh $screen->encode($match->{value});
     close $fh or die $!;
 
     if ($config->{setting}{multiplexer} eq 'screen') {
@@ -732,13 +732,9 @@ sub handler_url {
     debug $config, 'handler_url', 'started';
 
     run_in_background($config, sub {
-        my $url = defined $match->{url}
-                ? $match->{url}
-                : $match->{string};
-
         my @cmd = map { $screen->encode($_) } (
             @{$config->{setting}{browser}},
-            $url,
+            $match->{value},
         );
         run_command($config, \@cmd);
     });
@@ -990,10 +986,9 @@ Example:
     $config{handler}{url} = sub {
         my ($screen, $config, $match) = @_;
 
-        my $url = defined $match->{url} ? $match->{url} : $match->{string};
-        if ($url =~ m{^https://www.youtube.com/}) {
+        if ($match->{value} =~ m{^https://www.youtube.com/}) {
             return run_in_background($config, sub {
-                run_command($config, ['youtube-dl-wrapper', $url]);
+                run_command($config, ['youtube-dl-wrapper', $match->{value}]);
             });
         }
         handler_url(@_);
@@ -1211,6 +1206,10 @@ RESULT:
             goto RESULT; # reprocess special entries in result
         }
         if (defined $result->{match}) {
+            if (not defined $result->{match}->{value}) {
+                $result->{match}->{value} = $result->{match}->{string};
+            }
+
             debug \%config, 'input', 'running handler';
             my $handler = $config{state}{handler};                 # set by user
             $handler = $result->{handler} unless defined $handler; # set by mapping