use strict;
use warnings;
use parent qw/Exporter/;
-our @EXPORT_OK = qw/generate/;
+our @EXPORT_OK = qw/generate _generate/;
use Fcntl qw/:flock/;
use File::Basename qw/fileparse/;
+use File::Path qw/make_path/;
use File::Slurp qw/write_file/;
use IO::Compress::Gzip qw/gzip/;
use IO::File;
+use Gruntmaster::Data qw/PUBLISH/;
our $VERSION = '0.001';
our @generators;
my ($generator, $regex) = @_;
$generator = "Gruntmaster::Page::$generator";
eval "require $generator";
- my $gensub = $generator->can('generate') or die "No such generator: $generator";
- push @generators, [$regex, $gensub];
+ push @generators, [$regex, $generator];
}
{
my $contest = qr,(?:ct/$component/)?,;
declaregen Index => qr,^index$,;
declaregen Learn => qr,^learn$,;
+ declaregen Account => qr,^account$,;
+ 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,^ct/$component/log/st$,;
declaregen Log => qr,^${contest}log/(?:\d+|index)$,;
- declaregen 'Log::Entry' => qr,^${contest}log/$component/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{
+sub _generate{
my ($path) = @_;
my ($path_noext, $ext) = $path =~ m/^(.*)\.(.*)$/;
- my $basename = fileparse $path_noext;
+ 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;
my ($regex, $generator) = @$gen;
next unless $path_noext =~ $regex;
for my $lang (@{LANGUAGES()}) {
- my $page = $generator->($path, $lang);
+ my $page = $generator->generate($path, $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;
close $typemap;
}
+sub generate{
+ PUBLISH 'genpage', shift;
+}
+
1;
__END__
# Below is stub documentation for your module. You'd better edit it!