mason/dhandler: Bring not-found handling into the dhandler.
[bridge-toys] / mason / dhandler
CommitLineData
bba7b95e
MW
1<!-- -*-html-*-
2 -
3 - Generate a dealing list for a single hand
4 -
5 - (c) 2013 Mark Wooding
6 -->
7
8<table class=deal>\
9<%perl>
10 my @line = Deal::line;
11 my ($row, $col, $box) = (0, 0, 0);
12 for (my $i = 0; $i < @line; $i++) {
13 if ($col) {
14 $m->out(" ");
15 } else {
16 if (!$box) {
17 my $class =
18 $row == 0 ? "first" :
19 $i + $nrow*$nbox >= @line ? "last" :
20 "mid";
21 $m->out("\n<tr class=$class>");
22 }
23 my $class = ($box + $row)%2 ? "odd " : "even";
24 $m->out("\n <td class=$class>");
25 }
26 $m->out($line[$i]);
27 $col++;
28 if ($col >= $nbox) { $col = 0; $box++; }
29 if ($box >= $nrow) { $box = 0; $row++; }
30 }
31 $m->out("\n");
32</%perl>
33</table>
34%#
35<%flags>
36 inherit => "%html"
37</%flags>
38%#
39<%args>
40 $nbox => 4
41 $nrow => 4
42</%args>
43%#
8faa0e7d
MW
44<%method title>\
45% if ($fail) {
46Not found\
47% } else {
48Single hand\
49% }
50</%method>
51%#
52<%def .not-found>
53<h1>Not found</h1>
54Failed to find &lsquo;<code><% $what |h %></code>&rsquo;.
55% return 404;
56<%args>
57 $what
58</%args>
59</%def>
bba7b95e
MW
60%#
61<%once>
62 use Deal;
63</%once>
64%#
8faa0e7d
MW
65<%shared>
66 my $fail = ($m->dhandler_arg ne "");
67</%shared>
68%#
bba7b95e 69<%init>
8faa0e7d
MW
70 return $m->comp(".not-found", what => $m->dhandler_arg)
71 if $fail;
bba7b95e 72</%init>