From: Sartak Date: Sun, 25 May 2008 19:38:16 +0000 (+0000) Subject: Add a PPI plugin for #ppi CODE X-Git-Tag: v1.003015~106 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=p5sagit%2FDevel-REPL.git;a=commitdiff_plain;h=c5bf3ed26017b944073c4328790f21686883eca9 Add a PPI plugin for #ppi CODE git-svn-id: http://dev.catalyst.perl.org/repos/bast/trunk/Devel-REPL@4403 bd8105ee-0ff8-0310-8827-fb3f25b6796d --- diff --git a/lib/Devel/REPL/Plugin/B/Concise.pm b/lib/Devel/REPL/Plugin/B/Concise.pm index 97ec791..1ec6afb 100644 --- a/lib/Devel/REPL/Plugin/B/Concise.pm +++ b/lib/Devel/REPL/Plugin/B/Concise.pm @@ -75,7 +75,7 @@ This plugin provides a C command that uses L to dump optrees of expressions. The code is not actually executed, which means that when used with -L there is . +L there is no new value in C<_>. The command takes the same options as L, e.g. C<-basic> or C<-exec> to determine the dump order, C<-debug>, C<-concise> and C<-terse> to diff --git a/lib/Devel/REPL/Plugin/PPI.pm b/lib/Devel/REPL/Plugin/PPI.pm new file mode 100644 index 0000000..5a58214 --- /dev/null +++ b/lib/Devel/REPL/Plugin/PPI.pm @@ -0,0 +1,66 @@ +#!/usr/bin/perl + +package Devel::REPL::Plugin::PPI; +use Devel::REPL::Plugin; + +use PPI; +use PPI::Dumper; + +use namespace::clean -except => [ 'meta' ]; + +with qw(Devel::REPL::Plugin::Turtles); + +sub expr_command_ppi { + my ( $self, $eval, $code ) = @_; + + my $document = PPI::Document->new(\$code); + my $dumper = PPI::Dumper->new($document); + return $dumper->string; +} + +__PACKAGE__ + +__END__ + +=pod + +=head1 NAME + +Devel::REPL::Plugin::PPI - PPI dumping of Perl code + +=head1 SYNOPSIS + + repl> #ppi Devel::REPL + PPI::Document + PPI::Statement + PPI::Token::Word 'Devel::REPL' + + repl> #ppi { + > warn $]; + > } + PPI::Document + PPI::Statement::Compound + PPI::Structure::Block { ... } + PPI::Token::Whitespace '\n' + PPI::Statement + PPI::Token::Word 'warn' + PPI::Token::Whitespace ' ' + PPI::Token::Magic '$]' + PPI::Token::Structure ';' + PPI::Token::Whitespace '\n' + +=head1 DESCRIPTION + +This plugin provides a C command that uses L to dump +L-parsed Perl documents. + +The code is not actually executed, which means that when used with +L there is no new value in C<_>. + +=head1 AUTHOR + +Shawn M Moore Esartak@gmail.comE + +=cut + +