X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~yarrgweb/git?a=blobdiff_plain;ds=sidebyside;f=yarrg%2Fweb%2Fdumptable;fp=yarrg%2Fweb%2Fdumptable;h=20dc25f12ceb4ea7a77e51302e7ec9557b53e10a;hb=bdad24af2d97e3448b671da80bb4247411bafbea;hp=0000000000000000000000000000000000000000;hpb=641e98def7ea904b48b0f7dc22d868b40f3cff1b;p=ypp-sc-tools.main.git diff --git a/yarrg/web/dumptable b/yarrg/web/dumptable new file mode 100644 index 0000000..20dc25f --- /dev/null +++ b/yarrg/web/dumptable @@ -0,0 +1,104 @@ +<%doc> + + This is part of the YARRG website. YARRG is a tool and website + for assisting players of Yohoho Puzzle Pirates. + + Copyright (C) 2009 Ian Jackson + Copyright (C) 2009 Clare Boothby + + YARRG's client code etc. is covered by the ordinary GNU GPL (v3 or later). + The YARRG website is covered by the GNU Affero GPL v3 or later, which + basically means that every installation of the website will let you + download the source. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + + Yohoho and Puzzle Pirates are probably trademarks of Three Rings and + are used without permission. This program is not endorsed or + sponsored by Three Rings. + + + This Mason component is helpful for debugging and developing. It + outputs plain HTML tables eg for SQL query results. You can either: + <& dumptable, sth = $executed_statement_handle &> + in which case it will consume the results of the statement and + print them unconditionally, or do the equivalent of: + <& dumptable:start, sth => $sth, [ qa => $qa ] &> or + <& dumptable:start, cols => [ 'column',... ], [ qa => $qa ] &> + % my $row; + % while ($row= $sth->fetchrow_hashref) { + <& dumptable:row, sth|cols => ..., row => $row, [ qa => $qa ] &> + % do something else with $row + % } + <& dumptable:end, [ qa => $qa ] &> + where if you pass $qa, dumptable will check whether debug + is enabled and produce no output if it isn't. NB you don't want + this approach if your loop body produces output because it'll be + interleaved with dumptable's table. + + +<%args> +$sth + + +<%method start> +<%args> +$sth => undef +$cols => $sth->{NAME} +$qa => undef + +% if (!$qa || $qa->{'debug'}) { + + +% foreach my $field (@$cols) { + +% } + + +<%method row> +<%args> +$sth => undef +$cols => $sth->{NAME} +$row +$qa => undef + +% if (!$qa || $qa->{'debug'}) { + +% foreach my $field (@$cols) { +% my $cell= $row->{$field}; + +% } + +% } + + +<%method end> +<%args> +$qa => undef + +% if (!$qa || $qa->{'debug'}) { +
<% $field |h %> +% } +
+<% $cell |h %> +
+% } + + +<& SELF:start, sth => $sth &> +% my $row; +% while ($row= $sth->fetchrow_hashref) { +<& SELF:row, sth => $sth, row => $row &> +% } +<& SELF:end &>