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

NAME

Data::Object::Role::Arguable

ABSTRACT

Arguable Role for Perl 5 Plugin Classes

SYNOPSIS

  package Example;

  use Moo;

  with 'Data::Object::Role::Arguable';

  has name => (
    is => 'ro'
  );

  has options => (
    is => 'ro'
  );

  sub argslist {
    ('name', '@options')
  }

  package main;

  my $example = Example->new(['james', 'red', 'white', 'blue']);

DESCRIPTION

This package provides a mechanism for unpacking an argument list and creating a data structure suitable for passing to the consumer constructor. The argslist routine should return a list of attribute names in the order to be parsed. An attribute name maybe prefixed with "@" to denote that all remaining items should be assigned to an arrayref, e.g. @options, or "%" to denote that all remaining items should be assigned to a hashref, e.g. %options.

LIBRARIES

This package uses type constraints from:

Types::Standard

METHODS

This package implements the following methods:

packargs

  packargs() : HashRef

The packargs method uses argslist to return a data structure suitable for passing to the consumer constructor.

packargs example #1
  package main;

  my $example = Example->new;

  my $attributes = $example->packargs('james', 'red', 'white', 'blue');

unpackargs

  unpackargs(Any @args) : (Any)

The unpackargs method uses argslist to return a list of arguments from the consumer class instance in the appropriate order.

unpackargs example #1
  package main;

  my $example = Example->new(['james', 'red', 'white', 'blue']);

  my $arguments = [$example->unpackargs];

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