/usr/share/perl5/vendor_perl/CPAN
NameSizeModeActions
API/-0755rm
Exception/-0755rm
FTP/-0755rm
HTTP/-0755rm
Kwalify/-0755rm
LWP/-0755rm
Meta/-0755rm
Plugin/-0755rm
Admin.pm77800644editdlrm
Author.pm68420644editdlrm
Bundle.pm98260644editdlrm
CacheMgr.pm76640644editdlrm
Complete.pm60230644editdlrm
Debug.pm21020644editdlrm
DeferredCode.pm1890644editdlrm
Distribution.pm1638140644editdlrm
Distroprefs.pm119900644editdlrm
Distrostatus.pm9720644editdlrm
FirstTime.pm719800644editdlrm
FTP.pm426240644editdlrm
HandleConfig.pm233010644editdlrm
Index.pm222160644editdlrm
InfoObj.pm69090644editdlrm
Kwalify.pm34280644editdlrm
Meta.pm302720644editdlrm
Mirrors.pm166950644editdlrm
Module.pm223900644editdlrm
Nox.pm9530644editdlrm
Plugin.pm32150644editdlrm
Prompt.pm5670644editdlrm
Queue.pm69420644editdlrm
Shell.pm736050644editdlrm
Tarzip.pm167150644editdlrm
URL.pm5880644editdlrm
Version.pm43980644editdlrm
Edit: /usr/share/perl5/vendor_perl/CPAN/Kwalify.pm (3428B)
=head1 NAME CPAN::Kwalify - Interface between CPAN.pm and Kwalify.pm =head1 SYNOPSIS use CPAN::Kwalify; validate($schema_name, $data, $file, $doc); =head1 DESCRIPTION =over =item _validate($schema_name, $data, $file, $doc) $schema_name is the name of a supported schema. Currently only C is supported. $data is the data to be validated. $file is the absolute path to the file the data are coming from. $doc is the index of the document within $doc that is to be validated. The last two arguments are only there for better error reporting. Relies on being called from within CPAN.pm. Dies if something fails. Does not return anything useful. =item yaml($schema_name) Returns the YAML text of that schema. Dies if something fails. =back =head1 AUTHOR Andreas Koenig C<< >> =head1 LICENSE This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See L =cut use strict; package CPAN::Kwalify; use vars qw($VERSION $VAR1); $VERSION = "5.50"; use File::Spec (); my %vcache = (); my $schema_loaded = {}; sub _validate { my($schema_name,$data,$abs,$y) = @_; my $yaml_module = CPAN->_yaml_module; if ( $CPAN::META->has_inst($yaml_module) && $CPAN::META->has_inst("Kwalify") ) { my $load = UNIVERSAL::can($yaml_module,"Load"); unless ($schema_loaded->{$schema_name}) { eval { my $schema_yaml = yaml($schema_name); $schema_loaded->{$schema_name} = $load->($schema_yaml); }; if ($@) { # we know that YAML.pm 0.62 cannot parse the schema, # so we try a fallback my $content = do { my $path = __FILE__; $path =~ s/\.pm$//; $path = File::Spec->catfile($path, "$schema_name.dd"); local *FH; open FH, $path or die "Could not open '$path': $!"; local $/; ; }; $VAR1 = undef; eval $content; if (my $err = $@) { die "parsing of '$schema_name.dd' failed: $err"; } $schema_loaded->{$schema_name} = $VAR1; } } } if (my $schema = $schema_loaded->{$schema_name}) { my $mtime = (stat $abs)[9]; for my $k (keys %{$vcache{$abs}}) { delete $vcache{$abs}{$k} unless $k eq $mtime; } return if $vcache{$abs}{$mtime}{$y}++; eval { Kwalify::validate($schema, $data) }; if (my $err = $@) { my $info = {}; yaml($schema_name, info => $info); die "validation of distropref '$abs'[$y] against schema '$info->{path}' failed: $err"; } } } sub _clear_cache { %vcache = (); } sub yaml { my($schema_name, %opt) = @_; my $content = do { my $path = __FILE__; $path =~ s/\.pm$//; $path = File::Spec->catfile($path, "$schema_name.yml"); if ($opt{info}) { $opt{info}{path} = $path; } local *FH; open FH, $path or die "Could not open '$path': $!"; local $/; ; }; return $content; } 1; # Local Variables: # mode: cperl # cperl-indent-level: 4 # End: