Commit | Line | Data |
24cc824f |
1 | package Devel::REPL::Plugin::Nopaste; |
2 | |
3 | use Moose::Role; |
4 | use MooseX::AttributeHelpers; |
5 | use namespace::clean -except => [ 'meta' ]; |
6 | |
7 | with 'Devel::REPL::Plugin::Turtles'; |
8 | |
9 | has complete_session => ( |
10 | metaclass => 'String', |
11 | is => 'rw', |
12 | isa => 'Str', |
13 | default => '', |
14 | provides => { |
15 | append => 'add_to_session', |
16 | }, |
17 | ); |
18 | |
19 | around 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 | |
38 | sub 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 | |
49 | 1; |
50 | |