File: //lib/x86_64-linux-gnu/perl5/5.34/Devel/Cover/DB/Digests.pm
# Copyright 2011-2019, Paul Johnson (paul@pjcj.net)
# This software is free.  It is licensed under the same terms as Perl itself.
# The latest version of this software should be available from my homepage:
# http://www.pjcj.net
package Devel::Cover::DB::Digests;
use strict;
use warnings;
our $VERSION = '1.36'; # VERSION
use Devel::Cover::DB::Structure;
use Devel::Cover::DB::IO;
my $File = "digests";
sub new {
    my $class = shift;
    my $self  = {
        digests => {},
        @_
    };
    die "No db specified" unless $self->{db};
    $self->{file} = "$self->{db}/$File";
    bless $self, $class;
    $self->read;
    $self
}
sub read {
    my $self = shift;
    my $io = Devel::Cover::DB::IO->new;
    $self->{digests} = $io->read($self->{file}) if -e $self->{file};
    $self
}
sub write {
    my $self = shift;
    my $io = Devel::Cover::DB::IO->new;
    $io->write($self->{digests}, $self->{file});
    $self
}
sub get {
    my $self = shift;
    my ($digest) = @_;
    $self->{digests}{$digest}
}
sub set {
    my $self = shift;
    my ($file, $digest) = @_;
    $self->{digests}{$digest} = $file;
}
sub canonical_file {
    my $self = shift;
    my ($file) = @_;
    my $cfile = $file;
    my $digest = Devel::Cover::DB::Structure->digest($file);
    if ($digest) {
        my $dfile = $self->get($digest);
        if ($dfile && $dfile ne $file) {
            print STDERR "Devel::Cover: Adding coverage for $file to $dfile\n"
                unless $Devel::Cover::Silent;
            $cfile = $dfile;
        } else {
            $self->set($file, $digest);
        }
    }
    # warn "[$file] => [$cfile]\n";
    $cfile
}
1
__END__
=head1 NAME
Devel::Cover::DB::Digests - store digests for Devel::Cover::DB
=head1 VERSION
version 1.36
=head1 SYNOPSIS
 use Devel::Cover::DB::Digests;
 my $digests = Devel::Cover::DB::Digests->new(db => $DB);
 $digests->read;
 $digests->write;
=head1 DESCRIPTION
This module stores digests for Devel::Cover::DB.
=head1 SEE ALSO
 Devel::Cover
 Devel::Cover::DB
=head1 METHODS
=head2 new
 my $digests = Devel::Cover::DB::Digests->new(db => $DB);
Constructs the digests object.
=head2 read
 $digests->read;
Read the digests from the DB.
=head2 write
 $digests->write;
Write the digests to the DB.
=head1 BUGS
Huh?
=head1 LICENCE
Copyright 2011-2019, Paul Johnson (paul@pjcj.net)
This software is free.  It is licensed under the same terms as Perl itself.
The latest version of this software should be available from my homepage:
http://www.pjcj.net
=cut