NAME
Syntax::Feature::Simple - DWIM syntax extensions
VERSION
version 0.002
DESCRIPTION
This is a more of a syntax extension package than a simple extension by itself. It will detect what kind of package it is imported into, and setup appropriate syntax extensions depending on the type.
Moose Classes and Roles
If a Moose class or role is detected, this extension will setup a fun
keyword for function declarations, a method
keyword, and one keyword each for before
, after
and around
.
The modifiers behave exactly like normal method declarations, except for around
which will provide the original method in a lexical named $orig
.
package MyProject::MooseClassOrRole;
use Moose;
# or use Moose::Role
# or use MooseX::Role::Parameterized,
# but with body inside role { ... }
use syntax qw( simple/v2 );
fun foo ($x) { ... }
my $anon_f = fun ($x) { ... };
method bar ($x) { $self->say($x) }
my $anon_m = method ($x) { $self->say($x) };
before baz ($x) { $self->say($x) }
after baz ($x) { $self->say($x) }
around baz ($x) { $self->say($self->$orig($x)) }
1;
In case of a parameterizable role the right callback will be called, but compatibility with anonymous method declarations will be preserved:
package MyProject::ParamRole;
use MooseX::Role::Parameterized;
use syntax qw( simple/v2 );
parameter method_name => (is => 'ro');
# defaults to $parameter
role ($param) {
my $name = $param->method_name;
method "$name" ($n) { $self->say($n) }
my $anon = method ($n) { $self->say($n) };
}
1;
As of version 2 you will also get sugar for the role
body that allows you to specify a signature. By default, the parameter object will be available in a variable named $parameter
.
Plain Packages
By default, if no other kind of package type is detected, simple/v1
will only setup the function syntax, while simple/v2
will setup the function and the method extension.
package MyProject::Util;
use strictures 1;
use syntax qw( simple/v2 );
fun foo ($x) { ... }
my $anon_f = fun ($x) { ... };
method bar ($class: $x, $y) { ... }
my $anon_m = method ($x) { ... };
1;
FUTURE CANDIDATES
simple/v*
(basic set)
no indirect
use true
simple/x*
(extended set)
Smart::Match if a valid Perl version was declared
SEE ALSO
- Syntax::Feature::Simple::V1
-
Version 1 of the extension set.
- Syntax::Feature::Simple::V2
-
Version 2 of the extension set.
- syntax
-
The syntax dispatching module.
- Syntax::Feature::Simple
-
Contains general information about this extension.
- Syntax::Feature::Method
-
Specifics about the
method
and modifier keywords. - Syntax::Feature::Function
-
Specifics about the
fun
function keyword. - Moose
-
Post-modern object-orientation.
- MooseX::Role::Parameterized
-
Parameterizable roles for Moose.
BUGS
Please report any bugs or feature requests to bug-syntax-feature-simple@rt.cpan.org or through the web interface at: http://rt.cpan.org/Public/Dist/Display.html?Name=Syntax-Feature-Simple
AUTHOR
Robert 'phaylon' Sedlacek <rs@474.at>
COPYRIGHT AND LICENSE
This software is copyright (c) 2011 by Robert 'phaylon' Sedlacek.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.