NAME Gentoo::MetaEbuild::Spec::Base - A Base Class for Gentoo MetaEbuild Specifications. VERSION version 1.000000 SYNOPSIS use Gentoo::MetaEbuild::Spec::Base; # or some derived class Gentoo::MetaEbuild::Spec::Base->check( $datastructure ); This base-class only validates the most basic of basic, that the data is a { } using Data::Rx and using the shipped File::ShareDir v1.0.0.json spec to do that. This will be more practical in consuming classes as they'll override selected methods/ship different spec files, but maintain the same useful interface. METHODS check Packagename->check( $datastructure ); Packagename->check( $datastructure, \%opts ); Packagename->check( $datastructure, { version => '0.1.0' }); EXTENDING Extending should be this simple: package FooBarBaz; use Moose; extends 'Gentoo::MetaEbuild::Spec::Base'; 1; and then ship a directory of Data::Rx spec files as the Module ShareDir for that module. TESTING The only fun thing with testing is the File::ShareDir directory hasn't been installed yet, but its simple to get around. use FindBin; use Path::Tiny qw( path ); use Gentoo::MetaEbuild::Spec::Base; Gentoo::MetaEbuild::Spec::Base->_spec_dir( path($FindBin::Bin)->parent->child('share') ); # Code as per usual. my $shareroot = path($FindBin::Bin)->parent(); AUTHOR Kent Fredric <kentnl@cpan.org> COPYRIGHT AND LICENSE This software is copyright (c) 2014 by Kent Fredric <kentnl@cpan.org>. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.