Add a Nopaste plugin. #nopaste will publish your current session using App::Nopaste
[p5sagit/Devel-REPL.git] / lib / Devel / REPL / Plugin / Nopaste.pm
CommitLineData
24cc824f 1package Devel::REPL::Plugin::Nopaste;
2
3use Moose::Role;
4use MooseX::AttributeHelpers;
5use namespace::clean -except => [ 'meta' ];
6
7with 'Devel::REPL::Plugin::Turtles';
8
9has complete_session => (
10 metaclass => 'String',
11 is => 'rw',
12 isa => 'Str',
13 default => '',
14 provides => {
15 append => 'add_to_session',
16 },
17);
18
19around eval => sub {
20 my $orig = shift;
21 my $self = shift;
22 my $line = shift;
23
24 my @ret = $orig->($self, $line, @_);
25
26 # prepend each line with #
27 $line =~ s/^/# /mg;
28
29 my $step = $line . "\n"
30 . join("\n", @ret)
31 . "\n\n";
32
33 $self->add_to_session($step);
34
35 return @ret;
36};
37
38sub command_nopaste {
39 my $self = shift;
40
41 require App::Nopaste;
42 return App::Nopaste->nopaste(
43 text => $self->complete_session,
44 desc => "Devel::REPL session",
45 lang => "perl",
46 );
47}
48
491;
50