Heray-Was-Here
Server : Apache
System : Linux vps103298.mylogin.co 4.18.0-513.11.1.el8_9.x86_64 #1 SMP Wed Jan 17 02:00:40 EST 2024 x86_64
User : calvet ( 273824)
PHP Version : 7.4.33
Disable Function : NONE
Directory :  /proc/self/root/proc/thread-self/root/usr/share/perl5/vendor_perl/PPI/Document/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //proc/self/root/proc/thread-self/root/usr/share/perl5/vendor_perl/PPI/Document/File.pm
package PPI::Document::File;

=pod

=head1 NAME

PPI::Document::File - A Perl Document located in a specific file

=head1 DESCRIPTION

B<WARNING: This class is experimental, and may change without notice>

B<PPI::Document::File> provides a L<PPI::Document> subclass that represents
a Perl document stored in a specific named file.

=head1 METHODS

=cut

use strict;
use Carp          ();
use Params::Util  qw{_STRING _INSTANCE};
use PPI::Document ();

our $VERSION = '1.270'; # VERSION

our @ISA = 'PPI::Document';





#####################################################################
# Constructor and Accessors

=pod

=head2 new

  my $file = PPI::Document::File->new( 'Module.pm' );

The C<new> constructor works the same as for the regular one, except
that the only params allowed is a file name. You cannot create an
"anonymous" PPI::Document::File object, not can you create an empty one.

Returns a new PPI::Document::File object, or C<undef> on error.

=cut

sub new {
	my $class    = shift;
	my $filename = _STRING(shift);
	unless ( defined $filename ) {
		# Perl::Critic got a complaint about not handling a file
		# named "0".
		return $class->_error("Did not provide a file name to load");
	}

	# Load the Document
	my $self = $class->SUPER::new( $filename, @_ ) or return undef;

	# Unlike a normal inheritance situation, due to our need to stay
	# compatible with caching magic, this actually returns a regular
	# anonymous document. We need to rebless if
	if ( _INSTANCE($self, 'PPI::Document') ) {
		bless $self, 'PPI::Document::File';
	} else {
		die "PPI::Document::File SUPER call returned an object of the wrong type";
	}

	$self;
}

=pod

=head2 save

  # Save to the file we were loaded from
  $file->save;
  
  # Save a copy to somewhere else
  $file->save( 'Module2.pm' );

The C<save> method works similarly to the one in the parent L<PPI::Document>
class, saving a copy of the document to a file.

The difference with this subclass is that if C<save> is not passed any
filename, it will save it back to the file it was loaded from.

Note: When saving to a different file, it is considered to be saving a
B<copy> and so the value returned by the C<filename> accessor will stay
the same, and not change to the new filename.

=cut

sub save {
	my $self = shift;

	# Save to where?
	my $filename = shift;
	unless ( defined $filename ) {
		$filename = $self->filename;
	}

	# Hand off to main save method
	$self->SUPER::save( $filename, @_ );
}

1;

=pod

=head1 TO DO

- May need to overload some methods to forcefully prevent Document
objects becoming children of another Node.

=head1 SUPPORT

See the L<support section|PPI/SUPPORT> in the main module.

=head1 AUTHOR

Adam Kennedy E<lt>adamk@cpan.orgE<gt>

=head1 COPYRIGHT

Copyright 2001 - 2011 Adam Kennedy.

This program is free software; you can redistribute
it and/or modify it under the same terms as Perl itself.

The full text of the license can be found in the
LICENSE file included with this module.

=cut

Hry