#! perl -w
## read index.html, and update the templates in all the other files
##
## test comment
use strict;
my $pagetitle_re = qr;
.*;sm;
my $title_re = qr;.*?
;sm;
my $subtitle_re = qr;.*?
;sm;
my $content_re = qr;(.*);sm;
my $keywords_re = qr;();sm;
my $linkbox1_re = qr;(.*);sm;
my $linkbox2_re = qr;(.*);sm;
my $linkbox3_re = qr;(.*);sm;
my $all_linkboxes_re = qr;(.*);sm;
print "Reading template taiji.html ...\n";
open TEMPLATE, ";
};
close TEMPLATE;
# the title should be the same on all pages
my $global_title;
if ($template =~ m!$title_re!) {
$global_title = $&;
}
else {
die "no title in template";
}
sub update_file {
my $filename=shift;
print "Processing $filename\n";
open FILE, "<$filename" or die "$filename: $!";
my $file = do {
local $/ = undef;
;
};
close FILE;
my ($subtitle, $content, $linkbox1, $linkbox2, $linkbox3, $keywords);
if ($file =~ m!$content_re!) {
$content = $&;
}
else {
die "no content";
}
if ($file =~ m!$subtitle_re!) {
$subtitle = $&;
}
else {
die "no subtitle";
}
if ($file =~ m!$keywords_re!) {
$keywords = $&;
}
else {
die "no keywords";
}
if ($file =~ m!$linkbox1_re!) {
$linkbox1 = $&;
}
else {
#warn "no linkbox1 in $filename";
}
if ($file =~ m!$linkbox2_re!) {
$linkbox2 = $&;
}
else {
#warn "no linkbox2 in $filename";
}
if ($file =~ m!$linkbox3_re!) {
$linkbox3 = $&;
}
else {
#warn "no linkbox3 in $filename";
}
#warn "Global title: $global_title";
#warn "Subtitle: $subtitle";
#warn "Keywords: $keywords";
#warn "Content: $content";
my $newfile = $template;
$newfile =~ s!$content_re!$content! or die "error replacing content";
$newfile =~ s!$title_re!$global_title! or die "error replacing title";
$newfile =~ s!$subtitle_re!$subtitle! or die "error replacing subtitle";
$newfile =~ s!$keywords_re!$keywords! or die "error replacing keywords";
if (not defined $linkbox1 and not defined $linkbox2 and not defined $linkbox3) {
$newfile =~ s,$all_linkboxes_re,,;
}
if (defined $linkbox1) {
$newfile =~ s!$linkbox1_re!$linkbox1! or die "error replacing linkbox1 in $filename";
}
if (defined $linkbox2) {
$newfile =~ s!$linkbox2_re!$linkbox2! or die "error replacing linkbox2 in $filename";
}
if (defined $linkbox3) {
$newfile =~ s!$linkbox3_re!$linkbox3! or die "error replacing linkbox3 in $filename";
}
# as well as the above simple things, we update the page's title
# based on the title and subtitle retrieved from the page.
my $page_title = "$global_title - $subtitle";
$page_title =~ s!<[^<>]+>!!g;
$newfile =~ s!$pagetitle_re!$page_title! or die "error replacing page title";
open NEWFILE, ">$filename.new" or die "open $filename.new: $!";
print NEWFILE $newfile;
close NEWFILE;
rename($filename, "$filename.old") or die "rename $filename: $!";
rename("$filename.new", $filename) or die "rename $filename.new: $!";
}
for my $file (glob('*.html')) {
update_file($file);
}