X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=lib%2FLaTeX%2FTikZ%2FFunctor%2FRule.pm;h=0962e90b9aa8ecbda60e647c36f149ee2c7ecc73;hb=319c48d4562198fc1667447e685b92645f4c98ae;hp=15cc4899600a2b58491fe7db5cbe8f07250fff4d;hpb=2f8d25c7ced8c8bc43802025240ab7d673892f5d;p=perl%2Fmodules%2FLaTeX-TikZ.git diff --git a/lib/LaTeX/TikZ/Functor/Rule.pm b/lib/LaTeX/TikZ/Functor/Rule.pm index 15cc489..0962e90 100644 --- a/lib/LaTeX/TikZ/Functor/Rule.pm +++ b/lib/LaTeX/TikZ/Functor/Rule.pm @@ -9,11 +9,11 @@ LaTeX::TikZ::Functor::Rule - An object that specifies how functors should handle =head1 VERSION -Version 0.01 +Version 0.02 =cut -our $VERSION = '0.01'; +our $VERSION = '0.02'; =head1 DESCRIPTION @@ -140,32 +140,30 @@ sub insert { my $overwrite = $args{overwrite}; my $replace = $args{replace}; - my $target = $rule->target; - my $is_role = $rule->is_role; - if ($replace) { - my @remove; + my (@remove, $replaced); for my $i (0 .. $#$list) { my $old_target = $list->[$i]->target; if ($rule->handles($old_target)) { - if (defined $rule) { - splice @$list, $i, 1, $rule; - $rule = undef; - } else { + if ($replaced) { push @remove, $i; + } else { + splice @$list, $i, 1, $rule; + $replaced = 1; } } } - my $shift; + my $shift = 0; for (@remove) { splice @$list, $_ - $shift, 1; ++$shift; } - return 1 unless defined $rule; + return 1 if $replaced; } else { # Replace only an existent rule + my $target = $rule->target; for my $i (0 .. $#$list) { my $old_target = $list->[$i]->target;