.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{ . if \nF \{ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "Test::CPAN::Meta::YAML::Version 3pm" .TH Test::CPAN::Meta::YAML::Version 3pm "2015-05-06" "perl v5.20.2" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Test::CPAN::Meta::YAML::Version \- Validate CPAN META data against the specification .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 1 \& use Test::CPAN::Meta::YAML::Version; .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" This module was written to ensure that a \s-1META\s0.yml file, provided with a standard distribution uploaded to \s-1CPAN,\s0 meets the specifications that are slowly being introduced to module uploads, via the use of ExtUtils::MakeMaker, Module::Build and Module::Install. .PP This module is meant to be used together with Test::CPAN::Meta::YAML, however the code is self contained enough that you can access it directly. .PP See CPAN::Meta for further details of the \s-1CPAN\s0 Meta Specification. .SH "ABSTRACT" .IX Header "ABSTRACT" Validation of \s-1META\s0.yml data against the \s-1CPAN\s0 Meta Specification. .SH "CLASS CONSTRUCTOR" .IX Header "CLASS CONSTRUCTOR" .IP "\(bu" 4 new( data => \f(CW$data\fR [, spec => \f(CW$version\fR] ) .Sp The constructor must be passed a valid data structure. .Sp Optionally you may also provide a specification version. This version is then use to ensure that the given data structure meets the respective specification definition. If no version is provided the module will attempt to deduce the appropriate specification version from the data structure itself. .SH "METHODS" .IX Header "METHODS" .SS "Main Methods" .IX Subsection "Main Methods" .IP "\(bu" 4 \&\fIparse()\fR .Sp Using the given data structure provided with the constructor, attempts to parse and validate according to the appropriate specification definition. .Sp Returns 1 if any errors found, otherwise returns 0. .IP "\(bu" 4 \&\fIerrors()\fR .Sp Returns a list of the errors found during parsing. .SS "Check Methods" .IX Subsection "Check Methods" .IP "\(bu" 4 check_map($spec,$data) .Sp Checks whether a map (or hash) part of the data structure conforms to the appropriate specification definition. .IP "\(bu" 4 check_list($spec,$data) .Sp Checks whether a list (or array) part of the data structure conforms to the appropriate specification definition. .SS "Validator Methods" .IX Subsection "Validator Methods" .IP "\(bu" 4 header($self,$key,$value) .Sp Validates that the \s-1YAML\s0 header is valid. .Sp Note: No longer used as we now read the \s-1YAML\s0 data structure, not the file. .IP "\(bu" 4 url($self,$key,$value) .Sp Validates that a given value is in an acceptable \s-1URL\s0 format .IP "\(bu" 4 urlspec($self,$key,$value) .Sp Validates that the \s-1URL\s0 to a \s-1META\s0.yml specification is a known one. .IP "\(bu" 4 string_or_undef($self,$key,$value) .Sp Validates that the value is either a string or an undef value. Bit of a catchall function for parts of the data structure that are completely user defined. .IP "\(bu" 4 string($self,$key,$value) .Sp Validates that a string exists for the given key. .IP "\(bu" 4 file($self,$key,$value) .Sp Validate that a file is passed for the given key. This may be made more thorough in the future. For now it acts like \e&string. .IP "\(bu" 4 exversion($self,$key,$value) .Sp Validates a list of versions, e.g. '<= 5, >=2, ==3, !=4, >1, <6, 0'. .IP "\(bu" 4 version($self,$key,$value) .Sp Validates a single version string. Versions of the type '5.8.8' and '0.00_00' are both valid. A leading 'v' like 'v1.2.3' is also valid. .IP "\(bu" 4 boolean($self,$key,$value) .Sp Validates for a boolean value. Currently these values are '1', '0', 'true', \&'false', however the latter 2 may be removed. .IP "\(bu" 4 license($self,$key,$value) .Sp Validates that a value is given for the license. Returns 1 if an known license type, or 2 if a value is given but the license type is not a recommended one. .IP "\(bu" 4 resource($self,$key,$value) .Sp Validates that the given key is in CamelCase, to indicate a user defined keyword. .IP "\(bu" 4 keyword($self,$key,$value) .Sp Validates that key is in an acceptable format for the \s-1META\s0.yml specification, i.e. any in the character class [\-_a\-z]. .Sp For user defined keys, although not explicitly stated in the specifications (v1.0 \- v1.4), the convention is to precede the key with a pattern matching qr{\eAx_}i. Following this any character from the character class [\-_a\-zA\-Z] can be used. This clarification has been added to v2.0 of the specification. .IP "\(bu" 4 identifier($self,$key,$value) .Sp Validates that key is in an acceptable format for the \s-1META\s0.yml specification, for an identifier, i.e. any that matches the regular expression qr/[a\-z][a\-z_]/i. .IP "\(bu" 4 module($self,$key,$value) .Sp Validates that a given key is in an acceptable module name format, e.g. \&'Test::CPAN::Meta::YAML::Version'. .IP "\(bu" 4 anything($self,$key,$value) .Sp Usually reserved for user defined structures, allowing them to be considered valid without a need for a specification definition for the structure. .SH "BUGS, PATCHES & FIXES" .IX Header "BUGS, PATCHES & FIXES" There are no known bugs at the time of this release. However, if you spot a bug or are experiencing difficulties that are not explained within the \s-1POD\s0 documentation, please send an email to barbie@cpan.org or submit a bug to the \&\s-1RT\s0 system (http://rt.cpan.org/Public/Dist/Display.html?Name=Test\-CPAN\-Meta\-YAML). However, it would help greatly if you are able to pinpoint problems or even supply a patch. .PP Fixes are dependent upon their severity and my availability. Should a fix not be forthcoming, please feel free to (politely) remind me. .SH "AUTHOR" .IX Header "AUTHOR" Barbie, for Miss Barbell Productions, .SH "COPYRIGHT AND LICENSE" .IX Header "COPYRIGHT AND LICENSE" .Vb 1 \& Copyright (C) 2007\-2015 Barbie for Miss Barbell Productions \& \& This distribution is free software; you can redistribute it and/or \& modify it under the Artistic Licence v2. .Ve