summaryrefslogtreecommitdiffstats
path: root/lib/Parse/Keyword.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Parse/Keyword.pm')
-rw-r--r--lib/Parse/Keyword.pm30
1 files changed, 30 insertions, 0 deletions
diff --git a/lib/Parse/Keyword.pm b/lib/Parse/Keyword.pm
index e69de29..b2e2709 100644
--- a/lib/Parse/Keyword.pm
+++ b/lib/Parse/Keyword.pm
@@ -0,0 +1,30 @@
+package Parse::Keyword;
+use strict;
+use warnings;
+use 5.014;
+# ABSTRACT: write syntax extensions in perl
+
+use Devel::CallParser;
+use XSLoader;
+
+XSLoader::load(
+ __PACKAGE__,
+ exists $Parse::Keyword::{VERSION} ? ${ $Parse::Keyword::{VERSION} } : (),
+);
+
+sub import {
+ my $package = shift;
+ my ($keywords) = @_;
+
+ my $caller = caller;
+
+ for my $keyword (keys %$keywords) {
+ my $sub = do {
+ no strict 'refs';
+ \&{ $caller . '::' . $keyword };
+ };
+ install_keyword_handler($sub, $keywords->{$keyword});
+ }
+}
+
+1;