-
-
29 Feb 2016 04:17:39 UTC
- Distribution: Metabase-Fact
- Module version: 0.025
- Source (raw)
- Browse (raw)
- Changes
- Homepage
- How to Contribute
- Repository
- Issues (3)
- Testers (4430 / 1 / 2)
- Kwalitee
Bus factor: 2- 86.46% Coverage
- License: apache_2_0
- Perl: v5.6.0
- Activity
24 month- Tools
- Download (43.34KB)
- MetaCPAN Explorer
- Permissions
- Subscribe to distribution
- Permalinks
- This version
- Latest version
and 6 contributors-
Ricardo Signes
-
H.Merijn Brand
-
David Steinbrunner
-
Karen Etheridge
-
Nathan Gary Glenn
-
Randy Stauner
- NAME
- VERSION
- SYNOPSIS
- DESCRIPTION
- COMMON METHODS
- OVERLOADING
- SUBCLASSING AND SUBCLASS METHODS
- BUGS
- AUTHORS
- COPYRIGHT AND LICENSE
NAME
Metabase::Resource - factory class for Metabase resource descriptors
VERSION
version 0.025
SYNOPSIS
my $resource = Metabase::Resource->new( 'cpan:///distfile/RJBS/Metabase-Fact-0.001.tar.gz', ); my $resource_meta = $resource->metadata; my $typemap = $resource->metadata_types;
DESCRIPTION
Metabase is a framework for associating metadata with arbitrary resources. A Metabase can be used to store test reports, reviews, coverage analysis reports, reports on static analysis of coding style, or anything else for which Metabase::Fact types are constructed.
Resources in Metabase are URI's that consist of a scheme and scheme specific information. For example, a standard URI framework for a CPAN distribution is defined by the URI::cpan class.
cpan:///distfile/RJBS/URI-cpan-1.000.tar.gz
Metabase::Resource is a factory class for resource descriptors. It provide a common interface to extract scheme-specific indexing metadata from a scheme-specific resource subclass.
For example, the Metabase::Resource::cpan class will deconstruct the example above this into a Metabase resource metadata structure with the following elements:
type => Metabase-Resource-cpan-distfile dist_file => RJBS/URI-cpan-1.000.tar.gz cpan_id => RJBS dist_name => URI-cpan dist_version => 1.000
Only the
type
field is mandatory for all resources. The other fields are all specific to Metabase::Resource::cpan.COMMON METHODS
new
my $resource = Metabase::Resource->new( 'cpan:///distfile/RJBS/Metabase-Fact-0.001.tar.gz', );
Takes a single resource string argument and constructs a new Resource object from a resource subtype determined by the URI scheme. Throws an error if the required resource subclass is not available.
resource
Returns the string used to initialize the resource object.
scheme
Returns a string containing the scheme.
_cache (private)
Returns a hash reference for subclasses to use to store data derived from the
content
string.OVERLOADING
Resources have stringification overloaded to call
content
. Equality (==) and inequality (!=) are overloaded to perform string comparison instead.SUBCLASSING AND SUBCLASS METHODS
Metabase::Resource relies on subclasses to implement scheme-specific parsing of the URI into relevant index metadata.
Subclasses SHOULD NOT implement a
new
constructor, as the Metabase::Resource constructor will load the subclass, construct the object, bless the object into the subclass, and then callvalidate
on the object. Subclasses MAY store structured data derived from the content string during validation.Subclasses SHOULD use the
content
method to access the resource string and thescheme
method to access the scheme. Subclasses MAY use the_cache
accessor to store derived metadata data. Subclasses MUST provide ametadata_types
method to return data types for all elements stored in_cache
.All subclasses MUST implement the
validate
,metadata
andmetadata_types
methods, as described below.All methods MUST throw an exception if an error occurs.
validate
$resource->validate
This method is called by the constructor. It SHOULD return true if the resource string is valid according to scheme-specific rules. It MUST die if the resource string is invalid.
metadata
$meta = $resource->metadata;
This method MUST return a hash reference with resource-specific indexing metadata for the Resource. The key MUST be the name of the field for indexing. The
scheme
key MUST be present and thescheme
value MUST be identical to the string from thescheme
accessor. Other keys SHOULD provide dimensions to differentiate one resource from another in the context ofscheme
. If a scheme has subcategories, the keytype
SHOULD be used for the subcategory. Values MUST be simple scalars, not references.Here is a hypothetical example of a
metadata
function for a metabase user resource like 'metabase:user:ec2726a4-070c-11df-a2e0-0018f34ec37c':sub metadata { my $self = shift; my ($uuid) = $self =~ m{\Ametabase:user:(.+)\z}; return { scheme => 'metabase', type => 'user', user => $uuid, } }
Field names should be valid perl identifiers, consisting of alphanumeric characters or underscores. Hyphens and periods are allowed, but are not recommended.
metadata_types
my $typemap = $resource->metadata_types;
This method is used to identify the datatypes of keys in the data structure provided by
metadata
. It MUST return a hash reference. It SHOULD contain a key for every key that could appear in the data structure generated bymetadata
and provide a value corresponding to a datatype for each key. It MAY contain keys that do not always appear in the result ofmetadata
.Data types are loosely based on Data::RX. Type SHOULD be one of the following:
'//str' -- indicates a value that should be compared stringwise '//num' -- indicates a value that should be compared numerically
Here is a hypothetical example of a
metadata_types
function for a metabase user resource like 'metabase:user:ec2726a4-070c-11df-a2e0-0018f34ec37c':sub metadata_types { return { scheme => '//str', type => '//str', user => '//str', } }
Consumers of
metadata_types
SHOULD assume that anymetadata
key not found in the result ofmetadata_types
is a '//str' resource.BUGS
Please report any bugs or feature using the CPAN Request Tracker. Bugs can be submitted through the web interface at http://rt.cpan.org/Dist/Display.html?Queue=Metabase-Fact
When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.
AUTHORS
David Golden <dagolden@cpan.org>
Ricardo Signes <rjbs@cpan.org>
H.Merijn Brand <hmbrand@cpan.org>
COPYRIGHT AND LICENSE
This software is Copyright (c) 2016 by David Golden.
This is free software, licensed under:
The Apache License, Version 2.0, January 2004
Module Install Instructions
To install Metabase::Fact, copy and paste the appropriate command in to your terminal.
cpanm Metabase::Fact
perl -MCPAN -e shell install Metabase::Fact
For more information on module installation, please visit the detailed CPAN module installation guide.