From 60b8b4ddf6ce5280991a87fe3947aa769bf9cb8b Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Tue, 23 Jul 2013 18:56:20 -0400 Subject: pass the keyword name to parser functions --- Keyword.xs | 2 ++ t/keyword-name.t | 25 +++++++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 t/keyword-name.t diff --git a/Keyword.xs b/Keyword.xs index 0cad122..a697266 100644 --- a/Keyword.xs +++ b/Keyword.xs @@ -65,6 +65,8 @@ static OP *parser_callback(pTHX_ GV *namegv, SV *psobj, U32 *flagsp) */ PUSHMARK(SP); + mXPUSHp(GvNAME(namegv), GvNAMELEN(namegv)); + PUTBACK; count = call_sv(psobj, G_ARRAY); SPAGAIN; if (count > 1) { diff --git a/t/keyword-name.t b/t/keyword-name.t new file mode 100644 index 0000000..8ab2f44 --- /dev/null +++ b/t/keyword-name.t @@ -0,0 +1,25 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use Test::More; + +BEGIN { + package My::Parser; + use Exporter 'import'; + our @EXPORT = 'foo'; + + use Parse::Keyword { foo => \&parse_foo }; + + sub foo { $_[0] } + sub parse_foo { + my ($keyword) = @_; + return sub { uc($keyword) }; + } + + $INC{'My/Parser.pm'} = __FILE__; +} + +use My::Parser; +is(foo, 'FOO'); + +done_testing; -- cgit v1.2.3