]> iEval git - gruntmaster-page.git/commitdiff
Merge branch 'master' into gruntmaster
authorMarius Gavrilescu <marius@ieval.ro>
Sun, 9 Feb 2014 20:59:53 +0000 (22:59 +0200)
committerMarius Gavrilescu <marius@ieval.ro>
Sun, 9 Feb 2014 20:59:53 +0000 (22:59 +0200)
app.psgi
lib/Gruntmaster/Page.pm [deleted file]
lib/Gruntmaster/Page/St.pm
tmpl/st.en

index 64e3f289cbd6ae69fa5cf61137f760815e99a7d1..56022bc727880ff490ff33545981890d1c635c50 100644 (file)
--- a/app.psgi
+++ b/app.psgi
@@ -72,6 +72,7 @@ Log::Log4perl->init('log.conf');
 my $access_logger = Log::Log4perl->get_logger('access');
 
 builder {
+       enable_if { $_[0]->{PATH_INFO} eq '/ok' } sub { sub{ [200, [], []] }};
        enable 'AccessLog', format => ACCESSLOG_FORMAT, logger => sub { $access_logger->info(@_) };
        enable 'ContentLength';
        enable_if { $_[0]->{PATH_INFO} =~ qr,^/static/,} Header => set => ['Cache-Control', 'public, max-age=604800'];
diff --git a/lib/Gruntmaster/Page.pm b/lib/Gruntmaster/Page.pm
deleted file mode 100644 (file)
index e57b040..0000000
+++ /dev/null
@@ -1,153 +0,0 @@
-package Gruntmaster::Page;
-
-use 5.014000;
-use strict;
-use warnings;
-
-use Fcntl qw/:flock/;
-use File::Basename qw/fileparse/;
-use File::Path qw/make_path/;
-use File::Slurp qw/read_file write_file/;
-use IO::Compress::Gzip qw/gzip/;
-use IO::File;
-use Gruntmaster::Data;
-
-our $VERSION = '0.001';
-our @generators;
-
-use constant LANGUAGES => [ 'en' ];
-use constant CONTENT_TYPES => {
-       html => 'text/html; charset=UTF-8',
-       txt => 'text/plain; charset=UTF-8',
-};
-
-sub declaregen{
-       my ($generator, $regex) = @_;
-       $generator = "Gruntmaster::Page::$generator";
-       eval "require $generator";
-       push @generators, [$regex,  $generator];
-}
-
-{
-       my $component = qr'[^/]+';
-       my $contest = qr,(?:ct/$component/)?,;
-       declaregen Us                           => qr,^us/index$,;
-       declaregen 'Us::Entry'          => qr,^us/$component$,;
-       declaregen Ct                           => qr,^ct/index$,;
-       declaregen 'Ct::Entry'          => qr,^ct/$component/index$,;
-       declaregen St                           => qr,^${contest}log/st$,;
-       declaregen Log                          => qr,^${contest}log/(?:\d+|index)$,;
-       declaregen 'Log::Entry' => qr,^${contest}log/job/$component$,;
-       declaregen Submit                       => qr,^${contest}submit$,;
-       declaregen Pb                           => qr,^${contest}pb/index$,;
-       declaregen 'Pb::Entry'          => qr,^${contest}pb/$component$,;
-}
-
-sub generate{
-       my ($path, $topic) = @_;
-       my ($path_noext, $ext) = $path =~ m/^(.*)\.(.*)$/;
-       my ($basename, $directories) = fileparse $path_noext;
-       make_path $directories;
-
-       IO::File->new(">$path_noext.var")->close unless -f "$path_noext.var";
-       flock my $lockfh = IO::File->new("<$path_noext.var"), LOCK_EX;
-       open my $typemap, ">$path_noext.var.new";
-       say $typemap "URI: $basename\n";
-
-       my $fill_typemap = sub {
-               for my $lang (@{LANGUAGES()}) {
-                       my $page = $_[0]->($lang);
-                       write_file "$path_noext.$lang.$ext.new", $page;
-                       say $typemap "URI: $basename.$lang.$ext\nContent-Language: $lang\nContent-Type: " . CONTENT_TYPES->{$ext} . "\n";
-                       gzip \$page => "$path_noext.$lang.gz.$ext.new", Minimal => 1;
-                       say $typemap "URI: $basename.$lang.gz.$ext\nContent-Language: $lang\nContent-Encoding: gzip\nContent-Type: " . CONTENT_TYPES->{$ext} . "\n";
-               }
-       };
-
-       if ($topic eq 'genpage') {
-               for my $gen (@generators) {
-                       my ($regex, $generator) = @$gen;
-                       next unless $path_noext =~ $regex;
-                       $fill_typemap->(sub { $generator->generate($path, $_[0]) });
-                       last
-               }
-       } else {
-               my $get_article = sub {
-                       my $article = read_file "$ENV{GRUNTMASTER_ARTICLE_ROOT}/$basename.$_[0]";
-                       my $title   = read_file "$ENV{GRUNTMASTER_ARTICLE_ROOT}/$basename.$_[0].title";
-                       Gruntmaster::Page::Base::header($_[0], $title) . $article . Gruntmaster::Page::Base::footer($_[0])
-               };
-
-               $fill_typemap->($get_article);
-       }
-
-       for my $lang (@{LANGUAGES()}) {
-               rename "$path_noext.$lang.$ext.new", "$path_noext.$lang.$ext";
-               rename "$path_noext.$lang.gz.$ext.new", "$path_noext.$lang.gz.$ext";
-       }
-       rename "$path_noext.var.new", "$path_noext.var";
-       close $typemap;
-}
-
-sub gensrc{
-       my ($contest, $job) = split /\./, $_[0];
-       local $Gruntmaster::Data::contest = $contest if $contest;
-       my $ext = job_extension $job;
-       my $log = $contest ? "ct/$contest/log" : 'log';
-       make_path "$log/src/";
-       say STDERR "Writing to $log/src/$job.$ext";
-       write_file "$log/src/$job.$ext", job_inmeta($job)->{files}{prog}{content};
-}
-
-1;
-__END__
-# Below is stub documentation for your module. You'd better edit it!
-
-=head1 NAME
-
-Gruntmaster::Page - Perl extension for blah blah blah
-
-=head1 SYNOPSIS
-
-  use Gruntmaster::Page;
-  blah blah blah
-
-=head1 DESCRIPTION
-
-Stub documentation for Gruntmaster::Page, created by h2xs. It looks like the
-author of the extension was negligent enough to leave the stub
-unedited.
-
-Blah blah blah.
-
-=head2 EXPORT
-
-None by default.
-
-
-
-=head1 SEE ALSO
-
-Mention other useful documentation such as the documentation of
-related modules or operating system documentation (such as man pages
-in UNIX), or any relevant external documentation such as RFCs or
-standards.
-
-If you have a mailing list set up for your module, mention it here.
-
-If you have a web site set up for your module, mention it here.
-
-=head1 AUTHOR
-
-Marius Gavrilescu, E<lt>marius@E<gt>
-
-=head1 COPYRIGHT AND LICENSE
-
-Copyright (C) 2013 by Marius Gavrilescu
-
-This library is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself, either Perl version 5.18.1 or,
-at your option, any later version of Perl 5 you may have available.
-
-
-=cut
index 099c1936a6f6646c747fdd8a44ff0bb5530f3e81..2186fea570647822782d3fb32f6a3492f0750c2c 100644 (file)
@@ -46,8 +46,8 @@ sub _generate{
                if ($Gruntmaster::Data::contest) {
                        $tries{job_user()}{job_problem()}++;
                        $scores{job_user()}{job_problem()} = job_result() ? 0 : calc_score (job_user(), job_problem(), job_date(), $tries{job_user()}{job_problem()}, $totaltime) if job_date() > $start;
-               } else {
-                       if (job_result_text =~ m/^(\scores+)/) {
+               } elsif (defined job_user && defined job_problem && defined job_result) {
+                       if (defined job_result_text && job_result_text =~ m/^(\scores+)/) {
                                $scores{job_user()}{job_problem()} = $ct;
                        } else {
                                $scores{job_user()}{job_problem()} = job_result() ? 0 : 100;
@@ -55,7 +55,7 @@ sub _generate{
                }
        }
 
-       my @st = sort { $b->{score} <=> $a->{score} } map {
+       my @st = sort { $b->{score} <=> $a->{score} or $a->{user} cmp $b->{user}} map {
                my $user = $_;
                +{
                        user => $user,
@@ -64,6 +64,9 @@ sub _generate{
                        problems => $Gruntmaster::Data::contest,
                }
        } keys %scores;
+
+       $st[0]->{rank} = 1;
+       $st[$_]->{rank} = $st[$_ - 1]->{rank} + ($st[$_]->{score} < $st[$_ - 1]->{score}) for 1 .. $#st;
        $htc->param(problems => [map { problem_name } @problems ]) if $Gruntmaster::Data::contest;
        $htc->param(st => \@st);
 }
index 1e4c8ec0380aae9de3de3d635c714452dfa35cd1..0c9893b1bd71c2bbc887151c788bbd62ea113319 100644 (file)
@@ -1,11 +1,11 @@
 <table border class="table table-border table-striped">
 <thead>
-<tmpl_if problems><tr><th>Username<tmpl_loop problems><th><tmpl_var _></tmpl_loop><th>Total
-<tmpl_else><tr><th>Username<th>Score
+<tmpl_if problems><tr><th>Rank<th>Username<tmpl_loop problems><th><tmpl_var _></tmpl_loop><th>Total
+<tmpl_else><tr><th>Rank<th>Username<th>Score
 </tmpl_if>
 
 <tbody>
-<tmpl_loop st><tr><td><tmpl_var user>
+<tmpl_loop st><tr><td><tmpl_var rank><td><tmpl_var user>
 <tmpl_if problems><tmpl_loop scores><td><tmpl_var _>
 </tmpl_loop></tmpl_if><td><tmpl_var score>
 </tmpl_loop>
This page took 0.035443 seconds and 4 git commands to generate.