diff options
| author | Teddy Wing | 2021-08-19 20:58:01 +0200 |
|---|---|---|
| committer | Teddy Wing | 2021-08-19 20:58:01 +0200 |
| commit | 2d6c93c03ba8a2392ff09b92bfd51fb8afe7a23c (patch) | |
| tree | 71c088f5c24a650f1f3b0c525e9f1378091e0ec3 | |
| parent | b0d5568c7c9546945471c9b95857f6666411ad87 (diff) | |
| download | readline-incdec-2d6c93c03ba8a2392ff09b92bfd51fb8afe7a23c.tar.bz2 | |
incdec: Get backward incrementing working in middle of a number
| -rw-r--r-- | incdec.pm | 19 | ||||
| -rw-r--r-- | t/100-increment-decrement.t | 6 |
2 files changed, 18 insertions, 7 deletions
@@ -12,17 +12,22 @@ sub incdec { my $start_position = 0; my @points = (); my $previous_match_start = 0; + my $previous_match_end = 0; while ($line =~ /(\d+)/g) { if ($is_backward) { - $previous_match_start = $-[0]; - + # print "pos[$point_position] -[$-[0]]- +[$+[0]]+\n"; # if $point_position < $-[0] # && previous $+[0] <= $point_position - # if ($point_position >= $-[0]) { - # $start_position = $-[0]; - # - # last; - # } + # if ($previous_match_end <= $point_position && $point_position < $-[0]) { + if ($-[0] <= $point_position && $point_position < $+[0]) { + # print "matched"; + $start_position = $-[0]; + + last; + } + + $previous_match_start = $-[0]; + $previous_match_end = $+[0]; } else { if ($point_position < $+[0]) { diff --git a/t/100-increment-decrement.t b/t/100-increment-decrement.t index b234f83..1345dfe 100644 --- a/t/100-increment-decrement.t +++ b/t/100-increment-decrement.t @@ -61,4 +61,10 @@ is( 'increments the fourth double-digit integer with point at position 16 backward' ); +is( + incdec::incdec('test 12 19 555 64', 13, 1), + 'test 12 19 556 64', + 'increments the third triple-digit integer with point at position 13 backward' +); + done_testing; |
