Adam Kennedy > MooseX-Atom-0.02 > MooseX::Atom

Download:
MooseX-Atom-0.02.tar.gz

Dependencies

Annotate this POD

View/Report Bugs
Module Version: 0.02   Source  

NAME ^

MooseX::Atom - Non-immutable classes are silly. Lets fix that.

SYNOPSIS ^

  # Catalyst the official way
  package Foo;
  
  use Moose;
  use namespace::autoclean;
  
  BEGIN {
      extends 'Catalyst::Controller::REST';
      
      with 'My::Something';
  }
  
  __PACKAGE__->meta->make_immutable;
  
  
  
  # Catalyst the (equivalent) atomic way
  package Bar;
  
  use MooseX::Atom [
        extends => 'Catalyst::Controller::REST',
        with    => 'My::Something',
  ];

DESCRIPTION ^

WARNING: THIS MODULE IS PRIMARILY A POLITICAL STATEMENT AT THIS TIME AND MAY CHANGE WITHOUT NOTICE IN RESPONSE TO FEEDBACK

Moose is an interesting object system, but it's interface can leave a lot to be desired.

Classes are built incrementally at post-BEGIN time despite the appearance to being declared at compile time.

Classes are also polluted by exported symbols by default.

Additionally, the syntax of the workarounds to reverse some of this weirdness is ugly. __PACKAGE__-meta->make_immutable> is possibly one of the worst official API interactions of all time.

MooseX::Atom attempts to resolve as much of this as possible, in as little code as possible and with no additional dependencies or dramatic parser-alterations such as with MooseX::Declare.

Declarations are passed directly in the use line, nothing is left in the calling class, and the class will be automatically and immediately immutable.

The resulting alternative syntax for Moose may not be ideal, but it demonstrates the kind of alternative syntactic sugar that would at least be far nicer than the one we get out of the box.

Equivalent syntactic sugar for roles is provided by MooseX::Role::Atom.

SUPPORT ^

Bugs should be reported via the CPAN bug tracker at

http://rt.cpan.org/NoAuth/ReportBug.html?Queue=MooseX-Atom

AUTHOR ^

Adam Kennedy <adamk@cpan.org>

SEE ALSO ^

Moose

COPYRIGHT ^

Copyright 2010 Adam Kennedy.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

The full text of the license can be found in the LICENSE file included with this module.

syntax highlighting: