From 00178168d3322324d8985dd4e9a0fb672324969b Mon Sep 17 00:00:00 2001 From: Dave Cross Date: Fri, 2 Oct 2015 12:14:51 +0100 Subject: [PATCH] Use Lingua::EN::Inflexion. Be cleverer at building routes. --- Literature/lib/Literature.pm | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/Literature/lib/Literature.pm b/Literature/lib/Literature.pm index 83a8135..22e493b 100644 --- a/Literature/lib/Literature.pm +++ b/Literature/lib/Literature.pm @@ -1,6 +1,7 @@ package Literature; use Dancer2; use Dancer2::Plugin::DBIC; +use Lingua::EN::Inflexion; our $VERSION = '0.1'; @@ -16,23 +17,25 @@ my %resources = qw[ fictional_characters FictionalCharacter ]; -my $route_re = '/(' . join('|', keys %resources) . ')/'; -my $id_re = $route_re . '(\d+)'; +my $route_re = '/(' . join('|', keys %resources) . ')/(\d+)?'; get '/' => sub { template 'index'; }; get qr{^$route_re$} => sub { - my ($resource) = splat; - template $resource, - { $resource => resultset($resources{$resource}) }; -}; - -get qr{$id_re} => sub { my ($resource, $id) = splat; - template substr($resource, 0, -1), - { lc $resources{$resource} => resultset($resources{$resource})->find($id) }; + + if (defined $id) { + template noun($resource)->singular, { + lc $resources{$resource} => + resultset($resources{$resource})->find($id) + }; + } else { + template $resource, { + $resource => resultset($resources{$resource}) + }; + } }; true;