X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=Plugin.pod;h=7fda6f78d2fa14303d51db1ed580d964d7ecde9f;hb=bc365867d2883a69972ef82adf4b19d0680e43aa;hp=d4bb1a246bed672d35878a3dc84e4dd310b9d49d;hpb=2dd7bc5f80da4fe2220e28de1102641c239d084c;p=perl%2Fmodules%2Fre-engine-Plugin.git
diff --git a/Plugin.pod b/Plugin.pod
index d4bb1a2..7fda6f7 100644
--- a/Plugin.pod
+++ b/Plugin.pod
@@ -19,12 +19,12 @@ C or runtime for C patterns, or something inbetween
depending on variable interpolation etc.
When this module is loaded into a scope it inserts a hook into
-C<$^H{regcomp}> (as described in L) to have each regexp
-constructed in its lexical scope handled by this engine, but it
-differs from other engines in that it also inserts other hooks into
-C<%^H> in the same scope that point to user-defined subroutines to use
-during compilation, execution etc, these are described in
-L below.
+C<$^H{regcomp}> (as described in L and L) to
+have each regexp constructed in its lexical scope handled by this
+engine, but it differs from other engines in that it also inserts
+other hooks into C<%^H> in the same scope that point to user-defined
+subroutines to use during compilation, execution etc, these are
+described in L below.
The callbacks (e.g. L) then get called with a
L object as their first argument. This object
@@ -51,7 +51,7 @@ caller's scope use use the following snippet:
sub import
{
- # Populates the caller's %^H with our callbacks
+ # Sets the caller's $^H{regcomp} his %^H with our callbacks
re::engine::Plugin->import(
comp => \&comp,
exec => \&exec,
@@ -122,6 +122,9 @@ available as the second argument (C<$str>) and through the L
method. The routine should return a true value if the match was
successful, and a false one if it wasn't.
+This callback can also be specified on an individual basis with the
+L method.
+
=head1 METHODS
=head2 str
@@ -149,7 +152,7 @@ hashrefs, objects, etc.
=head2 mod
my %mod = $rx->mod;
- say "has /ix" if $mod{i} and $mod{x};
+ say "has /ix" if %mod ~~ 'i' and %mod ~~ 'x';
A key-value pair list of the modifiers the pattern was compiled with.
The keys will zero or more of C and the values will be true
@@ -182,6 +185,29 @@ called at all.
The length specified will be used as a a byte length (using
L), not a character length.
+=head2 callbacks
+
+ # A dumb regexp engine that just tests string equality
+ use re::engine::Plugin comp => sub {
+ my ($re) = @_;
+
+ my $pat = $re->pattern;
+
+ $re->callbacks(
+ exec => sub {
+ my ($re, $str) = @_;
+ return $pat eq $str;
+ },
+ );
+ };
+
+Takes a list of key-value pairs of names and subroutines, and replace the
+callback currently attached to the regular expression for the type given as
+the key by the code reference passed as the corresponding value.
+
+The only valid key is currently C. See L for more details about
+this callback.
+
=head2 num_captures
$re->num_captures(
@@ -391,13 +417,17 @@ Please report any bugs that aren't already listed at
L to
L
-=head1 AUTHOR
+=head1 AUTHORS
-Evar ArnfjErE Bjarmason
+Evar ArnfjErE Bjarmason C<< >>
+
+Vincent Pit C<< >>
=head1 LICENSE
-Copyright 2007 Evar ArnfjErE Bjarmason.
+Copyright 2007-2008 Evar ArnfjErE Bjarmason.
+
+Copyright 2009 Vincent Pit.
This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.