Perl::Metrics::Plugin::MinimumVersion - Perl::Metrics plugin for Perl::MinimumVersion


Perl-Metrics-Plugin-MinimumVersion documentation Contained in the Perl-Metrics-Plugin-MinimumVersion distribution.

Index


Code Index:

NAME

Top

Perl::Metrics::Plugin::MinimumVersion - Perl::Metrics plugin for Perl::MinimumVersion

DESCRIPTION

Top

This is a Perl::Metrics "plugin" that generated the two primary metrics generated by the Perl::MinimumVersion module. These are the minimum explicit perl version dependency, and the minimum syntax perl version dependency.

While this is an actual plugin to be used to real purposes, it provides a suitable example of a simple plugin which brings functionality from a PPI-based module into the larger Perl::Metrics framework.

In addition, because the results could change based on changes to Perl::MinimumVersion this module also demonstrates the user of "versioned" metrics.

The metrics method is overloaded to return an explicit list of metrics, with the appropriate metric versions based on the version of Perl::MinimumVersion.

METHODS

Top

metric_explicit

Provides the metric 'explicit', the minimum explicit version provided as a normalized and serialized version object.

metric_syntax

Provides the metric 'syntax', the minimum explicit version provided as a normalized and serialized version object.

SUPPORT

Top

Bugs should be reported via the CPAN bug tracker at

http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Perl-Metrics-Plugin-MinimumVersion

For other issues, contact the author.

AUTHOR

Top

Adam Kennedy <adamk@cpan.org>

SEE ALSO

Top

Perl::Metrics::Plugin, Perl::Metrics, Perl::MinimumVersion, PPI

COPYRIGHT

Top


Perl-Metrics-Plugin-MinimumVersion documentation Contained in the Perl-Metrics-Plugin-MinimumVersion distribution.
package Perl::Metrics::Plugin::MinimumVersion;

use 5.006;
use strict;
use Carp                 ();
use version              ();
use Perl::MinimumVersion 'PMV';
use base 'Perl::Metrics::Plugin';

use vars qw{$VERSION};
BEGIN {
	$VERSION = '0.02';
}

# The metrics are versioned, using the version of P:MV.
# This should cause the metrics to be automatically
# recalculated when P:MV is updated, without having
# to rerelease this dist as well.
sub metrics { {
	explicit => $Perl::MinimumVersion::VERSION,
	syntax   => $Perl::MinimumVersion::VERSION,
} }

sub metric_explicit {
	my ($self, $Document) = @_;
	my $pmv = PMV->new($Document) or Carp::croak(
		"Failed to create Perl::MinimumVersion object for Document "
		. $Document->hex_id
		);
	my $version = $pmv->minimum_explicit_version;
	return $version
		? $version->normal
		: $version;
}

sub metric_syntax {
	my ($self, $Document) = @_;
	my $pmv = PMV->new($Document) or Carp::croak(
		"Failed to create Perl::MinimumVersion object for Document "
		. $Document->hex_id
		);
	my $version = $pmv->minimum_syntax_version;
	return $version
		? $version->normal
		: $version;
}

1;