| Perldoc-Server documentation | Contained in the Perldoc-Server distribution. |
Perldoc::Server::Controller::Index - Catalyst Controller
Catalyst Controller.
Jon Allen
This library is free software, you can redistribute it and/or modify it under the same terms as Perl itself.
| Perldoc-Server documentation | Contained in the Perldoc-Server distribution. |
package Perldoc::Server::Controller::Index; use strict; use warnings; use parent 'Catalyst::Controller';
sub index :Path :Args(1) { my ($self, $c, $section) = @_; if ($c->model('Section')->exists($section)) { my @pages = map { { name => $_, title => $c->model('Pod')->title($_), link => $c->uri_for('/view',split(/::/,$_)), } } $c->model('Section')->pages($section); $c->stash->{pages} = \@pages; $c->stash->{title} = $c->model('Section')->name($section); $c->stash->{page_template} = 'section_index.tt'; } } sub modules :Local :Args(0) { my ($self, $c) = @_; $c->response->redirect( $c->uri_for('/index/modules','A') ); } sub functions :Local :Args(0) { my ($self, $c) = @_; my @function_az; foreach my $letter ('A'..'Z') { my ($link,@functions); if (my @function_list = grep {/^[^a-z]*$letter/i} sort ($c->model('PerlFunc')->list)) { $link = "#$letter"; foreach my $function (@function_list) { (my $url = $function) =~ s/[^\w-].*//i; my $description = $c->model('PerlFunc')->description($function); push @functions,{name=>$function, url=>$url, description=>$description}; } } push @function_az, {letter=>$letter, link=>$link, functions=>\@functions}; } $c->stash->{title} = 'Perl functions A-Z'; $c->stash->{function_az} = \@function_az; $c->stash->{page_template} = 'function_index.tt'; } sub functions_by_category :Local :Args(0) { my ($self, $c) = @_; my @function_cat; foreach my $category ($c->model('PerlFunc')->category_list) { $c->log->debug($category); my $name = $c->model('PerlFunc')->category_description($category); (my $link = $name) =~ tr/ /-/; my @functions; foreach my $function (sort ($c->model('PerlFunc')->category_functions($category))) { (my $url = $function) =~ s/[^\w-].*//i; my $description = $c->model('PerlFunc')->description($function); push @functions,{name=>$function, url=>$url, description=>$description}; } push @function_cat,{name=>$name, link=>$link, functions=>\@functions}; } $c->stash->{title} = 'Perl functions by category'; $c->stash->{function_cat} = \@function_cat; $c->stash->{page_template} = 'function_bycat.tt'; } sub pragmas :Local :Args(0) { my ($self, $c) = @_; my %pages = map {$_=>1} grep { /^[a-z]/ } $c->model('Index')->find_modules; foreach my $section ($c->model('Section')->list) { delete $pages{$_} foreach $c->model('Section')->pages($section); } delete $pages{$_} foreach qw/ perllocal perltoc perlcn perljp perlko perltw lwpcook lwptut pp inc::Module::Install perl5db /; my @pages = map { { name => $_, title => $c->model('Pod')->title($_), link => $c->uri_for('/view',split(/::/,$_)), } } keys %pages; $c->stash->{pages} = [ sort {$a->{name} cmp $b->{name}} @pages ]; $c->stash->{title} = 'Pragmas'; $c->stash->{page_template} = 'section_index.tt'; }
1;