NAME
Venus::Role::Encaseable - Encaseable Role
ABSTRACT
Encaseable Role for Perl 5
SYNOPSIS
package Example;
use Venus::Class 'with';
with 'Venus::Role::Encaseable';
sub execute {
my ($self) = @_;
return $self->encase('count', 1);
}
package main;
my $example = Example->new;
# bless({}, 'Example')
# $example->execute;
# 1
DESCRIPTION
This package modifies the consuming package and provides methods for storing, retrieving, and removing private instance variables, via the private (masked) attribute. Note: A pre-existing attribute or routine named private in the consuming package may cause unexpected issues. This role differs from Venus::Role::Stashable in that it provides getters and setters to help obscure the private instance data, whereas Stashable does not.
METHODS
This package provides the following methods:
clone
clone() (object)
The clone method clones the invocant and returns the result.
Since 4.15
- clone example 1
-
# given: synopsis package main; my $clone = $example->clone; # bless(..., "Example")
encase
encase(string $key, any $value) (any)
The encase method associates and stashes the key and value provided with the class instance and returns the value provided. If the key is already associated the value is not overwritten.
Since 4.15
- encase example 1
-
package Example; use Venus::Class 'with'; with 'Venus::Role::Encaseable'; sub execute { my ($self) = @_; return $self->encase; } package main; my $example = Example->new; # bless({}, 'Example') # $example->execute; # undef
- encase example 2
-
package Example; use Venus::Class 'with'; with 'Venus::Role::Encaseable'; sub execute { my ($self) = @_; return $self->encase('count'); } package main; my $example = Example->new; # bless({}, 'Example') # $example->execute; # undef
- encase example 3
-
package Example; use Venus::Class 'with'; with 'Venus::Role::Encaseable'; sub execute { my ($self) = @_; return $self->encase('count', 1); } package main; my $example = Example->new; # bless({}, 'Example') # $example->execute; # 1
- encase example 4
-
package Example; use Venus::Class 'with'; with 'Venus::Role::Encaseable'; sub execute { my ($self) = @_; my $count = 1; $count = $self->encase('count', $count); $count = $self->encase('count', $count + 1); $count = $self->encase('count', $count + 1); return $count; } package main; my $example = Example->new; # bless({}, 'Example') # $example->execute; # 1
- encase example 5
-
package Example; use Venus::Class 'with'; with 'Venus::Role::Encaseable'; sub execute { my ($self) = @_; my $count = 1; $count = $self->encase('count', $count); return $count; } package main; my $execute = Example->execute; # Exception! Venus::Fault
- encase example 6
-
package Example; use Venus::Class 'with'; with 'Venus::Role::Encaseable'; sub execute { my ($self) = @_; my $count = 1; $count = $self->encase('count', $count); return $count; } package main; my $example = Example->new; $example->encase('count', 1); # Exception! Venus::Fault
encased
encased(string $key) (any)
The encased method retrieves the value associated with the key provided, associated and stashed with the class instance.
Since 4.15
- encased example 1
-
package Example; use Venus::Class 'with'; with 'Venus::Role::Encaseable'; sub execute { my ($self) = @_; return $self->encased; } package main; my $example = Example->new; # bless({}, 'Example') # $example->execute; # undef
- encased example 2
-
package Example; use Venus::Class 'with'; with 'Venus::Role::Encaseable'; sub execute { my ($self) = @_; return $self->encased('count'); } package main; my $example = Example->new; # bless({}, 'Example') # $example->execute; # undef
- encased example 3
-
package Example; use Venus::Class 'with'; with 'Venus::Role::Encaseable'; sub execute { my ($self) = @_; $self->encase('count', 1); return $self->encased('count'); } package main; my $example = Example->new; # bless({}, 'Example') # $example->execute; # 1
- encased example 4
-
package Example; use Venus::Class 'with'; with 'Venus::Role::Encaseable'; sub execute { my ($self) = @_; my $count = 1; $count = $self->recase('count', $count); $count = $self->recase('count', $count + 1); $count = $self->recase('count', $count + 1); return $self->encased('count'); } package main; my $example = Example->new; # bless({}, 'Example') # $example->execute; # 3
- encased example 5
-
package Example; use Venus::Class 'with'; with 'Venus::Role::Encaseable'; sub execute { my ($self) = @_; return $self->encased('count'); } package main; my $execute = Example->execute; # Exception! Venus::Fault
- encased example 6
-
package Example; use Venus::Class 'with'; with 'Venus::Role::Encaseable'; sub execute { my ($self) = @_; return $self->encased('count'); } package main; my $example = Example->new; $example->encased('count'); # Exception! Venus::Fault
recase
recase(string $key, any $value) (any)
The recase method associates and stashes the key and value provided with the class instance and returns the value provided. The value is always overwritten.
Since 4.15
- recase example 1
-
package Example; use Venus::Class 'with'; with 'Venus::Role::Encaseable'; sub execute { my ($self) = @_; return $self->recase; } package main; my $example = Example->new; # bless({}, 'Example') # $example->execute; # undef
- recase example 2
-
package Example; use Venus::Class 'with'; with 'Venus::Role::Encaseable'; sub execute { my ($self) = @_; my $count = 1; $count = $self->encase('count', $count); return $self->recase('count', $count + 1); } package main; my $example = Example->new; # bless({}, 'Example') # $example->execute; # 2
- recase example 3
-
package Example; use Venus::Class 'with'; with 'Venus::Role::Encaseable'; sub execute { my ($self) = @_; my $count = 1; $count = $self->recase('count', $count); $count = $self->recase('count', $count + 1); $count = $self->recase('count', $count + 1); return $self->recase('count', $count + 1); } package main; my $example = Example->new; # bless({}, 'Example') # $example->execute; # 4
- recase example 5
-
package Example; use Venus::Class 'with'; with 'Venus::Role::Encaseable'; sub execute { my ($self) = @_; my $count = 1; $count = $self->recase('count', $count); return $count; } package main; my $execute = Example->execute; # Exception! Venus::Fault
uncase
uncase(string $key) (any)
The uncase method dissociatesthe key and its corresponding value from the class instance and returns the value.
Since 4.15
- uncase example 1
-
package Example; use Venus::Class 'with'; with 'Venus::Role::Encaseable'; sub execute { my ($self) = @_; return $self->uncase; } package main; my $example = Example->new; # bless({}, 'Example') # $example->execute; # undef
- uncase example 2
-
package Example; use Venus::Class 'with'; with 'Venus::Role::Encaseable'; sub execute { my ($self) = @_; return $self->uncase('count'); } package main; my $example = Example->new; # bless({}, 'Example') # $example->execute; # undef
- uncase example 3
-
package Example; use Venus::Class 'with'; with 'Venus::Role::Encaseable'; sub execute { my ($self) = @_; my $count = 1; $self->encase('count', $count); return $self->uncase('count'); } package main; my $example = Example->new; # bless({}, 'Example') # $example->execute; # 1
- uncase example 4
-
package Example; use Venus::Class 'with'; with 'Venus::Role::Encaseable'; sub execute { my ($self) = @_; my $count = 1; $self->encase('count', $count); $count = $self->uncase('count'); return $self->uncase('count'); } package main; my $example = Example->new; # bless({}, 'Example') # $example->execute; # undef
- uncase example 5
-
package Example; use Venus::Class 'with'; with 'Venus::Role::Encaseable'; sub execute { my ($self) = @_; return $self->uncase('count'); } package main; my $execute = Example->execute; # Exception! Venus::Fault
- uncase example 6
-
package Example; use Venus::Class 'with'; with 'Venus::Role::Encaseable'; sub execute { my ($self) = @_; return $self->uncase('count'); } package main; my $example = Example->new; $example->uncase('count'); # Exception! Venus::Fault
AUTHORS
Awncorp, awncorp@cpan.org
LICENSE
Copyright (C) 2022, Awncorp, awncorp@cpan.org.
This program is free software, you can redistribute it and/or modify it under the terms of the Apache license version 2.0.