NAME
Keyword::API
VERSION
version 0.0004
SYNOPSIS
use
Keyword::API;
sub
import
{
my
(
$class
,
%params
) =
@_
;
my
$name
=
%params
&&
$params
{-as} ?
$params
{-as} :
"method"
;
install_keyword(__PACKAGE__,
$name
);
}
sub
unimport { uninstall_keyword() }
sub
parser {
lex_read_space(0);
my
$sub_name
= lex_unstuff_to_ws();
my
$sig
= lex_unstuff_to(
'{'
);
my
(
$roll
) =
$sig
=~ /\((.+)\)\s*{/;
lex_stuff(
"sub $sub_name {my (\$self, $roll) = \@_;"
);
};
DESCRIPTION
This module provides a pure perl interface for the keywords API added to the perl core in 5.12.
NAME
Keyword::API - Perl interface to the keyword API
EXPERIMENTAL
This module is likely to change in the near future. Patches and feedback most welcome.
EXPORT
install_keyword
uninstall_keyword
lex_read_space
lex_read
lex_read_to_ws
lex_stuff
lex_unstuff
lex_unstuff_to
lex_unstuff_to_ws
FUNCTIONS
install_keyword
pass your package name and provide the name of your keyword e.g 'method'
uninstall_keyword
remove the keyword hook, no arguments required.
lex_read_space
lex_read_space(0);
reads white space and comments in the text currently being lexed.
lex_read
my
$str
= lex_read(
$n
);
Consumes $n bytes of text from the lexer buffer.
lex_read_to_ws
my
$toke
= lex_read_token();
Consumes any text in the lexer until white space is reached.
lex_stuff
lex_stuff(
"sub foo { ..."
);
Injects a string into the lexer buffer.
lex_unstuff
my
$discarded_text
= lex_unstuff(
$n
);
Discard $n bytes from the lexers buffer
lex_unstuff_to
my
$discarded_text
= lex_unstuff_to(
"{"
);
Discard everything in the buffer until the character is met.
lex_unstuff_to_ws
my
$discarded_text
= lext_unstuff_token();
Discard everything in the buffer until white space is met
SEE ALSO
perlapi Devel::Declare Filter::Simple Syntax::Feature::Method
AUTHOR
Robin Edwards <robin.ge@gmail.com>
COPYRIGHT AND LICENSE
This software is copyright (c) 2011 by Robin Edwards.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.