logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Metabase::Fact::Hash - fact subtype for simple hashes

Attributes

Argumentsprovidedtonewresourcerequired

       The canonical resource (URI) the Fact relates to.  For CPAN distributions, this would be a
       "cpan:///distfile/" URL.  (See URI::cpan.)

       contentrequired

       A reference to the actual information associated with the fact.  The exact form of the content is up to
       each Fact class to determine.

Authors

       •   David Golden <dagolden@cpan.org>

       •   Ricardo Signes <rjbs@cpan.org>

       •   H.Merijn Brand <hmbrand@cpan.org>

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.

Description

       Many (if not most) facts to be stored in a Metabase are just hashes of simple data.  Metabase::Fact::Hash
       is a subclass of Metabase::Fact with most of the required Fact methods already implemented.  If you write
       your class as a subclass of Metabase::Fact::Hash, you can store simple hashes in it.

       You should implement "required_keys" and/or "optional_keys" as shown in the SYNOPSIS.  The superclass
       "valiate_content" will ensure that required keys exist and that only required an optional keys exist.
       You may wish to subclass "validate_content" to validate the specific content of the hash given to the
       constructor.

       You may wish to implement a "content_metadata" method to generate metadata about the hash contents.

Methods

       For information on the methods provided by this class, see Metabase::Fact.

Name

       Metabase::Fact::Hash - fact subtype for simple hashes

Synopsis

         # defining the fact class
         package MyComment;
         use Metabase::Fact::Hash;
         our @ISA = qw/Metabase::Fact::Hash/;

         sub required_keys { qw/poster/ }

         sub optional_keys { qw/comment/ }

         sub content_metadata {
           my $self = shift;
           return {
             poster => [ '//str' => $self->content->{poster} ],
           };
         }

         sub validate_content {
           my $self = shift;
           $self->SUPER::validate_content; # required and optional keys

           # other analysis of values
         }

       ...and then...

         # using the fact class
         my $fact = MyFact->new(
           resource => 'RJBS/Metabase-Fact-0.001.tar.gz',
           content => {
             poster  => 'larry',
             comment => 'Metabase rocks!',
           }
         );

         $client->send_fact($fact);

Version

       version 0.025

See Also