diff options
| author | Teddy Wing | 2021-08-19 21:43:12 +0200 | 
|---|---|---|
| committer | Teddy Wing | 2021-08-19 21:43:12 +0200 | 
| commit | aff27d201c023747cc2b99f853ecb82e4f5b609b (patch) | |
| tree | b03db29dc1ddf6dcb67b63e8c1a6242df3050016 | |
| parent | 2d6c93c03ba8a2392ff09b92bfd51fb8afe7a23c (diff) | |
| download | readline-incdec-aff27d201c023747cc2b99f853ecb82e4f5b609b.tar.bz2 | |
incdec: Get backward incrementing working in all cases
Set up the proper condition to get the start index of the number just
before point.
| -rw-r--r-- | incdec.pm | 12 | ||||
| -rw-r--r-- | t/100-increment-decrement.t | 6 | 
2 files changed, 13 insertions, 5 deletions
| @@ -13,15 +13,17 @@ sub incdec {  	my @points = ();  	my $previous_match_start = 0;  	my $previous_match_end = 0; +	print "$line\n";  	while ($line =~ /(\d+)/g) {  		if ($is_backward) { -			# print "pos[$point_position] -[$-[0]]- +[$+[0]]+\n"; +			print "pos[$point_position] -[$-[0]]- +[$+[0]]+\n"; +			print "pos[$point_position] -[$previous_match_start]- +[$previous_match_end]+\n";  			# if $point_position < $-[0]  			# && previous $+[0] <= $point_position -			# if ($previous_match_end <= $point_position && $point_position < $-[0]) { -			if ($-[0] <= $point_position && $point_position < $+[0]) { -				# print "matched"; -				$start_position = $-[0]; +			if ($previous_match_end - 1 <= $point_position && $point_position < $-[0]) { +			# if ($-[0] <= $point_position && $point_position < $+[0]) { +				print "matched at $-[0];$previous_match_end\n"; +				$start_position = $previous_match_start;  				last;  			} diff --git a/t/100-increment-decrement.t b/t/100-increment-decrement.t index 1345dfe..dd0df5c 100644 --- a/t/100-increment-decrement.t +++ b/t/100-increment-decrement.t @@ -67,4 +67,10 @@ is(  	'increments the third triple-digit integer with point at position 13 backward'  ); +is( +	incdec::incdec('test 12 19 555 64', 14, 1), +	'test 12 19 556 64', +	'increments the third triple-digit integer with point at position 14 backward' +); +  done_testing; | 
