5 # http://wiki.apache.org/couchdb/View_server
9 use Data::Dump qw(dump);
11 my $j = JSON::XS->new;
13 my $in = IO::Handle->new_from_fd(\*STDIN, 'r');
14 my $out = IO::Handle->new_from_fd(\*STDOUT, 'w');
18 $out->print(qq|["log", "@_"]\n|);
24 while(defined(my $line = $in->getline)) {
26 my $input = $j->decode($line);
27 my ($cmd, @args) = @$input;
29 if ( $cmd eq 'reset' ) {
31 $out->print("true\n");
32 } elsif ( $cmd eq 'add_fun' ) {
35 $out->print( qq|{"error": "$!", "reason": "$@"}\n| );
37 $out->print("true\n");
39 } elsif ( $cmd eq 'map_doc' ) {
43 eval { $fun->(@args) };
49 $out->print($j->utf8->encode( \@results ), "\n");
51 die "$cmd unimplemented", dump( $input );