X-Git-Url: https://git.donarmstrong.com/?p=perltidy.git;a=blobdiff_plain;f=lib%2FPerl%2FTidy%2FVerticalAligner%2FAlignment.pm;h=79849c65de0cde8603b3320ab5708e716a372424;hp=8a2c5c6d036495b7750304bd51e3c7e3fff5842b;hb=57d829ae0e2c75828f8ecc9c7139579350927dbc;hpb=7f27e55dce5925b2bbe8fcfca64f385e917a52be diff --git a/lib/Perl/Tidy/VerticalAligner/Alignment.pm b/lib/Perl/Tidy/VerticalAligner/Alignment.pm index 8a2c5c6..79849c6 100644 --- a/lib/Perl/Tidy/VerticalAligner/Alignment.pm +++ b/lib/Perl/Tidy/VerticalAligner/Alignment.pm @@ -7,117 +7,71 @@ package Perl::Tidy::VerticalAligner::Alignment; use strict; use warnings; -our $VERSION = '20200110'; -{ +{ #<<< A non-indenting brace - #use Carp; +our $VERSION = '20210717'; - # _column # the current column number - # _starting_column # column number when created - # _matching_token # what token we are matching - # _starting_line # the line index of creation - # _ending_line - # the most recent line to use it - # _saved_column - # _serial_number # unique number for this alignment +# _column_ # the current column number +# _saved_column_ # a place for temporary storage +my $i = 0; +use constant { + _column_ => $i++, + _saved_column_ => $i++, +}; - my %default_data = ( - column => undef, - starting_column => undef, - matching_token => undef, - starting_line => undef, - ending_line => undef, - saved_column => undef, - serial_number => undef, - ); - - # class population count - { - my $_count = 0; - sub get_count { return $_count } - sub _increment_count { return ++$_count } - sub _decrement_count { return --$_count } - } - - # constructor - sub new { - my ( $caller, %arg ) = @_; - my $caller_is_obj = ref($caller); - my $class = $caller_is_obj || $caller; - ##no strict "refs"; - my $self = bless {}, $class; - - foreach my $key ( keys %default_data ) { - my $_key = '_' . $key; - if ( exists $arg{$key} ) { $self->{$_key} = $arg{$key} } - elsif ($caller_is_obj) { $self->{$_key} = $caller->{$_key} } - else { $self->{$_key} = $default_data{$_key} } - } - $self->_increment_count(); - return $self; - } - - sub DESTROY { - my $self = shift; - $self->_decrement_count(); - return; - } - - sub get_column { my $self = shift; return $self->{_column} } - - sub get_starting_column { - my $self = shift; - return $self->{_starting_column}; - } - sub get_matching_token { my $self = shift; return $self->{_matching_token} } - sub get_starting_line { my $self = shift; return $self->{_starting_line} } - sub get_ending_line { my $self = shift; return $self->{_ending_line} } - sub get_serial_number { my $self = shift; return $self->{_serial_number} } - - sub set_column { my ( $self, $val ) = @_; $self->{_column} = $val; return } - - sub set_starting_column { - my ( $self, $val ) = @_; - $self->{_starting_column} = $val; - return; - } +sub new { + my ( $class, $rarg ) = @_; + my $self = bless [], $class; + $self->[_column_] = $rarg->{column}; + $self->[_saved_column_] = $rarg->{saved_column}; + return $self; +} - sub set_matching_token { - my ( $self, $val ) = @_; - $self->{_matching_token} = $val; - return; - } +sub AUTOLOAD { + + # Catch any undefined sub calls so that we are sure to get + # some diagnostic information. This sub should never be called + # except for a programming error. + our $AUTOLOAD; + return if ( $AUTOLOAD =~ /\bDESTROY$/ ); + my ( $pkg, $fname, $lno ) = caller(); + my $my_package = __PACKAGE__; + print STDERR <{_starting_line} = $val; - return; - } +sub DESTROY { - sub set_ending_line { - my ( $self, $val ) = @_; - $self->{_ending_line} = $val; - return; - } + # required to avoid call to AUTOLOAD in some versions of perl +} - sub increment_column { - my ( $self, $val ) = @_; - $self->{_column} += $val; - return; - } +sub get_column { + return $_[0]->[_column_]; +} - sub save_column { - my $self = shift; - $self->{_saved_column} = $self->{_column}; - return; - } +sub increment_column { + $_[0]->[_column_] += $_[1]; + return; +} - sub restore_column { - my $self = shift; - $self->{_column} = $self->{_saved_column}; - return; - } +sub save_column { + $_[0]->[_saved_column_] = $_[0]->[_column_]; + return; } +sub restore_column { + $_[0]->[_column_] = $_[0]->[_saved_column_]; + return; +} +} ## end of package VerticalAligner::Alignment 1; +