Venus::Role::Pluggable

Pluggable Role

Pluggable Role for Perl 5

package Example::Plugin::Username;

use Venus::Class;

use Digest::SHA ();

sub execute {
  my ($self, $example) = @_;

  return Digest::SHA::sha1_hex($example->login);
}

package Example::Plugin::Password;

use Venus::Class;

use Digest::SHA ();

attr 'value';

sub construct {
  my ($class, $example) = @_;

  return $class->new(value => $example->secret);
}

sub execute {
  my ($self) = @_;

  return Digest::SHA::sha1_hex($self->value);
}

package Example;

use Venus::Class;

with 'Venus::Role::Proxyable';
with 'Venus::Role::Pluggable';

attr 'login';
attr 'secret';

package main;

my $example = Example->new(login => 'admin', secret => 'p@ssw0rd');

# $example->username;
# $example->password;

This package provides a mechanism for dispatching to plugin classes.

t/Venus.t: present: authors t/Venus.t: present: license

6 POD Errors

The following errors were encountered while parsing the POD:

Around line 13:

Unknown directive: =name

Around line 21:

Unknown directive: =tagline

Around line 29:

Unknown directive: =abstract

Around line 37:

Unknown directive: =synopsis

Around line 101:

Unknown directive: =description

Around line 109:

Unknown directive: =partials