]> iEval git - gruntmaster-page.git/blame - lib/Gruntmaster/Page/Common.pm
Add support for template patches
[gruntmaster-page.git] / lib / Gruntmaster / Page / Common.pm
CommitLineData
832cb45e
MG
1package Gruntmaster::Page::Common;
2
3use 5.014000;
4use strict;
5use warnings;
6use parent qw/Exporter/;
6d78fc24
MG
7our @EXPORT_OK = qw/header footer patch_templates/;
8
9use File::Slurp qw/read_file/;
832cb45e
MG
10
11my %header_templates = (
12 en => <<'HTML',
13<!DOCTYPE html>
14<title>TITLE_GOES_HERE</title>
15<link rel="stylesheet" href="/gm.css">
16<script src="/jquery-2.0.3.min.js"></script>
17<script src="/view.js"></script>
18<meta charset="utf-8">
19
20<span id="admin"></span>
21<div id="title"><span class="i">i</span><span class="Eval">Eval</span></div>
22<div id="subtitle">TITLE_GOES_HERE</div>
23
e5a94ee5 24<nav><ul><li><a href="/learn.var">Learn</a><li><a href="/pb/">Practice</a><li><a href="/ct/">Compete</a><li><a href="/log/">Job log</a></ul></nav>
832cb45e
MG
25
26HTML
27);
28
29my %footer_templates = (
30 en => <<'HTML',
31
32<footer>
33Dilmom: Why don't you call your product the Gruntmaster 6000?
34Dilbert: What kind of product do you see when you imagine a Gruntmaster 6000?
35Dilmom: Well, it's a stripped-down version of the Gruntmaster 9000, of course. But it's software-upgradeable.
36</footer>
37HTML
38);
39
6d78fc24
MG
40sub patch_templates (\%$){
41 my $root = $ENV{GRUNTMASTER_TEMPLATE_ROOT} or return;
42 my ($templates, $name) = @_;
43 for (<$root/$name*>) {
44 m/\.(.+)$/;
45 $templates->{$1} = read_file $_
46 }
47}
48
49patch_templates %header_templates, 'header';
50patch_templates %footer_templates, 'footer';
51
832cb45e
MG
52sub header{
53 my ($language, $title) = @_;
54 $header_templates{$language} =~ s/TITLE_GOES_HERE/$title/ger;
55}
56
57sub footer{
58 $footer_templates{$_[0]};
59}
60
611;
This page took 0.028269 seconds and 4 git commands to generate.