Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Declare methods requirements that must be satisfied
Perl
tag: 0.002

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
lib/MooseX
t
.gitignore
Changes
README.pod
dist.ini

README.pod

NAME

MooseX::AbstractMethod - Declare methods requirements that must be satisfied

VERSION

version 0.002

SYNOPSIS

    use Moose;
    use MooseX::Abstract;

    requires 'bar';

    # synonm to 'requires'
    abstract 'foo';

DESCRIPTION

This extensions allows classes to flag certain methods as being required to be implemented by a subclass, much as a Moose::Role does with 'requires'.

USAGE

As in the synopsis, simply mark certain methods as being required by subclasses by passing their names to "abstract" or "requires". This will cause a method of the same name to be installed in the class that will die horribly if it's ever called. Additionally, when a class is made immutable, all of its methods are checked to see if they're marked as abstract; if any abstract methods exists that were not created in the current class, we die horribly.

Checking for method satisfaction on make_immutable isn't perfect, but AFAICT it's the most reasonable approach possible at the moment. (Corrections welcome.)

NEW SUGAR

abstract

abstract() allows one to declare a method dependency that must be satisfied by a subclass before it is invoked, and before the subclass is made immutable.

    abstract 'method_name_that_must_be_satisfied';

requires

requires() is a synonym for abstract() and works in the way you'd expect.

SEE ALSO

BUGS

All complex software has bugs lurking in it, and this module is no exception.

Bugs, feature requests and pull requests through GitHub are most welcome; our page and repo (same URI):

    https://github.com/RsrchBoy/moosex-abstractmethod

AUTHOR

Chris Weyl <cweyl@alumni.drew.edu>

COPYRIGHT AND LICENSE

This software is Copyright (c) 2011 by Chris Weyl.

This is free software, licensed under:

  The GNU Lesser General Public License, Version 2.1, February 1999
Something went wrong with that request. Please try again.