blob: a3fa90928d0127fac4755447e4d7c2df0b4cfd32 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
package Reply::Plugin::Nopaste;
use strict;
use warnings;
use base 'Reply::Plugin';
use App::Nopaste;
# XXX note that this has to be loaded early, in order to catch all of the
# appropriate manipulations that plugins do ([DataDump], etc)
sub new {
my $class = shift;
my %opts = @_;
my $self = $class->SUPER::new(@_);
$self->{history} = '';
$self->{service} = $opts{service};
return $self;
}
sub prompt {
my $self = shift;
my ($next, @args) = @_;
my $prompt = $next->(@args);
$self->{prompt} = $prompt;
return $prompt;
}
sub read_line {
my $self = shift;
my ($next, @args) = @_;
my $line = $next->(@args);
$self->{line} = "$line\n" if defined $line;
return $line;
}
sub print_error {
my $self = shift;
my ($next, $error) = @_;
$self->{result} = $error;
$next->($error);
}
sub print_result {
my $self = shift;
my ($next, @result) = @_;
$self->{result} = join('', @result) . "\n";
$next->(@result);
}
sub loop {
my $self = shift;
my $prompt = delete $self->{prompt};
my $line = delete $self->{line};
my $result = delete $self->{result};
$self->{history} .= "$prompt$line$result";
}
sub command_nopaste {
my $self = shift;
my ($line) = @_;
$line = "Reply session" unless length $line;
App::Nopaste->nopaste(
text => $self->{history},
desc => $line,
lang => 'perl',
(defined $self->{service}
? (services => [ $self->{service} ])
: ()),
);
return '';
}
1;
|