Commit | Line | Data |
8b6c1f59 |
1 | package Tak::REPL; |
2 | |
3 | use Term::ReadLine; |
4 | use Moo; |
5 | |
31a246e4 |
6 | has client => (is => 'ro', required => 1); |
8b6c1f59 |
7 | |
8 | sub run { |
31a246e4 |
9 | my $client = $_[0]->client; |
8b6c1f59 |
10 | my $read = Term::ReadLine->new('REPL'); |
11 | |
12 | while (1) { |
13 | my $line = $read->readline('re.pl$ '); |
14 | last unless defined $line; |
15 | next unless length $line; |
31a246e4 |
16 | my $result = $client->do(eval => $line); |
17 | print exists($result->{return}) |
18 | ? $result->{return} |
19 | : "Error: ".$result->{exception}; |
20 | if ($result->{stdout}) { |
21 | chomp($result->{stdout}); |
22 | print "STDOUT:\n${\$result->{stdout}}\n"; |
8b6c1f59 |
23 | } |
31a246e4 |
24 | if ($result->{stderr}) { |
25 | chomp($result->{stderr}); |
26 | print "STDERR:\n${\$result->{stderr}}\n"; |
8b6c1f59 |
27 | } |
28 | } |
29 | } |
6fd39562 |
30 | |
31 | 1; |