Commit | Line | Data |
---|---|---|
55131db4 | 1 | package DX::Step::Backtrack; |
2 | ||
3 | use DX::Class; | |
4 | ||
5 | with 'DX::Role::Step'; | |
6 | ||
7 | sub apply_to { | |
8 | my ($self, $ss) = @_; | |
5b6cab1b | 9 | trace backtrack => [ statement => [ [ symbol => 'backtrack' ] ] ]; |
76329453 | 10 | foreach my $adj (@{$ss->adjustments_made}) { |
11 | my ($step_was, $ss_was) = @$adj; | |
12 | if (my $alt = $step_was->alternative_step) { | |
13 | return $ss_was->but(next_step => $alt); | |
14 | } | |
15 | } | |
16 | return $ss->but(next_step => $ss->on_exhaustion_step); | |
55131db4 | 17 | } |
18 | ||
19 | 1; |