1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
#!/usr/bin/env perl
use strict;
use warnings;
use File::Cat;
use File::Slurp;
use Text::Markdown "markdown";
sub page {
my ($pageFile, $pageTitle, $pageContent, $pageType, $id) = @_;
unless(defined $pageType) {
$pageType = "body"; # default page type
}
open my $outHandle, ">>", "output/$pageFile";
# Write header and insert page title
open my $inHandle, "<", "template/header.html";
while(<$inHandle>) {
$_ =~ s/\$title/$pageTitle/;
print $outHandle $_;
}
close $inHandle;
# Write content and footer
if(defined $id) {
print $outHandle "<$pageType id=\"$id\">";
}
else {
print $outHandle "<$pageType>";
}
print $outHandle $pageContent;
print $outHandle "</$pageType>";
cat "template/footer.html", $outHandle;
close $outHandle;
# Create gzip version
`gzip -k output/$pageFile`;
}
# Build about
print "Building about\n";
my $aboutContent = read_file "static/about.md";
$aboutContent = markdown $aboutContent;
page "about.html", "About", $aboutContent;
# Build articles
my @articleList;
while(<*.md>) {
my $articleFile = $_;
print "Processing $articleFile\n";
# Extract article title from the title in MD article
open my $articleHandle, "<", $articleFile;
my $headLine = <$articleHandle>;
$headLine = substr $headLine, 2, -1;
close $articleHandle;
# Extract output file name: MD file name without the date
my $pageFile = substr $articleFile, 9, -3;
$pageFile .= ".html";
# Build article
my $articleContent = read_file $articleFile;
$articleContent = markdown $articleContent;
page $pageFile, $headLine, $articleContent, "article";
# Add article to index
my $year = substr $articleFile, 0, 4;
my $month = substr $articleFile, 4, 2;
my $day = substr $articleFile, 6, 2;
push @articleList, "* [$month-$day-$year $headLine]($pageFile \"$headLine\")\n";
}
# Build index with article list in reverse (most recent first)
print "Building index\n";
my $indexContent = read_file "static/index.md";
foreach(reverse @articleList) {
$indexContent .= $_;
}
$indexContent = markdown $indexContent;
page "index.html", "blog.vdouillet.fr", $indexContent, "body", "index-body";
|