Chemistry-Mol
view release on metacpan or search on metacpan
lib/Chemistry/File/Dumper.pm view on Meta::CPAN
=head1 DESCRIPTION
This module hooks the Data::Dumper Perl core module to the Chemistry::File
API, allowing you to dump and undump Chemistry::Mol objects easily.
This module automatically registers the "dumper" format with Chemistry::Mol.
For purposes of automatic file type guessing, this module assumes that
dumped files end in C<.pl>.
This module is useful mainly for debugging purposes, as it dumps I<all> the
information available in an object, in a reproducible way (so you can use
it to compare molecule objects). However, it wouldn't be a good idea to use it
to read untrusted files, because they may contain arbitrary Perl code.
=cut
Chemistry::Mol->register_format(dumper => __PACKAGE__);
=head1 OPTIONS
The following options can be used when writing a molecule either as
a file or as a string.
=over 4
=item dumper_indent
Value to give to Data::Dumper::Indent. Default is 1.
=item dumper_purity
Value to give to Data::Dumper::Purity. Default is 1.
=back
There are no special options for reading.
=cut
sub write_mol {
my ($self, $fh, $mol, %opts) = @_;
my $d = Data::Dumper->new([$mol],['$mol']);
# sort the keys if this version of Data::Dumper supports it
$d->Sortkeys(1) if $d->can('Sortkeys');
print $fh $d
->Indent(exists $opts{dumper_indent} ? $opts{dumper_indent} : 1)
->Purity(exists $opts{dumper_purity} ? $opts{dumper_purity} : 1)
->Dump;
}
sub read_mol {
my ($self, $fh, %opts) = @_;
my $mol;
my $s = do { local $/; <$fh> };
return unless $s;
eval $s;
if ($@) {
croak "Dumper eval error: $@" if $opts{fatal};
return;
}
$mol->_weaken;
$mol;
}
sub name_is {
my ($self, $name, %opts) = @_;
$name =~ /\.pl$/i;
}
sub string_is {
my ($self, $s, %opts) = @_;
$s =~ /^\$mol/;
}
1;
=head1 SOURCE CODE REPOSITORY
L<https://github.com/perlmol/Chemistry-Mol>
=head1 SEE ALSO
L<Chemistry::Mol>, L<Chemistry::File>, L<Data::Dumper>
=head1 AUTHOR
Ivan Tubert-Brohman <itub@cpan.org>
=head1 COPYRIGHT
Copyright (c) 2005 Ivan Tubert-Brohman. All rights reserved. This program is
free software; you can redistribute it and/or modify it under the same terms as
Perl itself.
=cut
( run in 1.818 second using v1.01-cache-2.11-cpan-5c0b1e786e0 )