The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

use strict;
# ABSTRACT: A Distribution data object
$MetaCPAN::Client::Distribution::VERSION = '2.004000'; # TRIAL
use Moo;
my %known_fields = (
scalar => [qw< name >],
arrayref => [],
hashref => [qw< bugs river >]
);
my %__known_fields_ex = (
map { my $k = $_; $k => +{ map { $_ => 1 } @{ $known_fields{$k} } } }
keys %known_fields
);
my @known_fields = map { @{ $known_fields{$_} } } keys %known_fields;
foreach my $field ( @known_fields ) {
has $field => (
is => 'ro',
lazy => 1,
default => sub {
my $self = shift;
return (
exists $self->data->{$field} ? $self->data->{$field} :
exists $__known_fields_ex{hashref}{$field} ? {} :
exists $__known_fields_ex{arrayref}{$field} ? [] :
exists $__known_fields_ex{scalar}{$field} ? '' :
undef
);
},
);
}
sub _known_fields { return \%known_fields }
sub rt { $_[0]->bugs->{rt} || {} }
sub github { $_[0]->bugs->{github} || {} }
1;
__END__
=pod
=encoding UTF-8
=head1 NAME
MetaCPAN::Client::Distribution - A Distribution data object
=head1 VERSION
version 2.004000
=head1 SYNOPSIS
my $dist = $mcpan->distribution('MetaCPAN-Client');
=head1 DESCRIPTION
A MetaCPAN distribution entity object.
=head1 ATTRIBUTES
=head2 name
=head2 bugs
Hash-Ref.
=head2 river
Hash-Ref.
=head1 METHODS
=head2 rt
Returns 'bugs.rt' hash ref (defaults to {}).
=head2 github
Returns 'bugs.github' hash ref (defaults to {}).
=head1 AUTHORS
=over 4
=item *
Sawyer X <xsawyerx@cpan.org>
=item *
Mickey Nasriachi <mickey@cpan.org>
=back
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2016 by Sawyer X.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
=cut