MS
view release on metacpan or search on metacpan
lib/MS/Reader/XML/Record.pm view on Meta::CPAN
# criteria. In some cases this can speed up sequential parsing
# significantly
if ($el eq 'cvParam' && defined $self->{filter}) {
if ($id eq $self->{filter}->[0]
&& $attrs{value} != $self->{filter}->[1]) {
$self->{filtered} = 1;
# remove circular references
delete $self->{_curr_ref}->{back};
delete $new_ref->{back};
$p->finish;
}
}
}
# Elements that should be grouped by name/id
elsif (defined $self->{_make_named_hash}->{ $el }) {
my $id_name = $self->{_make_named_hash}->{ $el };
my $id = $attrs{$id_name};
die "Colliding ID $id"
if (defined $self->{_curr_ref}->{$el}->{$id});
delete $new_ref->{$id_name};
$self->{_curr_ref}->{$el}->{$id} = $new_ref;
}
# Elements that should be grouped with no name
elsif (defined $self->{_make_anon_array}->{ $el } ) {
push @{ $self->{_curr_ref}->{$el} }, $new_ref;
}
# Everything else
else {
$self->{_curr_ref}->{$el} = $new_ref;
}
# Step up linked list
$self->{_curr_ref} = $new_ref;
return;
}
sub _handle_end {
my ($self, $p, $el) = @_;
# step back down linked list
my $last_ref = $self->{_curr_ref}->{back};
delete $self->{_curr_ref}->{back}; # avoid memory leak!
$self->{_curr_ref} = $last_ref;
return;
}
sub _handle_char {
my ($self, $p, $data) = @_;
$self->{_curr_ref}->{pcdata} .= $data
if ($data =~ /\S/);
return;
}
sub dump {
my ($self) = @_;
my $copy = {};
%$copy = %$self;
delete $copy->{$_}
for qw/count md5sum version fh offsets fn index fh pos lengths/;
my $dump = '';
{
local $Data::Dumper::Indent = 1;
local $Data::Dumper::Terse = 1;
local $Data::Dumper::Sortkeys = 1;
$dump = Dumper $copy;
}
return $dump;
}
sub _pre_load {} # can be defined by subclass
sub _post_load {} # can be defined by subclass
1;
__END__
=head1 NAME
MS::Reader::XML::Record - Base class for XML-based records
=head1 SYNOPSIS
package MS::Reader::Foo::Record;
use parent MS::Reader::XML::Record;
=head1 METHODS
=head2 dump
my $dump = $spectrum->dump;
Returns a textual representation (via C<Data::Dumper>) of the data structure.
This can facilitate access to data parsed from the MGF record but not
accessible via an accessor method.
=head1 CAVEATS AND BUGS
The API is in alpha stage and is not guaranteed to be stable.
Please reports bugs or feature requests through the issue tracker at
( run in 0.406 second using v1.01-cache-2.11-cpan-39bf76dae61 )