}
}
-sub OLD_delete_selected_tokens {
-
- my ( $line_obj, $ridel, $new_list_ok ) = @_;
-
- # uses no Global symbols
-
- # $line_obj is the line to be modified
- # $ridel is a ref to list of indexes to be deleted
- # $new_list_ok is flag giving permission to convert non-list to list
-
- # remove an unused alignment token(s) to improve alignment chances
-
- return unless ( defined($line_obj) && defined($ridel) && @{$ridel} );
-
- my $jmax_old = $line_obj->get_jmax();
- my $rfields_old = $line_obj->get_rfields();
- my $rfield_lengths_old = $line_obj->get_rfield_lengths();
- my $rpatterns_old = $line_obj->get_rpatterns();
- my $rtokens_old = $line_obj->get_rtokens();
-
- my $EXPLAIN = 0;
-
- local $" = '> <';
- $EXPLAIN && print <<EOM;
-delete indexes: <@{$ridel}>
-old jmax: $jmax_old
-old tokens: <@{$rtokens_old}>
-old patterns: <@{$rpatterns_old}>
-old fields: <@{$rfields_old}>
-old field_lengths: <@{$rfield_lengths_old}>
-EOM
-
- my $rfields_new = [];
- my $rpatterns_new = [];
- my $rtokens_new = [];
- my $rfield_lengths_new = [];
-
- my $kmax = @{$ridel} - 1;
- my $k = 0;
- my $jdel_next = $ridel->[$k];
-
- if ( $jdel_next < 0 ) { return } # shouldnt happen
- my $pattern = $rpatterns_old->[0];
- my $field = $rfields_old->[0];
- my $field_length = $rfield_lengths_old->[0];
- push @{$rfields_new}, $field;
- push @{$rfield_lengths_new}, $field_length;
- push @{$rpatterns_new}, $pattern;
-
- for ( my $j = 0 ; $j < $jmax_old ; $j++ ) {
- my $token = $rtokens_old->[$j];
- my $field = $rfields_old->[ $j + 1 ];
- my $field_length = $rfield_lengths_old->[ $j + 1 ];
- my $pattern = $rpatterns_old->[ $j + 1 ];
- if ( $k > $kmax || $j < $jdel_next ) {
- push @{$rtokens_new}, $token;
- push @{$rfields_new}, $field;
- push @{$rpatterns_new}, $pattern;
- push @{$rfield_lengths_new}, $field_length;
- }
- elsif ( $j == $jdel_next ) {
- $rfields_new->[-1] .= $field;
- $rfield_lengths_new->[-1] += $field_length;
- $rpatterns_new->[-1] .= $pattern;
- if ( ++$k <= $kmax ) {
- my $jdel_last = $jdel_next;
- $jdel_next = $ridel->[$k];
- if ( $jdel_next < $jdel_last ) {
-
- # FIXME:
- print STDERR "bad jdel_next=$jdel_next\n";
- return;
- }
- }
- }
- }
-
- # ----- x ------ x ------ x ------
- #t 0 1 2 <- token indexing
- #f 0 1 2 3 <- field and pattern
-
- my $jmax_new = @{$rfields_new} - 1;
- $line_obj->set_rtokens($rtokens_new);
- $line_obj->set_rpatterns($rpatterns_new);
- $line_obj->set_rfields($rfields_new);
- $line_obj->set_rfield_lengths($rfield_lengths_new);
- $line_obj->set_jmax($jmax_new);
-
- # update list type based on new leading token
- my $old_list_type = $line_obj->get_list_type();
- my $new_list_type = "";
- if ( $rtokens_new->[0] =~ /^(=>|,)/ ) {
- $new_list_type = $rtokens_new->[0];
- }
-
- # An existing list will still be a list but with possibly different leading
- # token
- if ($old_list_type) {
- if ( $old_list_type ne $new_list_type ) {
- $line_obj->set_list_type($new_list_type);
- }
- }
-
- # A non-list line could become a list if all non-list tokens have been
- # deleted. But only do this if the "new_list_ok" flag is set. The following
- # two-line snippet shows an example of unwanted => alignement which can
- # occur if we promote lines to be lists without permission:
- # $w1->bin( $xc, $yc, { Panel => 3 } );
- # $w1->env( 0, 1, 0, 1, { Axis => 'Box' } );
- elsif ( $new_list_type && $new_list_ok ) {
- my ( $raw_tok, $lev, $tag, $tok_count ) =
- decode_alignment_token($new_list_type);
-
- # But for lines with leading commas, we will require that they be
- # tagged before converting a line from non-list to a list.
- if ($tag) {
- for ( my $i = 1 ; $i < @{$rtokens_new} - 1 ; $i++ ) {
- if ( $rtokens_new->[$i] !~ /^(,|=>)/ ) {
- $new_list_type = "";
- last;
- }
- }
- $line_obj->set_list_type($new_list_type) if ($new_list_type);
- }
- }
-
- $EXPLAIN && print <<EOM;
-
-new jmax: $jmax_new
-new tokens: <@{$rtokens_new}>
-new patterns: <@{$rpatterns_new}>
-new fields: <@{$rfields_new}>
-EOM
- return;
-}
-
sub delete_selected_tokens {
my ( $line_obj, $ridel, $new_list_ok ) = @_;