NAME
Venus::Role::Buildable - Buildable Role
ABSTRACT
Buildable Role for Perl 5
SYNOPSIS
package
Example;
use
Venus::Class;
attr
'test'
;
package
main;
my
$example
= Example->new;
# $example->test;
DESCRIPTION
This package modifies the consuming package and provides methods for hooking into object construction of the consuming class, e.g. handling single-arg object construction.
METHODS
This package provides the following methods:
build_arg
build_arg(any
$data
) (hashref)
The build_arg method, if defined, is only called during object construction when a single non-hashref is provided.
Since 0.01
- build_arg example 1
-
package
Example1;
use
Venus::Class;
attr
'x'
;
attr
'y'
;
sub
build_arg {
my
(
$self
,
$data
) =
@_
;
$data
= {
x
=>
$data
,
y
=>
$data
};
return
$data
;
}
package
main;
my
$example
= Example1->new(10);
# $example->x;
# $example->y;
build_args
build_args(hashref
$data
) (hashref)
The build_args method, if defined, is only called during object construction to hook into the handling of the arguments provided.
Since 0.01
- build_args example 1
-
package
Example2;
use
Venus::Class;
attr
'x'
;
attr
'y'
;
sub
build_args {
my
(
$self
,
$data
) =
@_
;
$data
->{x} ||=
int
(
$data
->{x} || 100);
$data
->{y} ||=
int
(
$data
->{y} || 100);
return
$data
;
}
package
main;
my
$example
= Example2->new(
x
=> 10,
y
=> 10);
# $example->x;
# $example->y;
build_nil
build_nil(hashref
$data
) (any)
The build_nil method, if defined, is only called during object construction when a single empty hashref is provided.
Since 0.01
- build_nil example 1
-
package
Example4;
use
Venus::Class;
attr
'x'
;
attr
'y'
;
sub
build_nil {
my
(
$self
,
$data
) =
@_
;
$data
= {
x
=> 10,
y
=> 10 };
return
$data
;
}
package
main;
my
$example
= Example4->new({});
# $example->x;
# $example->y;
build_self
build_self(hashref
$data
) (object)
The build_self method, if defined, is only called during object construction after all arguments have been handled and set.
Since 0.01
- build_self example 1
-
package
Example3;
use
Venus::Class;
attr
'x'
;
attr
'y'
;
sub
build_self {
my
(
$self
,
$data
) =
@_
;
die
if
!
$self
->x;
die
if
!
$self
->y;
return
$self
;
}
package
main;
my
$example
= Example3->new(
x
=> 10,
y
=> 10);
# $example->x;
# $example->y;
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.