]> git.donarmstrong.com Git - perltidy.git/blobdiff - lib/Perl/Tidy/VerticalAligner/Alignment.pm
New upstream version 20210717
[perltidy.git] / lib / Perl / Tidy / VerticalAligner / Alignment.pm
index 8a2c5c6d036495b7750304bd51e3c7e3fff5842b..79849c65de0cde8603b3320ab5708e716a372424 100644 (file)
 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 <<EOM;
+======================================================================
+Error detected in package '$my_package', version $VERSION
+Received unexpected AUTOLOAD call for sub '$AUTOLOAD'
+Called from package: '$pkg'  
+Called from File '$fname'  at line '$lno'
+This error is probably due to a recent programming change
+======================================================================
+EOM
+    exit 1;
+}
 
-    sub set_starting_line {
-        my ( $self, $val ) = @_;
-        $self->{_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;
+