# Array index names for variables
my $i = 0;
use constant {
- _line_sink_object_ => $i++,
- _logger_object_ => $i++,
- _rOpts_ => $i++,
- _output_line_number_ => $i++,
- _consecutive_blank_lines_ => $i++,
- _consecutive_nonblank_lines_ => $i++,
- _first_line_length_error_ => $i++,
- _max_line_length_error_ => $i++,
- _last_line_length_error_ => $i++,
- _first_line_length_error_at_ => $i++,
- _max_line_length_error_at_ => $i++,
- _last_line_length_error_at_ => $i++,
- _line_length_error_count_ => $i++,
- _max_output_line_length_ => $i++,
- _max_output_line_length_at_ => $i++,
- _rK_checklist_ => $i++,
- _K_arrival_order_matches_ => $i++,
- _K_sequence_error_msg_ => $i++,
- _K_last_arrival_ => $i++,
+ _line_sink_object_ => $i++,
+ _logger_object_ => $i++,
+ _rOpts_ => $i++,
+ _output_line_number_ => $i++,
+ _consecutive_blank_lines_ => $i++,
+ _consecutive_nonblank_lines_ => $i++,
+ _consecutive_new_blank_lines_ => $i++,
+ _first_line_length_error_ => $i++,
+ _max_line_length_error_ => $i++,
+ _last_line_length_error_ => $i++,
+ _first_line_length_error_at_ => $i++,
+ _max_line_length_error_at_ => $i++,
+ _last_line_length_error_at_ => $i++,
+ _line_length_error_count_ => $i++,
+ _max_output_line_length_ => $i++,
+ _max_output_line_length_at_ => $i++,
+ _rK_checklist_ => $i++,
+ _K_arrival_order_matches_ => $i++,
+ _K_sequence_error_msg_ => $i++,
+ _K_last_arrival_ => $i++,
};
}
my ( $class, $line_sink_object, $rOpts, $logger_object ) = @_;
my $self = [];
- $self->[_line_sink_object_] = $line_sink_object;
- $self->[_logger_object_] = $logger_object;
- $self->[_rOpts_] = $rOpts;
- $self->[_output_line_number_] = 1;
- $self->[_consecutive_blank_lines_] = 0;
- $self->[_consecutive_nonblank_lines_] = 0;
- $self->[_first_line_length_error_] = 0;
- $self->[_max_line_length_error_] = 0;
- $self->[_last_line_length_error_] = 0;
- $self->[_first_line_length_error_at_] = 0;
- $self->[_max_line_length_error_at_] = 0;
- $self->[_last_line_length_error_at_] = 0;
- $self->[_line_length_error_count_] = 0;
- $self->[_max_output_line_length_] = 0;
- $self->[_max_output_line_length_at_] = 0;
- $self->[_rK_checklist_] = [];
- $self->[_K_arrival_order_matches_] = 0;
- $self->[_K_sequence_error_msg_] = "";
- $self->[_K_last_arrival_] = -1;
+ $self->[_line_sink_object_] = $line_sink_object;
+ $self->[_logger_object_] = $logger_object;
+ $self->[_rOpts_] = $rOpts;
+ $self->[_output_line_number_] = 1;
+ $self->[_consecutive_blank_lines_] = 0;
+ $self->[_consecutive_nonblank_lines_] = 0;
+ $self->[_consecutive_new_blank_lines_] = 0;
+ $self->[_first_line_length_error_] = 0;
+ $self->[_max_line_length_error_] = 0;
+ $self->[_last_line_length_error_] = 0;
+ $self->[_first_line_length_error_at_] = 0;
+ $self->[_max_line_length_error_at_] = 0;
+ $self->[_last_line_length_error_at_] = 0;
+ $self->[_line_length_error_count_] = 0;
+ $self->[_max_output_line_length_] = 0;
+ $self->[_max_output_line_length_at_] = 0;
+ $self->[_rK_checklist_] = [];
+ $self->[_K_arrival_order_matches_] = 0;
+ $self->[_K_sequence_error_msg_] = "";
+ $self->[_K_last_arrival_] = -1;
# save input stream name for local error messages
$input_stream_name = "";
return $_[0]->[_consecutive_nonblank_lines_];
}
+sub get_consecutive_blank_lines {
+ return $_[0]->[_consecutive_blank_lines_];
+}
+
sub reset_consecutive_blank_lines {
$_[0]->[_consecutive_blank_lines_] = 0;
return;
if (!$forced
&& $self->[_consecutive_blank_lines_] >=
$rOpts->{'maximum-consecutive-blank-lines'} );
- $self->[_consecutive_blank_lines_]++;
+
$self->[_consecutive_nonblank_lines_] = 0;
+
+ if ( !$forced && $self->[_consecutive_new_blank_lines_] > 0 ) {
+ $self->[_consecutive_new_blank_lines_]--;
+ return;
+ }
+
$self->write_line("\n");
+ $self->[_consecutive_blank_lines_]++;
+ $self->[_consecutive_new_blank_lines_]++ if ($forced);
+
return;
}
sub write_code_line {
my ( $self, $str, $K ) = @_;
- $self->[_consecutive_blank_lines_] = 0;
+ $self->[_consecutive_blank_lines_] = 0;
+ $self->[_consecutive_new_blank_lines_] = 0;
$self->[_consecutive_nonblank_lines_]++;
$self->write_line($str);
my $rwant_blank_line_after = $self->keyword_group_scan();
my $line_type = "";
- my $i_last_POD_END = -1;
+ my $i_last_POD_END = -10;
my $i = -1;
foreach my $line_of_tokens ( @{$rlines} ) {
$i++;
sub grind_batch_of_CODE {
my ($self) = @_;
-
my $file_writer_object = $self->[_file_writer_object_];
- my $rlines = $self->[_rlines_];
- my $this_batch = $self->[_this_batch_];
+
+ my $this_batch = $self->[_this_batch_];
$batch_count++;
my $starting_in_quote = $this_batch->[_starting_in_quote_];
# write requested number of blank lines after an opening block brace
if ( $iterm >= $imin && $types_to_go[$iterm] eq '{' ) {
- my $nblanks = $rOpts->{'blank-lines-after-opening-block'};
- if ( $nblanks
+ if ( $rOpts->{'blank-lines-after-opening-block'}
&& $block_type_to_go[$iterm]
&& $block_type_to_go[$iterm] =~
/$blank_lines_after_opening_block_pattern/ )
{
-
- if ( $nblanks > $rOpts_maximum_consecutive_blank_lines ) {
- $nblanks = $rOpts_maximum_consecutive_blank_lines;
- }
-
- # Reduce by the existing blank count .. fixes case b1073
- my $Kterm = $K_to_go[$iterm];
- my $iline = $rLL->[$Kterm]->[_LINE_INDEX_] + 1;
- while ( $nblanks > 0 ) {
- my $line_of_tokens = $rlines->[$iline];
- last unless defined($line_of_tokens);
- my $line_type = $line_of_tokens->{_line_type};
- last
- if ( $line_type ne 'CODE'
- || $line_of_tokens->{_code_type} ne 'BL' );
- $nblanks--;
- $iline++;
- }
-
- if ($nblanks) {
- $self->flush_vertical_aligner();
- $file_writer_object->require_blank_code_lines($nblanks);
- }
+ my $nblanks = $rOpts->{'blank-lines-after-opening-block'};
+ $self->flush_vertical_aligner();
+ $file_writer_object->require_blank_code_lines($nblanks);
}
}
}