From: Lukas Mai Date: Tue, 19 Jun 2012 03:41:04 +0000 (+0200) Subject: Merge branch 'method-attr' into classmethod X-Git-Tag: v0.06~6 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=34bfa89e94e1f64d3dcdedfe55dedfe872acd119;hp=231ddb47b1dd3cd1d9d7cf9148a6c256ff6951ec;p=p5sagit%2FFunction-Parameters.git Merge branch 'method-attr' into classmethod --- diff --git a/lib/Function/Parameters.pm b/lib/Function/Parameters.pm index 88c3e66..5402a4d 100644 --- a/lib/Function/Parameters.pm +++ b/lib/Function/Parameters.pm @@ -34,6 +34,11 @@ my %type_map = ( shift => '$self', attrs => ':method', }, + classmethod => { + name => 'optional', + shift => '$class', + attrs => ':method', + }, ); sub import { @@ -189,14 +194,15 @@ that you pass a hash reference in the import list: use Function::Parameters { proc => 'function', meth => 'method' }; # -or- use Function::Parameters { proc => 'function' }; # -or- - use Function::Parameters { meth => 'method' }; + use Function::Parameters { meth => 'method' }; # etc. The first line creates two keywords, C and C (for defining functions and methods, respectively). The last two lines only create one keyword. Generally the hash keys can be any identifiers you want while the -values have to be either C, C, or a hash reference (see -below). The difference between C and C is that Cs -automatically L their first argument into C<$self>. +values have to be either C, C, C or a hash +reference (see below). The difference between C and C is that +Cs automatically L their first argument into +C<$self> (Cs are similar but shift into C<$class>). The following shortcuts are available: @@ -265,9 +271,11 @@ turns into =back -Plain C<'function'> is equivalent to C<< { name => 'optional' } >>, and plain +Plain C<'function'> is equivalent to C<< { name => 'optional' } >>, plain C<'method'> is equivalent to -C<< { name => 'optional', shift => '$self', attrs => ':method' } >>. +C<< { name => 'optional', shift => '$self', attrs => ':method' } >>, and plain +C<'classmethod'> is equivalent to +C<< { name => 'optional', shift => '$class', attrs => ':method' } >>. =head2 Syntax and generated code