The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

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;
  # <Test::Data::Str>

  # $student->dates;
  # [<Test::Data::Str>]

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;
  # <Test::Data::Str>

  # $teacher->dates;
  # [<Test::Data::Str>]

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