X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=p5sagit%2FDevel-REPL.git;a=blobdiff_plain;f=lib%2FDevel%2FREPL%2FPlugin%2FNopaste.pm;h=dcf83c4d6903ecbcbf51ce4a52bc33662ff1bfee;hp=e8baa539dc4a3217c25a0f8b89a8a63da6fd024b;hb=e2d0b0198529e2e06593df8ebab7a8413bc932e1;hpb=da4881b1648ae6e76bf3d9387df92ef6c57a08a6 diff --git a/lib/Devel/REPL/Plugin/Nopaste.pm b/lib/Devel/REPL/Plugin/Nopaste.pm index e8baa53..dcf83c4 100644 --- a/lib/Devel/REPL/Plugin/Nopaste.pm +++ b/lib/Devel/REPL/Plugin/Nopaste.pm @@ -1,9 +1,9 @@ package Devel::REPL::Plugin::Nopaste; use Devel::REPL::Plugin; -use MooseX::AttributeHelpers; -use namespace::clean -except => [ 'meta' ]; +use namespace::sweep; use Scalar::Util qw(blessed); +use MooX::Types::MooseLike::Base qw(Str); sub BEFORE_PLUGIN { my $self = shift; @@ -11,30 +11,41 @@ sub BEFORE_PLUGIN { } has complete_session => ( - metaclass => 'String', is => 'rw', - isa => 'Str', + isa => Str, lazy => 1, - default => '', - provides => { - append => 'add_to_session', - }, + default => sub { '' }, ); +sub add_to_session { + my $self = shift; + my $session = $self->complete_session; + $session .= $_ for @_; + $self->complete_session($session); +} + has paste_title => ( - metaclass => 'String', is => 'rw', - isa => 'Str', + isa => Str, lazy => 1, - default => 'Devel::REPL session', + default => sub { 'Devel::REPL session' }, +); + +has 'nopaste_format' => ( + is => 'rw', + isa => sub { $_[0] =~ qr[^(?:comment_code|comment_output)$] }, + lazy => 1, + default => sub { 'comment_output' }, ); before eval => sub { my $self = shift; my $line = shift; - # prepend each line with # - $line =~ s/^/# /mg; + if ( $self->nopaste_format() eq 'comment_code' ) { + # prepend each line with # + $line =~ s/^/# /mg; + } $self->add_to_session($line . "\n"); }; @@ -55,6 +66,11 @@ around eval => sub { } } @ret; + if ( $self->nopaste_format() eq 'comment_output' ) { + # prepend each line with # + map { $_ =~ s/^/# /mg } @ret_as_str; + } + $self->add_to_session(join("\n", @ret_as_str) . "\n\n"); return @ret; @@ -103,6 +119,25 @@ C<#pastetitle example of some code> defaults to 'Devel::REPL session' +=head1 CONFIGURATION + +=head2 nopaste_format + +The format sent to the nopaste server can be adjusted with the +C option. By default, the output of each perl +statement is commented out, and the perl statements themselves are +not. This can be reversed by setting the C attribute +to C like this in your re.pl file: + +C<< $_REPL->nopaste_format( 'comment_code' ); >> + +The default of commenting out the output would be set like this: + +C<< $_REPL->nopaste_format( 'comment_output' ); >> + +These options can be set during a Devel::REPL session, but only affect +the future parts of the session, not the past parts. + =head1 AUTHOR Shawn M Moore, C<< >>