Release commit for 0.001004
[scpubgit/Tak.git] / lib / Tak / REPL.pm
1 package Tak::REPL;
2
3 use Term::ReadLine;
4 use Moo;
5
6 has client => (is => 'ro', required => 1);
7
8 sub run {
9   my $client = $_[0]->client;
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;
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";
23     }
24     if ($result->{stderr}) {
25       chomp($result->{stderr});
26       print "STDERR:\n${\$result->{stderr}}\n";
27     }
28   }
29 }
30
31 1;