X-Git-Url: http://git.indexdata.com/?p=simpleserver-moved-to-github.git;a=blobdiff_plain;f=samples%2Frender-search.pl;fp=samples%2Frender-search.pl;h=352cce2250bfcae651f2312aedffcb6c278845c4;hp=0000000000000000000000000000000000000000;hb=21d6dec4510eb7809e9c050ad33b80fcf4518896;hpb=73a1284d46f6343740ba2155f10171a104b3deb8 diff --git a/samples/render-search.pl b/samples/render-search.pl new file mode 100755 index 0000000..352cce2 --- /dev/null +++ b/samples/render-search.pl @@ -0,0 +1,43 @@ +#!/usr/bin/perl -w + +use Net::Z3950::SimpleServer; +use strict; + +my $handler = Net::Z3950::SimpleServer->new(SEARCH => \&search_handler, + FETCH => \&fetch_handler); +$handler->launch_server("render-search.pl", @ARGV); + +sub search_handler { + my($args) = @_; + print "got search: ", $args->{RPN}->{query}->render(), "\n"; +} + +sub fetch_handler {} # no-op + + +package Net::Z3950::RPN::Term; +sub render { + my $self = shift; + return '"' . $self->{term} . '"'; +} + +package Net::Z3950::RPN::And; +sub render { + my $self = shift; + return '(' . $self->[0]->render() . ' AND ' . + $self->[1]->render() . ')'; +} + +package Net::Z3950::RPN::Or; +sub render { + my $self = shift; + return '(' . $self->[0]->render() . ' OR ' . + $self->[1]->render() . ')'; +} + +package Net::Z3950::RPN::AndNot; +sub render { + my $self = shift; + return '(' . $self->[0]->render() . ' ANDNOT ' . + $self->[1]->render() . ')'; +}