https://github.com/awncorp/data-object-role-formulatable
Formulatable Role for Perl 5
https://github.com/awncorp/data-object-role-formulatable
object-oriented perl perl5
Last synced: 16 days ago
JSON representation
Formulatable Role for Perl 5
- Host: GitHub
- URL: https://github.com/awncorp/data-object-role-formulatable
- Owner: awncorp
- License: other
- Created: 2020-10-03T19:05:29.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2020-10-03T20:34:51.000Z (over 5 years ago)
- Last Synced: 2025-02-21T09:19:27.455Z (over 1 year ago)
- Topics: object-oriented, perl, perl5
- Language: Perl
- Size: 36.1 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README
- Changelog: CHANGES
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
NAME
Data::Object::Role::Formulatable - Objectify Class Attributes
ABSTRACT
Formulatable Role for Perl 5
SYNOPSIS
package Test::Student;
use registry;
use routines;
use Data::Object::Class;
use Data::Object::ClassHas;
with 'Data::Object::Role::Formulatable';
has 'name';
has 'dates';
sub formulate {
{
name => 'test/data/str',
dates => 'test/data/str'
}
}
package main;
my $student = Test::Student->new({
name => 'levi nolan',
dates => ['1587717124', '1587717169']
});
# $student->name;
#
# $student->dates;
# []
DESCRIPTION
This package provides a mechanism for automatically inflating objects
from constructor arguments.
INTEGRATES
This package integrates behaviors from:
Data::Object::Role::Buildable
LIBRARIES
This package uses type constraints from:
Types::Standard
SCENARIOS
This package supports the following scenarios:
automation
package Test::Teacher;
use registry;
use routines;
use Data::Object::Class;
use Data::Object::ClassHas;
with 'Data::Object::Role::Formulatable';
has 'name';
has 'dates';
sub formulate {
{
name => 'test/data/str',
dates => 'test/data/str'
}
}
sub after_formulate {
{
name => 1
}
}
sub after_formulate_name {
my ($self, $value) = @_;
$value
}
sub before_formulate {
{
name => 1
}
}
sub before_formulate_name {
my ($self, $value) = @_;
$value
}
package main;
my $teacher = Test::Teacher->new({
name => 'levi nolan',
dates => ['1587717124', '1587717169']
});
# $teacher->name;
#
# $teacher->dates;
# []
This package supports automatically calling "before" and "after"
routines specific to each piece of data provided. This is automatically
enabled if the presence of a before_formulate and/or after_formulate
routine is detected. If so, these routines should return a hashref
keyed off the class attributes where the values are either 1 (denoting
that the hook name should be generated) or some other routine name.
AUTHOR
Al Newkirk, awncorp@cpan.org
LICENSE
Copyright (C) 2011-2019, Al Newkirk, et al.
This is free software; you can redistribute it and/or modify it under
the terms of the The Apache License, Version 2.0, as elucidated in the
"license file"
.
PROJECT
Wiki
Project
Initiatives
Milestones
Contributing
Issues