Group
Extension

Perldoc-Server/lib/Perldoc/Server/Controller/Search.pm

package Perldoc::Server::Controller::Search;

use strict;
use warnings;
use 5.010;
use parent 'Catalyst::Controller';

=head1 NAME

Perldoc::Server::Controller::Search - Catalyst Controller

=head1 DESCRIPTION

Catalyst Controller.

=head1 METHODS

=cut


=head2 index

=cut

sub index :Path :Args(0) {
  my ($self, $c) = @_;

  if (my $query = $c->req->param('q')) { 
    my @functions = $c->model('PerlFunc')->list;
    my @pages     = sort {$a cmp $b} $c->model('Index')->find_modules;

    given ($query) {
      when (@functions) {
        return $c->response->redirect( $c->uri_for('/functions',$query) );
      }
      when (@pages) {
        return $c->response->redirect( $c->uri_for('/view',split('::',$query)) );
      }
      when (/^($query)$/i ~~ @pages) {
        my $matched_page = $1;
        return $c->response->redirect( $c->uri_for('/view',split('::',$matched_page)) );
      }
      when (/^($query.*)$/i ~~ @pages) {
        my $matched_page = $1;
        return $c->response->redirect( $c->uri_for('/view',split('::',$matched_page)) );
      }
    }
    
    $c->stash->{query} = $query;
  }
  
  $c->stash->{page_name}     = 'Search results';
  $c->stash->{page_template} = 'search_results.tt';
}


=head1 AUTHOR

Jon Allen

=head1 LICENSE

This library is free software, you can redistribute it and/or modify
it under the same terms as Perl itself.

=cut

1;


Powered by Groonga
Maintained by Kenichi Ishigaki <ishigaki@cpan.org>. If you find anything, submit it on GitHub.