my $must_break_open = $last_nonblank_type[$dd] !~ /^[kwiU]$/;
$self->set_comma_breakpoints_do(
- depth => $dd,
- i_opening_paren => $opening_structure_index_stack[$dd],
- i_closing_paren => $i,
- item_count => $item_count_stack[$dd],
- identifier_count => $identifier_count_stack[$dd],
- rcomma_index => $comma_index[$dd],
- next_nonblank_type => $next_nonblank_type,
- list_type => $container_type[$dd],
- interrupted => $interrupted_list[$dd],
- rdo_not_break_apart => \$do_not_break_apart,
- must_break_open => $must_break_open,
- has_broken_sublist => $has_broken_sublist[$dd],
+ {
+ depth => $dd,
+ i_opening_paren => $opening_structure_index_stack[$dd],
+ i_closing_paren => $i,
+ item_count => $item_count_stack[$dd],
+ identifier_count => $identifier_count_stack[$dd],
+ rcomma_index => $comma_index[$dd],
+ next_nonblank_type => $next_nonblank_type,
+ list_type => $container_type[$dd],
+ interrupted => $interrupted_list[$dd],
+ rdo_not_break_apart => \$do_not_break_apart,
+ must_break_open => $must_break_open,
+ has_broken_sublist => $has_broken_sublist[$dd],
+ }
);
$bp_count = get_forced_breakpoint_count() - $fbc;
$do_not_break_apart = 0 if $must_break_open;
# Given a list with some commas, set breakpoints at some of the
# commas, if necessary, to make it easy to read.
- my ( $self, %input_hash ) = @_;
-
- my $depth = $input_hash{depth};
- my $i_opening_paren = $input_hash{i_opening_paren};
- my $i_closing_paren = $input_hash{i_closing_paren};
- my $item_count = $input_hash{item_count};
- my $identifier_count = $input_hash{identifier_count};
- my $rcomma_index = $input_hash{rcomma_index};
- my $next_nonblank_type = $input_hash{next_nonblank_type};
- my $list_type = $input_hash{list_type};
- my $interrupted = $input_hash{interrupted};
- my $rdo_not_break_apart = $input_hash{rdo_not_break_apart};
- my $must_break_open = $input_hash{must_break_open};
- my $has_broken_sublist = $input_hash{has_broken_sublist};
+ my ( $self, $rinput_hash ) = @_;
+
+ my $depth = $rinput_hash->{depth};
+ my $i_opening_paren = $rinput_hash->{i_opening_paren};
+ my $i_closing_paren = $rinput_hash->{i_closing_paren};
+ my $item_count = $rinput_hash->{item_count};
+ my $identifier_count = $rinput_hash->{identifier_count};
+ my $rcomma_index = $rinput_hash->{rcomma_index};
+ my $next_nonblank_type = $rinput_hash->{next_nonblank_type};
+ my $list_type = $rinput_hash->{list_type};
+ my $interrupted = $rinput_hash->{interrupted};
+ my $rdo_not_break_apart = $rinput_hash->{rdo_not_break_apart};
+ my $must_break_open = $rinput_hash->{must_break_open};
+ my $has_broken_sublist = $rinput_hash->{has_broken_sublist};
# nothing to do if no commas seen
return if ( $item_count < 1 );
# start just after the word 'prototype'
my $i_beg = $i + 1;
( $i, $tok, $type, $id_scan_state ) = do_scan_sub(
- input_line => $input_line,
- i => $i,
- i_beg => $i_beg,
- tok => $tok,
- type => $type,
- rtokens => $rtokens,
- rtoken_map => $rtoken_map,
- id_scan_state => $id_scan_state,
- max_token_index => $max_token_index
+ {
+ input_line => $input_line,
+ i => $i,
+ i_beg => $i_beg,
+ tok => $tok,
+ type => $type,
+ rtokens => $rtokens,
+ rtoken_map => $rtoken_map,
+ id_scan_state => $id_scan_state,
+ max_token_index => $max_token_index
+ }
);
# If successful, mark as type 'q' to be consistent with other
if ( $is_sub{$id_scan_state} ) {
( $i, $tok, $type, $id_scan_state ) = do_scan_sub(
- input_line => $input_line,
- i => $i,
- i_beg => $i_beg,
- tok => $tok,
- type => $type,
- rtokens => $rtokens,
- rtoken_map => $rtoken_map,
- id_scan_state => $id_scan_state,
- max_token_index => $max_token_index
+ {
+ input_line => $input_line,
+ i => $i,
+ i_beg => $i_beg,
+ tok => $tok,
+ type => $type,
+ rtokens => $rtokens,
+ rtoken_map => $rtoken_map,
+ id_scan_state => $id_scan_state,
+ max_token_index => $max_token_index
+ }
);
}
# $in_attribute_list, %saw_function_definition,
# $statement_type
- my %input_hash = @_;
-
- my $input_line = $input_hash{input_line};
- my $i = $input_hash{i};
- my $i_beg = $input_hash{i_beg};
- my $tok = $input_hash{tok};
- my $type = $input_hash{type};
- my $rtokens = $input_hash{rtokens};
- my $rtoken_map = $input_hash{rtoken_map};
- my $id_scan_state = $input_hash{id_scan_state};
- my $max_token_index = $input_hash{max_token_index};
+ my ($rinput_hash) = @_;
+
+ my $input_line = $rinput_hash->{input_line};
+ my $i = $rinput_hash->{i};
+ my $i_beg = $rinput_hash->{i_beg};
+ my $tok = $rinput_hash->{tok};
+ my $type = $rinput_hash->{type};
+ my $rtokens = $rinput_hash->{rtokens};
+ my $rtoken_map = $rinput_hash->{rtoken_map};
+ my $id_scan_state = $rinput_hash->{id_scan_state};
+ my $max_token_index = $rinput_hash->{max_token_index};
# Determine the CALL TYPE
# 1=sub
{
$self->valign_output_step_B(
- leading_space_count => $leading_space_count,
- line => $rfields->[0],
- line_length => $rfield_lengths->[0],
- side_comment_length => 0,
- outdent_long_lines => $outdent_long_lines,
- rvertical_tightness_flags => $rvertical_tightness_flags,
- level => $level
+ {
+ leading_space_count => $leading_space_count,
+ line => $rfields->[0],
+ line_length => $rfield_lengths->[0],
+ side_comment_length => 0,
+ outdent_long_lines => $outdent_long_lines,
+ rvertical_tightness_flags => $rvertical_tightness_flags,
+ level => $level
+ }
);
return;
# --------------------------------------------------------------------
$self->make_side_comment( $rtokens, $rfields, $rpatterns, $rfield_lengths,
$level_end );
- $jmax = @{$rfields} - 1; # TODO: move this into Line.pm
+ $jmax = @{$rfields} - 1;
# --------------------------------------------------------------------
# create an object to hold this line
# --------------------------------------------------------------------
my $new_line = Perl::Tidy::VerticalAligner::Line->new(
- jmax => $jmax,
- rtokens => $rtokens,
- rfields => $rfields,
- rpatterns => $rpatterns,
- rfield_lengths => $rfield_lengths,
- indentation => $indentation,
- leading_space_count => $leading_space_count,
- outdent_long_lines => $outdent_long_lines,
- list_type => "",
- is_hanging_side_comment => $is_hanging_side_comment,
- maximum_line_length => $maximum_line_length_for_level,
- rvertical_tightness_flags => $rvertical_tightness_flags,
- is_terminal_ternary => $is_terminal_ternary,
- j_terminal_match => $j_terminal_match,
- is_forced_break => $is_forced_break,
+ {
+ jmax => $jmax,
+ rtokens => $rtokens,
+ rfields => $rfields,
+ rpatterns => $rpatterns,
+ rfield_lengths => $rfield_lengths,
+ indentation => $indentation,
+ leading_space_count => $leading_space_count,
+ outdent_long_lines => $outdent_long_lines,
+ list_type => "",
+ is_hanging_side_comment => $is_hanging_side_comment,
+ maximum_line_length => $maximum_line_length_for_level,
+ rvertical_tightness_flags => $rvertical_tightness_flags,
+ is_terminal_ternary => $is_terminal_ternary,
+ j_terminal_match => $j_terminal_match,
+ is_forced_break => $is_forced_break,
+ }
);
# --------------------------------------------------------------------
foreach my $item ( @{$rgroup_lines} ) {
my ( $line, $line_len ) = @{$item};
$self->valign_output_step_B(
- leading_space_count => $leading_space_count,
- line => $line,
- line_length => $line_len,
- side_comment_length => 0,
- outdent_long_lines => $outdent_long_lines,
- rvertical_tightness_flags => "",
- level => $group_level,
+ {
+ leading_space_count => $leading_space_count,
+ line => $line,
+ line_length => $line_len,
+ side_comment_length => 0,
+ outdent_long_lines => $outdent_long_lines,
+ rvertical_tightness_flags => "",
+ level => $group_level,
+ }
);
}
foreach my $line ( @{$rgroup_lines} ) {
$self->valign_output_step_A(
- line => $line,
- min_ci_gap => 0,
- do_not_align => 0,
- group_leader_length => $group_leader_length,
- extra_leading_spaces => $extra_leading_spaces,
- level => $group_level,
+ {
+ line => $line,
+ min_ci_gap => 0,
+ do_not_align => 0,
+ group_leader_length => $group_leader_length,
+ extra_leading_spaces => $extra_leading_spaces,
+ level => $group_level,
+ }
);
}
# been found. Then it is shipped to the next step.
###############################################################
- my ( $self, %input_hash ) = @_;
+ my ( $self, $rinput_hash ) = @_;
- my $line = $input_hash{line};
- my $min_ci_gap = $input_hash{min_ci_gap};
- my $do_not_align = $input_hash{do_not_align};
- my $group_leader_length = $input_hash{group_leader_length};
- my $extra_leading_spaces = $input_hash{extra_leading_spaces};
- my $level = $input_hash{level};
+ my $line = $rinput_hash->{line};
+ my $min_ci_gap = $rinput_hash->{min_ci_gap};
+ my $do_not_align = $rinput_hash->{do_not_align};
+ my $group_leader_length = $rinput_hash->{group_leader_length};
+ my $extra_leading_spaces = $rinput_hash->{extra_leading_spaces};
+ my $level = $rinput_hash->{level};
my $rfields = $line->get_rfields();
my $rfield_lengths = $line->get_rfield_lengths();
# ship this line off
$self->valign_output_step_B(
- leading_space_count => $leading_space_count + $extra_leading_spaces,
- line => $str,
- line_length => $str_len,
- side_comment_length => $side_comment_length,
- outdent_long_lines => $outdent_long_lines,
- rvertical_tightness_flags => $rvertical_tightness_flags,
- level => $level,
+ {
+ leading_space_count => $leading_space_count + $extra_leading_spaces,
+ line => $str,
+ line_length => $str_len,
+ side_comment_length => $side_comment_length,
+ outdent_long_lines => $outdent_long_lines,
+ rvertical_tightness_flags => $rvertical_tightness_flags,
+ level => $level,
+ }
);
return;
}
# and closing tokens.
###############################################################
- my ( $self, %input_hash ) = @_;
+ my ( $self, $rinput_hash ) = @_;
- my $leading_space_count = $input_hash{leading_space_count};
- my $str = $input_hash{line};
- my $str_length = $input_hash{line_length};
- my $side_comment_length = $input_hash{side_comment_length};
- my $outdent_long_lines = $input_hash{outdent_long_lines};
- my $rvertical_tightness_flags = $input_hash{rvertical_tightness_flags};
- my $level = $input_hash{level};
+ my $leading_space_count = $rinput_hash->{leading_space_count};
+ my $str = $rinput_hash->{line};
+ my $str_length = $rinput_hash->{line_length};
+ my $side_comment_length = $rinput_hash->{side_comment_length};
+ my $outdent_long_lines = $rinput_hash->{outdent_long_lines};
+ my $rvertical_tightness_flags = $rinput_hash->{rvertical_tightness_flags};
+ my $level = $rinput_hash->{level};
my $last_level_written = $self->[_last_level_written_];
# Constructor may be called as a class method
sub new {
- my ( $class, %arg ) = @_;
+ my ( $class, $ri ) = @_;
my $self = bless [], $class;
- $self->[_jmax_] = $arg{jmax};
- $self->[_rtokens_] = $arg{rtokens};
- $self->[_rfields_] = $arg{rfields};
- $self->[_rfield_lengths_] = $arg{rfield_lengths};
- $self->[_rpatterns_] = $arg{rpatterns};
- $self->[_indentation_] = $arg{indentation};
- $self->[_leading_space_count_] = $arg{leading_space_count};
- $self->[_outdent_long_lines_] = $arg{outdent_long_lines};
- $self->[_list_type_] = $arg{list_type};
- $self->[_is_hanging_side_comment_] = $arg{is_hanging_side_comment};
- $self->[_maximum_line_length_] = $arg{maximum_line_length};
- $self->[_rvertical_tightness_flags_] = $arg{rvertical_tightness_flags};
- $self->[_is_terminal_ternary_] = $arg{is_terminal_ternary};
- $self->[_is_terminal_else_] = $arg{is_terminal_else};
- $self->[_j_terminal_match_] = $arg{j_terminal_match};
- $self->[_is_forced_break_] = $arg{is_forced_break};
- $self->[_end_group_] = $arg{end_group};
+ $self->[_jmax_] = $ri->{jmax};
+ $self->[_rtokens_] = $ri->{rtokens};
+ $self->[_rfields_] = $ri->{rfields};
+ $self->[_rfield_lengths_] = $ri->{rfield_lengths};
+ $self->[_rpatterns_] = $ri->{rpatterns};
+ $self->[_indentation_] = $ri->{indentation};
+ $self->[_leading_space_count_] = $ri->{leading_space_count};
+ $self->[_outdent_long_lines_] = $ri->{outdent_long_lines};
+ $self->[_list_type_] = $ri->{list_type};
+ $self->[_is_hanging_side_comment_] = $ri->{is_hanging_side_comment};
+ $self->[_maximum_line_length_] = $ri->{maximum_line_length};
+ $self->[_rvertical_tightness_flags_] = $ri->{rvertical_tightness_flags};
+ $self->[_is_terminal_ternary_] = $ri->{is_terminal_ternary};
+ $self->[_is_terminal_else_] = $ri->{is_terminal_else};
+ $self->[_j_terminal_match_] = $ri->{j_terminal_match};
+ $self->[_is_forced_break_] = $ri->{is_forced_break};
+ $self->[_end_group_] = $ri->{end_group};
$self->[_ralignments_] = [];