Add samples/ directory and trivial render-search.pl server.
[simpleserver-moved-to-github.git] / samples / render-search.pl
1 #!/usr/bin/perl -w
2
3 use Net::Z3950::SimpleServer;
4 use strict;
5
6 my $handler = Net::Z3950::SimpleServer->new(SEARCH => \&search_handler,
7                                             FETCH => \&fetch_handler);
8 $handler->launch_server("render-search.pl", @ARGV);
9
10 sub search_handler {
11     my($args) = @_;
12     print "got search: ", $args->{RPN}->{query}->render(), "\n";
13 }
14
15 sub fetch_handler {} # no-op
16
17
18 package Net::Z3950::RPN::Term;
19 sub render {
20     my $self = shift;
21     return '"' . $self->{term} . '"';
22 }
23
24 package Net::Z3950::RPN::And;
25 sub render {
26     my $self = shift;
27     return '(' . $self->[0]->render() . ' AND ' .
28                  $self->[1]->render() . ')';
29 }
30
31 package Net::Z3950::RPN::Or;
32 sub render {
33     my $self = shift;
34     return '(' . $self->[0]->render() . ' OR ' .
35                  $self->[1]->render() . ')';
36 }
37
38 package Net::Z3950::RPN::AndNot;
39 sub render {
40     my $self = shift;
41     return '(' . $self->[0]->render() . ' ANDNOT ' .
42                  $self->[1]->render() . ')';
43 }