SYNOPSIS

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.

AUTHOR

I'm a material boy in a material world

Please note I do not expect to be gittip'ed or flattr'ed for this work,
rather it is simply a very pleasant surprise. I largely create and release
works like this because I need them or I find it enjoyable; however, don't let
that stop you if you feel like it ;)