annotate bin/chronicle @ 34:1fc5a48a9e7c

2007-09-03 05:13:09 by steve Added optional --lower-case argument.
author steve
date Mon, 03 Sep 2007 05:13:09 +0000
parents a7324ac2c17e
children 3f5f19c3b0cc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1 #!/usr/bin/perl -w
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
2
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
3 =head1 NAME
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
4
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
5 chronicle - A blog compiler.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
6
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
7 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
8
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
9 =head1 SYNOPSIS
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
10
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
11
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
12 Help Options:
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
13
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
14 --help Show the help information for this script.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
15
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
16 --manual Read the manual for this script.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
17
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
18 --verbose Show useful debugging information.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
19
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
20 --version Show the version number and exit.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
21
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
22 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
23
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
24
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
25 =head1 ABOUT
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
26
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
27 Chronicle is a simple tool to convert a collection of text files,
33
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
28 located within a single directory, into a blog consisting of static
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
29 HTML files.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
30
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
31 It supports only the bare minimum of features which are required
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
32 to be useful:
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
33
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
34 * Tagging support.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
35
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
36 * RSS support.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
37
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
38 * Archive support.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
39
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
40 The obvious deficiencies are:
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
41
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
42 * Lack of support for commenting.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
43
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
44 * Lack of pingback/trackback support.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
45
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
46 Having said that it is a robust, stable, and useful system.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
47
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
48 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
49
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
50
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
51 =head1 AUTHOR
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
52
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
53 Steve
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
54 --
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
55 http://www.steve.org.uk/
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
56
34
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
57 $Id: chronicle,v 1.14 2007-09-03 05:13:09 steve Exp $
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
58
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
59 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
60
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
61 =head1 LICENSE
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
62
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
63 Copyright (c) 2007 by Steve Kemp. All rights reserved.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
64
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
65 This module is free software;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
66 you can redistribute it and/or modify it under
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
67 the same terms as Perl itself.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
68 The LICENSE file contains the full text of the license.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
69
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
70 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
71
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
72
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
73 use strict;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
74 use warnings;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
75 use Date::Parse;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
76 use File::Copy;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
77 use File::Path;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
78 use Getopt::Long;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
79 use HTML::Template;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
80 use Pod::Usage;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
81
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
82
23
59b123e21627 2007-08-15 18:23:35 by steve
steve
parents: 21
diff changeset
83 #
59b123e21627 2007-08-15 18:23:35 by steve
steve
parents: 21
diff changeset
84 # Release number
59b123e21627 2007-08-15 18:23:35 by steve
steve
parents: 21
diff changeset
85 #
59b123e21627 2007-08-15 18:23:35 by steve
steve
parents: 21
diff changeset
86 # NOTE: Set by 'make release'.
59b123e21627 2007-08-15 18:23:35 by steve
steve
parents: 21
diff changeset
87 #
59b123e21627 2007-08-15 18:23:35 by steve
steve
parents: 21
diff changeset
88 my $RELEASE = 'UNRELEASED';
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
89
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
90
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
91
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
92 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
93 # Setup default options.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
94 #
33
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
95 my %CONFIG = setupDefaultOptions();
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
96
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
97
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
98 #
7
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
99 # Read the global and per-user configuration files, if they exist.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
100 #
7
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
101 readConfigurationFile( "/etc/chroniclerc" );
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
102 readConfigurationFile( $ENV{'HOME'} . "/.chroniclerc" );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
103
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
104
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
105 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
106 # Parse the command line arguments.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
107 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
108 parseCommandLineArguments();
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
109
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
110
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
111 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
112 # Should we run something before we start?
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
113 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
114 if ( $CONFIG{'pre-build'} )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
115 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
116 $CONFIG{'verbose'} && print "Running command: $CONFIG{'pre-build'}\n";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
117
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
118 system($CONFIG{'pre-build'});
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
119 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
120
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
121
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
122 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
123 # Parse each of the given text files, and build up a datastructure
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
124 # we can use to create our pages.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
125 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
126 # The data-structure is a hash of arrays. The hash key is the blog
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
127 # entry's filename, and the array stored as the hash's value has
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
128 # keys such as:
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
129 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
130 # tags => [ 'test', 'testing' ]
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
131 # date => '1st july 2007'
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
132 # title => 'Some title'
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
133 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
134 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
135 my %data = createDataStructure();
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
136
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
137
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
138 #
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
139 # Find each unique tag used within our entries.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
140 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
141 my %all_tags;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
142 %all_tags = findAllTags() unless( $CONFIG{'no-tags'} );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
143
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
144
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
145 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
146 # Find each unique month + year we've used.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
147 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
148 my %all_dates = findAllMonths();
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
149 %all_dates = findAllMonths() unless( $CONFIG{'no-archive'} );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
150
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
151
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
152 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
153 # Now create the global tag + date loops which are used for our
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
154 # sidebar.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
155 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
156 my %CLOUD;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
157 $CLOUD{'tag'} = createTagCloud( %all_tags ) unless( $CONFIG{'no-tags'} );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
158 $CLOUD{'archive'} = createDateCloud( %all_dates ) unless( $CONFIG{'no-archive'} );;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
159
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
160
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
161
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
162 #
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
163 # Make sure our output directory exists.
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
164 #
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
165 mkpath( $CONFIG{'output'}, 0, 0755 ) if ( ! -d $CONFIG{'output'} );
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
166
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
167
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
168 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
169 # Output each static page.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
170 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
171 $CONFIG{'verbose'} && print "Creating static pages:\n";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
172 foreach my $file ( keys %data )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
173 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
174 outputStaticPage( $file );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
175 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
176
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
177
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
178
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
179 #
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
180 # Build an output page for each tag which has ever been used.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
181 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
182 foreach my $tagName ( sort keys %all_tags )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
183 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
184 $CONFIG{'verbose'} && print "Creating tag page: $tagName\n";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
185
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
186 outputTagPage( $tagName );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
187 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
188
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
189
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
190
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
191 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
192 # Now build the archives.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
193 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
194 foreach my $date ( keys( %all_dates ) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
195 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
196 $CONFIG{'verbose'} && print "Creating archive page: $date\n";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
197
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
198 outputArchivePage( $date );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
199 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
200
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
201
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
202
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
203 #
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
204 # Finally out the most recent entries for the front-page.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
205 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
206 outputIndexPage();
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
207
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
208
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
209
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
210 #
12
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
211 # Copy any static files into place.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
212 #
12
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
213 copyStaticFiles();
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
214
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
215
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
216 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
217 # Post-build command?
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
218 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
219 if ( $CONFIG{'post-build'} )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
220 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
221 $CONFIG{'verbose'} && print "Running command: $CONFIG{'post-build'}\n";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
222
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
223 system($CONFIG{'post-build'});
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
224 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
225
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
226
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
227 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
228 # All done.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
229 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
230 exit;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
231
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
232
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
233
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
234
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
235
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
236
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
237
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
238 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
239
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
240 Setup the default options we'd expect into our global configuration hash.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
241
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
242 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
243
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
244 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
245
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
246 sub setupDefaultOptions
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
247 {
33
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
248 my %CONFIG;
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
249
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
250 #
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
251 # Text directory.
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
252 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
253 $CONFIG{'input'} = "./blog";
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
254
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
255 #
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
256 # Output directory.
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
257 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
258 $CONFIG{'output'} = "./output";
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
259
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
260 #
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
261 # Theme directory.
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
262 #
9
f9858b3bcca0 2007-08-13 23:17:15 by steve
steve
parents: 7
diff changeset
263 $CONFIG{'template'} = "./themes/default";
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
264
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
265 #
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
266 # prefix for all links.
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
267 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
268 $CONFIG{'url-prefix'} = "";
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
269
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
270 #
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
271 # Default input format
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
272 #
16
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
273 $CONFIG{'format'} = 'html';
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
274
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
275 #
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
276 # Entries per-page for the index.
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
277 #
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
278 $CONFIG{'entry-count'} = 10;
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
279
33
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
280 return( %CONFIG );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
281 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
282
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
283
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
284
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
285
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
286 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
287
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
288 Parse the command line arguments this script was given.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
289
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
290 TODO: Document these in the POD.
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
291
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
292 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
293
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
294 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
295
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
296 sub parseCommandLineArguments
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
297 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
298 my $HELP = 0;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
299 my $MANUAL = 0;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
300 my $VERSION = 0;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
301
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
302 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
303 # Parse options.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
304 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
305 GetOptions(
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
306 # Help options
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
307 "help", \$HELP,
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
308 "manual", \$MANUAL,
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
309 "verbose", \$CONFIG{'verbose'},
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
310 "version", \$VERSION,
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
311
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
312 # paths
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
313 "input=s", \$CONFIG{'input'},
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
314 "output=s", \$CONFIG{'output'},
27
25450021ba3e 2007-08-16 12:45:55 by steve
steve
parents: 23
diff changeset
315 "templates=s", \$CONFIG{'template'},
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
316
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
317 # optional
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
318 "pattern=s", \$CONFIG{'pattern'},
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
319 "no-tags", \$CONFIG{'no-tags'},
33
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
320 "no-cache", \$CONFIG{'no-cache'},
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
321 "no-archive", \$CONFIG{'no-archive'},
34
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
322 "lower-case", \$CONFIG{'lower-case'},
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
323
27
25450021ba3e 2007-08-16 12:45:55 by steve
steve
parents: 23
diff changeset
324 # prefix
25450021ba3e 2007-08-16 12:45:55 by steve
steve
parents: 23
diff changeset
325 "url-prefix=s", \$CONFIG{'url_prefix'},
25450021ba3e 2007-08-16 12:45:55 by steve
steve
parents: 23
diff changeset
326
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
327 # commands
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
328 "pre-build=s", \$CONFIG{'pre-build'},
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
329 "post-build=s", \$CONFIG{'post-build'},
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
330
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
331 );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
332
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
333 pod2usage(1) if $HELP;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
334 pod2usage(-verbose => 2 ) if $MANUAL;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
335
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
336 if ( $VERSION )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
337 {
34
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
338 my $REVISION = '$Revision: 1.14 $';
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
339 if ( $REVISION =~ /1.([0-9.]+) / )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
340 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
341 $REVISION = $1;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
342 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
343
23
59b123e21627 2007-08-15 18:23:35 by steve
steve
parents: 21
diff changeset
344 print( "chronicle release $RELEASE\n" );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
345 exit;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
346 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
347 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
348
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
349
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
350
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
351 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
352
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
353 Create our global datastructure, by reading each of the blog
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
354 files and extracting:
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
355
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
356 1. The title of the entry.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
357
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
358 2. Any tags which might be present.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
359
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
360 3. The date upon which it was made.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
361
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
362 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
363
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
364 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
365
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
366 sub createDataStructure
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
367 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
368 my %results;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
369
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
370 if ( ! -d $CONFIG{'input'} )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
371 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
372 print <<EOF;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
373
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
374 The blog input directory $CONFIG{'input'} does not exist.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
375
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
376 Aborting.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
377 EOF
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
378
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
379 exit
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
380 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
381
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
382 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
383 # Did the user override the default pattern?
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
384 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
385 my $pattern = $CONFIG{'pattern'} || "*";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
386 my $count = 0;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
387
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
388 foreach my $file ( sort( glob( $CONFIG{'input'} . "/" . $pattern ) ) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
389 {
7
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
390 #
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
391 # Ignore directories.
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
392 #
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
393 next if ( -d $file );
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
394
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
395 my $title = '';
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
396 my $date = '';
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
397 my $private = 0;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
398
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
399 my @tags;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
400
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
401 open( INPUT, "<", $file ) or die "Failed to open blog file $file - $!";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
402 while( my $line = <INPUT> )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
403 {
11
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
404 if ( $line =~ /^tags:(.*)/i )
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
405 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
406 my $tag .= $1;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
407 foreach my $t ( split( /,/, $tag ) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
408 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
409 # strip leading and trailing space.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
410 $t =~ s/^\s+//;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
411 $t =~ s/\s+$//;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
412
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
413 # skip empty tags.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
414 next if ( !length($t) );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
415
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
416 # lowercase and store the tags.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
417 $tag = lc($tag);
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
418 push ( @tags, $t );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
419 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
420 }
11
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
421 elsif (( $line =~ /^title:(.*)/i ) && !length($title) )
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
422 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
423 $title = $1;
11
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
424
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
425 # strip leading and trailing space.
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
426 $title =~ s/^\s+// if ( length $title );
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
427 $title =~ s/\s+$// if ( length $title );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
428 }
11
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
429 elsif (( $line =~ /^date:(.*)/i ) && !length($date) )
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
430 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
431 $date = $1;
11
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
432
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
433 # strip leading and trailing space.
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
434 $date =~ s/^\s+// if ( $date );
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
435 $date =~ s/\s+$// if ( $date );
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
436
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
437 }
11
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
438 elsif ( $line =~ /^status:(.*)/i )
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
439 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
440 my $level = $1;
11
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
441
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
442 # strip leading and trailing space.
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
443 $level =~ s/^\s+// if ( $level );
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
444 $level =~ s/\s+$// if ( $level );
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
445
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
446 $private = 1 if ( $level =~ /private/i);
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
447 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
448 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
449 close( INPUT );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
450
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
451 $results{$file} = { tags => \@tags,
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
452 title => $title,
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
453 date => $date } unless( $private );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
454
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
455 $count += 1;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
456 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
457
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
458 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
459 # Make sure we found some entries.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
460 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
461 if ( $count < 1 )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
462 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
463 print <<EOF;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
464
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
465 There were no text files found in the input directory
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
466 $CONFIG{'input'} which matched the pattern '$pattern'.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
467
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
468 Aborting.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
469
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
470 EOF
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
471 exit;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
472 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
473
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
474 return %results;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
475 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
476
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
477
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
478
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
479 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
480
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
481 Find each distinct tag which has been used within blog entries,
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
482 and the number of times each one has been used.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
483
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
484 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
485
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
486 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
487
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
488 sub findAllTags
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
489 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
490 my %allTags;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
491
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
492 foreach my $f ( keys %data )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
493 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
494 my $h = $data{$f};
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
495 my $tags = $h->{'tags'} || undef;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
496 foreach my $t ( @$tags )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
497 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
498 $allTags{$t}+=1;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
499 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
500 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
501
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
502 return( %allTags );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
503 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
504
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
505
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
506
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
507 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
508
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
509 Create a structure for a tag cloud.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
510
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
511 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
512
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
513 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
514
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
515 sub createTagCloud
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
516 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
517 my( %unique ) = ( @_ );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
518
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
519 my $results;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
520
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
521 foreach my $key ( sort keys( %unique ) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
522 {
27
25450021ba3e 2007-08-16 12:45:55 by steve
steve
parents: 23
diff changeset
523 my $count = $unique{$key};
25450021ba3e 2007-08-16 12:45:55 by steve
steve
parents: 23
diff changeset
524 my $size = 10 + ( $count * 5 );
25450021ba3e 2007-08-16 12:45:55 by steve
steve
parents: 23
diff changeset
525 $size = 40 if ( $size >= 40 );
25450021ba3e 2007-08-16 12:45:55 by steve
steve
parents: 23
diff changeset
526
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
527 push( @$results,
27
25450021ba3e 2007-08-16 12:45:55 by steve
steve
parents: 23
diff changeset
528 { tag => $key,
25450021ba3e 2007-08-16 12:45:55 by steve
steve
parents: 23
diff changeset
529 count => $count,
34
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
530 size => $size } );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
531 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
532 return $results;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
533
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
534 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
535
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
536
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
537
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
538 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
539
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
540 Find each of the distinct Month + Year pairs for entries which
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
541 have been created.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
542
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
543 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
544
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
545 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
546
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
547 sub findAllMonths
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
548 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
549 my %allDates;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
550 foreach my $f ( keys %data )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
551 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
552 my $h = $data{$f};
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
553 next if ( !$h );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
554
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
555 my $date = $h->{'date'} || undef;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
556 next if ( !$date );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
557
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
558 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
559 # Strip to month
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
560 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
561 my ($ss,$mm,$hh,$day,$month,$year,$zone) = strptime($date);
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
562 my @abbr = qw( January February March April May June July August September October November December );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
563 $month = $abbr[$month];
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
564 $year += 1900;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
565 $date = $month . " " . $year;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
566
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
567 $allDates{$date}+=1;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
568 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
569
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
570 return( %allDates );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
571 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
572
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
573
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
574
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
575 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
576
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
577 Create a data structure which can be used for our archive layout.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
578
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
579 This is a little messy too. It mostly comes because we want to
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
580 have a nested loop so that we can place our entries in a nice manner.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
581
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
582 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
583
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
584 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
585
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
586 sub createDateCloud
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
587 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
588 my( %unique ) = ( @_ );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
589
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
590 my $results;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
591
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
592 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
593 # First find the distinct years.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
594 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
595 my %years;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
596 foreach my $key ( sort keys %unique )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
597 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
598 if ( $key =~ /([0-9]+)/ )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
599 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
600 my $year = $1;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
601 $years{$year} += 1;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
602 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
603 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
604
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
605 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
606 # Now for each year we want to push on the number of
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
607 # months
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
608 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
609 foreach my $year ( keys %years )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
610 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
611 my $months;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
612
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
613 foreach my $key ( keys %unique )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
614 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
615 if ( $key =~ /(.*) ([0-9]+)/ )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
616 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
617 my $y = $2;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
618 my $m = $1;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
619 if ( $year eq $y )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
620 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
621 my $count = $unique{ $key };
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
622 my $month = $m;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
623
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
624 push( @$months, { month => $m,
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
625 count => $count } );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
626 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
627 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
628 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
629
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
630 push( @$results, { year => $year,
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
631 months => $months } );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
632 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
633 return $results;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
634 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
635
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
636
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
637
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
638 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
639
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
640 This function will return a hash containing our tag information,
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
641 the values of the hash will be an array of filenames which contain
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
642 that entry.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
643
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
644 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
645
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
646 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
647
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
648 sub readTagInformation
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
649 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
650 my( @files ) = (@_);
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
651
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
652 my %results;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
653
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
654 foreach my $file ( @files )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
655 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
656 my $tag;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
657 open( FILE, "<", $file ) or die "Failed to read: $file - $!";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
658 foreach my $line ( <FILE> )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
659 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
660 next unless $line =~ /^tags:(.*)/i;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
661
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
662 my $tags = $1;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
663
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
664 foreach my $t ( split( /,/ , $tags ) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
665 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
666 # strip leading and trailing space.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
667 $t =~ s/^\s+//;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
668 $t =~ s/\s+$//;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
669
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
670 # skip empty tags.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
671 next if ( !length($t) );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
672
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
673 # lowercase all tags
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
674 $t = lc($t);
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
675
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
676 # Store the filename in the hash for this tag.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
677 my $cur = $results{$t};
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
678 push @$cur, $file;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
679 $results{$t} = $cur;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
680 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
681 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
682 close( FILE );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
683 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
684 return %results;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
685 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
686
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
687
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
688
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
689 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
690
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
691 Sort by date.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
692
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
693 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
694
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
695 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
696
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
697 sub bywhen
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
698 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
699 my ($ss,$mm,$hh,$day,$month,$year,$zone) = strptime($a->{'date'});
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
700 my ($ss2,$mm2,$hh2,$day2,$month2,$year2,$zone2) = strptime($b->{'date'});
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
701
33
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
702 if ( !defined($year) || ( !defined($year2) ) )
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
703 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
704 return 0;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
705 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
706
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
707 return "$year2$month2$day2" <=> "$year$month$day";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
708 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
709
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
710
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
711
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
712
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
713 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
714
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
715 Output the index page + index RSS feed.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
716
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
717 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
718
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
719 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
720
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
721 sub outputIndexPage
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
722 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
723
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
724 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
725 # Holder for the blog entries.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
726 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
727 my $entries;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
728
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
729 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
730 # Find all the entries and sort them to be most recent first.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
731 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
732 my $tmp;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
733 foreach my $file ( keys ( %data ) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
734 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
735 my $blog = readBlogEntry( $file );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
736 push( @$tmp, $blog ) if (keys( %$blog ) );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
737 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
738 my @tmp2 = sort bywhen @$tmp;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
739
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
740
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
741 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
742 # The number of entries to display upon the index.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
743 #
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
744 my $max = $CONFIG{'entry-count'};
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
745 foreach my $f ( @tmp2 )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
746 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
747 push( @$entries, $f ) if ( $max > 0 );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
748 $max -= 1;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
749 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
750
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
751 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
752 # Open the index template.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
753 #
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
754 my $template = loadTemplate( "index.template",
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
755 die_on_bad_params => 0 );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
756
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
757 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
758 # The entries.
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
759 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
760 $template->param( entries => $entries )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
761 if ( $entries );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
762
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
763 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
764 # The clouds
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
765 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
766 $template->param( tagcloud => $CLOUD{'tag'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
767 if ( $CLOUD{'tag'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
768 $template->param( datecloud => $CLOUD{'archive'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
769 if ( $CLOUD{'archive'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
770
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
771 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
772 # Blog title and subtitle, if present.
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
773 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
774 $template->param( blog_title => $CONFIG{'blog_title'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
775 if ( $CONFIG{'blog_title'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
776 $template->param( blog_subtitle => $CONFIG{'blog_subtitle'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
777 if ( $CONFIG{'blog_subtitle'} );
23
59b123e21627 2007-08-15 18:23:35 by steve
steve
parents: 21
diff changeset
778 $template->param( release => $RELEASE );
59b123e21627 2007-08-15 18:23:35 by steve
steve
parents: 21
diff changeset
779
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
780
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
781 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
782 # Page to use
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
783 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
784 my $index = $CONFIG{'filename'} || "index.html";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
785
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
786 open( OUTPUT, ">", "$CONFIG{'output'}/$index" );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
787 print OUTPUT $template->output();
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
788 close( OUTPUT );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
789
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
790 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
791 # Output the RSS feed
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
792 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
793 $template = loadTemplate( "index.xml.template",
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
794 die_on_bad_params => 0 );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
795 $template->param( entries => $entries ) if ( $entries );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
796 open( OUTPUT, ">", "$CONFIG{'output'}/index.rss" );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
797 print OUTPUT $template->output();
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
798 close( OUTPUT );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
799 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
800
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
801
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
802
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
803 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
804
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
805 Write out a /tags/$foo/index.html containing each blog entry which has the
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
806 tag '$foo'.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
807
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
808 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
809
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
810 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
811
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
812 sub outputTagPage
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
813 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
814 my ( $tagName ) = ( @_ );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
815
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
816 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
817 # Make the tag directory.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
818 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
819 my $dir = "$CONFIG{'output'}/tags/";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
820 mkpath( $dir, 0, 0755 ) if ( ! -d $dir );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
821
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
822 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
823 # Now the specific one.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
824 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
825 $dir = "$CONFIG{'output'}/tags/$tagName";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
826 mkdir $dir, 0755 if ( ! -d $dir );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
827
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
828 my %allTags;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
829 my %tagEntries;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
830 foreach my $f ( keys %data )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
831 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
832 my $h = $data{$f};
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
833 my $tags = $h->{'tags'} || undef;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
834 foreach my $t ( @$tags )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
835 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
836 $allTags{$t}+=1;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
837 my $a = $tagEntries{$t};
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
838 push @$a, $f ;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
839 $tagEntries{$t}= $a;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
840 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
841 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
842
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
843 my $matching = $tagEntries{$tagName};
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
844
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
845 my $entries;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
846
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
847 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
848 # Now read the matching entries.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
849 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
850 foreach my $f ( sort @$matching )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
851 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
852 my $blog = readBlogEntry( $f );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
853 if (keys( %$blog ) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
854 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
855 $CONFIG{'verbose'} && print "\tAdded: $f\n";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
856 push( @$entries, $blog );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
857 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
858 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
859
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
860 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
861 # Now write the output as a HTML page.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
862 #
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
863 my $template = loadTemplate( "tags.template",
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
864 die_on_bad_params => 0 );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
865
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
866 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
867 # The entries.
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
868 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
869 $template->param( entries => $entries ) if ( $entries );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
870 $template->param( tagname => $tagName );
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
871
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
872 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
873 # The clouds
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
874 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
875 $template->param( tagcloud => $CLOUD{'tag'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
876 if ( $CLOUD{'tag'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
877 $template->param( datecloud => $CLOUD{'archive'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
878 if ( $CLOUD{'archive'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
879
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
880 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
881 # Blog title and subtitle, if present.
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
882 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
883 $template->param( blog_title => $CONFIG{'blog_title'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
884 if ( $CONFIG{'blog_title'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
885 $template->param( blog_subtitle => $CONFIG{'blog_subtitle'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
886 if ( $CONFIG{'blog_subtitle'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
887
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
888
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
889 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
890 # Page to use
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
891 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
892 my $index = $CONFIG{'filename'} || "index.html";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
893
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
894 open( OUTPUT, ">", "$dir/$index" );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
895 print OUTPUT $template->output();
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
896 close( OUTPUT );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
897
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
898 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
899 # Now output the .xml file
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
900 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
901 $template = loadTemplate( "tags.xml.template", die_on_bad_params => 0 );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
902 $template->param( entries => $entries ) if ( $entries );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
903 $template->param( tagname => $tagName ) if ( $tagName );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
904 open( OUTPUT, ">", "$dir/$tagName.rss" );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
905 print OUTPUT $template->output();
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
906 close( OUTPUT );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
907
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
908 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
909
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
910
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
911
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
912 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
913
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
914 Output the archive page for the given Month + Year.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
915
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
916 This function is a *mess* and iterates over the data structure much
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
917 more often than it needs to.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
918
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
919 TODO: FIXME
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
920
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
921 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
922
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
923 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
924
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
925 sub outputArchivePage
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
926 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
927 my( $date ) = ( @_ );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
928
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
929 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
930 # Should we abort?
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
931 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
932 if ( $CONFIG{'no-archive'} )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
933 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
934 $CONFIG{'verbose'} && print "Ignoring archive page, as instructed.\n";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
935 return;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
936 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
937
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
938
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
939 my $year = '';
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
940 my $month = '';
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
941 if ( $date =~ /(.*) ([0-9]+)/ )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
942 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
943 $year = $2;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
944 $month = $1;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
945 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
946
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
947 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
948 # Make the directory
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
949 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
950 my $dir = "$CONFIG{'output'}/archive/$year";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
951 mkpath( $dir, 0, 0755 ) if ( ! -d $dir );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
952
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
953 $dir .= "/$month";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
954 mkdir $dir, 0755 if ( ! -d $dir );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
955
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
956 my $entries;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
957
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
958
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
959 my %allDates;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
960 my %dateEntries;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
961 foreach my $f ( keys %data )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
962 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
963 my $h = $data{$f};
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
964 my $date = $h->{'date'} || undef;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
965 $allDates{$date}+=1;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
966
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
967 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
968 # Strip to month
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
969 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
970 my ($ss,$mm,$hh,$day,$month,$year,$zone) = strptime($date);
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
971 my @abbr = qw( January February March April May June July August September October November December );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
972 $month = $abbr[$month];
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
973 $year += 1900;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
974 $date = $month . " " . $year;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
975 my $a = $dateEntries{$date};
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
976 push @$a, $f ;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
977 $dateEntries{$date}= $a;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
978 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
979
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
980
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
981 my $matching = $dateEntries{$date};
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
982 foreach my $f ( reverse @$matching )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
983 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
984 $CONFIG{'verbose'} && print "\tAdded: $f\n";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
985
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
986 my $blog = readBlogEntry( $f );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
987 if (keys( %$blog ) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
988 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
989 push( @$entries, $blog );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
990 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
991 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
992
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
993 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
994 # Now write the output as a HTML page.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
995 #
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
996 my $template = loadTemplate( "month.template",
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
997 die_on_bad_params => 0 );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
998
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
999 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1000 # The entries.
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1001 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1002 $template->param( entries => $entries ) if ( $entries );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1003 $template->param( year => $year, month => $month );
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1004
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1005 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1006 # The clouds
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1007 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1008 $template->param( tagcloud => $CLOUD{'tag'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1009 if ( $CLOUD{'tag'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1010 $template->param( datecloud => $CLOUD{'archive'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1011 if ( $CLOUD{'archive'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1012
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1013 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1014 # Blog title and subtitle, if present.
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1015 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1016 $template->param( blog_title => $CONFIG{'blog_title'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1017 if ( $CONFIG{'blog_title'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1018 $template->param( blog_subtitle => $CONFIG{'blog_subtitle'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1019 if ( $CONFIG{'blog_subtitle'} );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1020
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1021 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1022 # Page to use
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1023 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1024 my $index = $CONFIG{'filename'} || "index.html";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1025 open( OUTPUT, ">", "$dir/$index" );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1026 print OUTPUT $template->output();
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1027 close( OUTPUT );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1028
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1029 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1030 # Now the RSS page.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1031 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1032 $template = loadTemplate( "month.xml.template", die_on_bad_params => 0 );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1033 $template->param( entries => $entries ) if ( $entries );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1034 $template->param( month => $month, year => $year );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1035 open( OUTPUT, ">", "$dir/$month.rss" );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1036 print OUTPUT $template->output();
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1037 close( OUTPUT );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1038 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1039
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1040
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1041
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1042
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1043 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1044
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1045 Output static page.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1046
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1047 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1048
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1049 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1050
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1051 sub outputStaticPage
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1052 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1053 my ( $filename ) = ( @_ );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1054
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1055 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1056 # Load the template
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1057 #
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1058 my $template = loadTemplate( "entry.template",
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1059 die_on_bad_params => 0 );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1060
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1061 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1062 # Just the name of the file.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1063 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1064 my $basename = $filename;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1065 if ( $basename =~ /(.*)\/(.*)/ )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1066 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1067 $basename=$2;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1068 }
34
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1069
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1070 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1071 # Read the entry
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1072 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1073 my $static = readBlogEntry( $filename );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1074
34
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1075 #
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1076 # Get the pieces of information.
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1077 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1078 my $title = $static->{'title'} || $basename;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1079 my $tags = $static->{'tags'};
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1080 my $body = $static->{'body'};
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1081 my $date = $static->{'date'} || "";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1082
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1083 $CONFIG{'verbose'} && print "\t$filename\n";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1084
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1085 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1086 # Convert to suitable filename.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1087 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1088 my $file = fileToTitle($title);
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1089 $file = $CONFIG{'output'} . "/" . $file;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1090
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1091 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1092 # The entry.
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1093 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1094 $template->param( title => $title );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1095 $template->param( tags => $tags ) if ( $tags );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1096 $template->param( date => $date ) if ( $date );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1097 $template->param( body => $body );
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1098
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1099 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1100 # Our clouds
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1101 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1102 $template->param( tagcloud => $CLOUD{'tag'} ) if ( $CLOUD{'tag'} );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1103 $template->param( datecloud => $CLOUD{'archive'} ) if ( $CLOUD{'archive'} );
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1104
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1105 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1106 # Blog title and subtitle, if present.
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1107 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1108 $template->param( blog_title => $CONFIG{'blog_title'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1109 if ( $CONFIG{'blog_title'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1110 $template->param( blog_subtitle => $CONFIG{'blog_subtitle'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1111 if ( $CONFIG{'blog_subtitle'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1112
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1113 open( OUTPUT, ">", $file );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1114 print OUTPUT $template->output();
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1115 close( OUTPUT );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1116
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1117 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1118
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1119
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1120
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1121 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1122
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1123 Return a hash of interesting data from our blog file.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1124
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1125 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1126
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1127 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1128
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1129 sub readBlogEntry
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1130 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1131 my ( $filename ) = ( @_);
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1132
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1133 my %entry;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1134
33
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1135 #
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1136 # Do we have the memcache module available?
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1137 #
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1138 my $cache = undef;
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1139 my $test = "use Cache::Memcached;";
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1140 eval( $test );
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1141 if ( ( ! $@ ) && ( ! $CONFIG{'no-cache'} ) )
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1142 {
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1143 # create the cache object
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1144 $cache = new Cache::Memcached {'servers' => ["localhost:11211"] };
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1145
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1146 # fetch from the cache if it is present.
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1147 my $cached = $cache->get( "file_$filename" );
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1148 if ( defined( $cached ) )
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1149 {
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1150 $CONFIG{'verbose'} && print "memcache-get: $filename\n";
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1151 return( \%$cached )
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1152 }
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1153 else
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1154 {
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1155 $CONFIG{'verbose'} && print "memcache-fail: $filename\n";
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1156 }
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1157 }
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1158
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1159 #
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1160 # I
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1161 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1162
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
1163 my $title = ""; # entry title.
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
1164 my $tags = ""; # entry tags.
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
1165 my $body = ""; # entry body.
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
1166 my $date = ""; # entry date
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
1167 my $status = ""; # entry privacy/security.
11
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1168
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1169
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1170 open( ENTRY, "<", $filename ) or die "Failed to read $filename $!";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1171 while( my $line = <ENTRY> )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1172 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1173 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1174 # Append any tags.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1175 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1176 if ( $line =~ /^tags: (.*)/i )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1177 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1178 $tags .= $1;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1179 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1180 elsif (( $line =~ /^title: (.*)/i ) && !length($title) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1181 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1182 $title = $1;
11
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1183
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1184 # strip leading and trailing space.
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1185 $title =~ s/^\s+// if ( length $title );
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1186 $title =~ s/\s+$// if ( length $title );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1187 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1188 elsif (( $line =~ /^date: (.*)/i ) && !length($date) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1189 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1190 $date = $1;
11
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1191
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1192 # strip leading and trailing space.
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1193 $date =~ s/^\s+// if ( length $date );
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1194 $date =~ s/\s+$// if ( length $date );
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1195 }
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1196 elsif (( $line =~ /^status:(.*)/ ) && !length ( $status ) )
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1197 {
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1198 $status = $1;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1199 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1200 else
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1201 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1202 $body .= $line;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1203 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1204 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1205 close( ENTRY );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1206
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1207 #
16
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1208 # Convert the body if we're supposed to.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1209 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1210 if ( $CONFIG{'format'} eq 'html' )
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1211 {
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1212 # nop
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1213 }
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1214 elsif( lc($CONFIG{'format'}) eq 'markdown' )
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1215 {
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1216 $body = markdown2HTML( $body );
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1217 }
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1218 elsif( lc($CONFIG{'format'}) eq 'textile' )
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1219 {
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1220 $body = textile2HTML( $body );
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1221 }
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1222 else
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1223 {
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
1224 print "Unkown blog entry format ($CONFIG{'format'}). Treating as HTML.\n";
16
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1225 }
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1226
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1227 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1228 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1229 # If we have title then we can store it
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1230 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1231 my $entryTags;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1232
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1233 foreach my $tag ( split( /,/, $tags ) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1234 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1235 # strip leading and trailing space.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1236 $tag =~ s/^\s+//;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1237 $tag =~ s/\s+$//;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1238
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1239 # skip empty tags.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1240 next if ( !length($tag) );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1241 $tag = lc($tag);
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1242 push ( @$entryTags, { tag => $tag } );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1243 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1244
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1245 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1246 # Get the link
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1247 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1248 my $link = fileToTitle( $title );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1249
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1250 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1251 # If the date isn't set then use todays.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1252 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1253 if ( ! defined($date) ||( !length( $date ) ) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1254 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1255 my @abbr = qw( Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov De
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1256 c );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1257 my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1258 localtime(time);
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1259
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1260 $year += 1900;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1261
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1262 $date = "$mday $abbr[$mon] $year";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1263 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1264
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1265 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1266 # Store the entry.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1267 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1268 $entry{'title'} = $title;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1269 $entry{'body'} = $body if ( $body );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1270 $entry{'link'} = $link;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1271 $entry{'date'} = $date;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1272 $entry{'tags'} = $entryTags if ( $entryTags );
33
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1273
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1274 #
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1275 # Store the read file in the cache if we're using it.
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1276 #
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1277 if ( defined( $cache ) )
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1278 {
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1279 $CONFIG{'verbose'} && print "memcache-set: $filename\n";
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1280 $cache->set( "file_$filename", \%entry );
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1281 }
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1282 return \%entry;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1283 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1284
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1285
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1286
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1287 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1288
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1289 Create a filename for an URL which does not contain unsafe
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1290 characters.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1291
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1292 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1293
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1294 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1295
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1296 sub fileToTitle
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1297 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1298 my( $file ) = ( @_ );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1299
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1300 if ( $file =~ /(.*)\.(.*)/ )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1301 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1302 $file = $1;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1303 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1304 $file =~ s/ /_/g;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1305 $file =~ s/\///g;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1306 $file =~ s/\\//g;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1307
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1308 my $suffix = $CONFIG{'suffix'} ||".html";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1309 $file .= $suffix;
34
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1310
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1311 #
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1312 # Lower case?
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1313 #
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1314 $file = lc($file) if ( $CONFIG{'lower-case'} );
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1315
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1316 return( $file );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1317
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1318 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1319
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1320
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1321
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1322 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1323
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1324 Load a template file.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1325
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1326 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1327
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1328 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1329
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1330 sub loadTemplate
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1331 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1332 my( $file, %params ) = (@_);
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1333
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1334 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1335 # Make sure the file exists.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1336 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1337 if ( ! -e $CONFIG{'template'} . "/" . $file )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1338 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1339 print <<EOF;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1340
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1341 The template file $file was not found in our template directory
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1342 of $CONFIG{'template'}.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1343
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1344 Aborting.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1345 EOF
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1346 exit;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1347 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1348
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1349 my $t = HTML::Template->new( filename => $file,
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1350 path => $CONFIG{'template'},
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1351 loop_context_vars => 1,
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1352 global_vars => 1,
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1353 %params );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1354
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1355 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1356 # Global setting.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1357 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1358 if ( $CONFIG{'url_prefix'} )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1359 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1360 $t->param( url_prefix => $CONFIG{'url_prefix'} );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1361 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1362
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1363 return( $t );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1364 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1365
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1366
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1367
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1368 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1369
7
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
1370 Read the specified configuration file if it exists.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1371
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1372 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1373
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1374 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1375
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1376 sub readConfigurationFile
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1377 {
7
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
1378 my( $file ) = ( @_ );
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
1379
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
1380 #
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
1381 # If it doesn't exist ignore it.
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
1382 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1383 return if ( ! -e $file );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1384
7
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
1385
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1386 my $line = "";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1387
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1388 open( FILE, "<", $file ) or die "Cannot read file '$file' - $!";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1389 while (defined($line = <FILE>) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1390 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1391 chomp $line;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1392 if ($line =~ s/\\$//)
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1393 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1394 $line .= <FILE>;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1395 redo unless eof(FILE);
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1396 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1397
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1398 # Skip lines beginning with comments
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1399 next if ( $line =~ /^([ \t]*)\#/ );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1400
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1401 # Skip blank lines
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1402 next if ( length( $line ) < 1 );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1403
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1404 # Strip trailing comments.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1405 if ( $line =~ /(.*)\#(.*)/ )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1406 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1407 $line = $1;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1408 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1409
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1410 # Find variable settings
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1411 if ( $line =~ /([^=]+)=([^\n]+)/ )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1412 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1413 my $key = $1;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1414 my $val = $2;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1415
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1416 # Strip leading and trailing whitespace.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1417 $key =~ s/^\s+//;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1418 $key =~ s/\s+$//;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1419 $val =~ s/^\s+//;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1420 $val =~ s/\s+$//;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1421
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1422 # command expansion?
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1423 if ( $val =~ /(.*)`([^`]+)`(.*)/ )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1424 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1425 # store
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1426 my $pre = $1;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1427 my $cmd = $2;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1428 my $post = $3;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1429
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1430 # get output
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1431 my $output = `$cmd`;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1432 chomp( $output );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1433
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1434 # build up replacement.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1435 $val = $pre . $output . $post;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1436 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1437
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1438 # Store value.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1439 $CONFIG{ $key } = $val;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1440 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1441 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1442
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1443 close( FILE );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1444 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1445
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1446
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1447
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1448 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1449
12
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1450 Copy any static files from the theme directory into the "live" location
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1451 in the output.
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1452
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1453 This only works for a top-level target directory.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1454
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1455 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1456
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1457 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1458
12
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1459 sub copyStaticFiles
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1460 {
12
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1461 #
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1462 # Soure and destination for the copy
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1463 #
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1464 my $input = $CONFIG{'template'};
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1465 my $output = $CONFIG{'output'};
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1466
12
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1467 foreach my $pattern ( qw! *.css *.jpg *.gif *.png *.js *.ico ! )
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1468 {
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1469 foreach my $file ( glob( $input . "/" . $pattern ) )
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1470 {
13
a3d2dca6ada3 2007-08-14 14:22:05 by steve
steve
parents: 12
diff changeset
1471 #
a3d2dca6ada3 2007-08-14 14:22:05 by steve
steve
parents: 12
diff changeset
1472 # Get the name of the file.
a3d2dca6ada3 2007-08-14 14:22:05 by steve
steve
parents: 12
diff changeset
1473 #
a3d2dca6ada3 2007-08-14 14:22:05 by steve
steve
parents: 12
diff changeset
1474 if ( $file =~ /(.*)\/(.*)/ )
a3d2dca6ada3 2007-08-14 14:22:05 by steve
steve
parents: 12
diff changeset
1475 {
a3d2dca6ada3 2007-08-14 14:22:05 by steve
steve
parents: 12
diff changeset
1476 $file = $2;
a3d2dca6ada3 2007-08-14 14:22:05 by steve
steve
parents: 12
diff changeset
1477 }
12
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1478 if ( ! -e "$output/$file" )
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1479 {
13
a3d2dca6ada3 2007-08-14 14:22:05 by steve
steve
parents: 12
diff changeset
1480 $CONFIG{'verbose'} && print "Copying static file: $file\n";
a3d2dca6ada3 2007-08-14 14:22:05 by steve
steve
parents: 12
diff changeset
1481 copy( "$input/$file", "$output/$file" );
12
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1482 }
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1483 }
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1484 }
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1485 }
16
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1486
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1487
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1488
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1489 =begin doc
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1490
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1491 Convert from markdown to HTML.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1492
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1493 =end doc
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1494
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1495 =cut
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1496
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1497 sub markdown2HTML
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1498 {
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1499 my( $text ) = (@_);
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1500
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1501 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1502 # Make sure we have the module installed. Use eval to
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1503 # avoid making this mandatory.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1504 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1505 my $test = "use Text::Markdown;";
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1506
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1507 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1508 # Test loading the module.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1509 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1510 eval( $test );
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1511 if ( $@ )
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1512 {
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1513 print <<EOF;
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1514
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1515 You have chosen to format your input text via Markdown, but the
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1516 Perl module Text::Markdown is not installed.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1517
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1518 Aborting.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1519 EOF
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1520 exit;
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1521 }
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1522
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1523 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1524 # Convert.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1525 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1526 $text = Text::Markdown::Markdown( $text );
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1527 return( $text );
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1528 }
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1529
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1530
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1531
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1532 =begin doc
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1533
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1534 Convert from textile to HTML.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1535
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1536 =end doc
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1537
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1538 =cut
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1539
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1540 sub textile2HTML
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1541 {
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1542 my( $text ) = (@_);
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1543
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1544 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1545 # Make sure we have the module installed. Use eval to
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1546 # avoid making this mandatory.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1547 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1548 my $test = "use Text::Textile;";
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1549
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1550 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1551 # Test loading the module.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1552 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1553 eval( $test );
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1554 if ( $@ )
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1555 {
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1556 print <<EOF;
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1557
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1558 You have chosen to format your input text via Textile, but the
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1559 Perl module Text::Textile is not installed.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1560
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1561 Aborting.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1562 EOF
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1563 exit;
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1564 }
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1565
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1566 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1567 # Convert.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1568 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1569 $text = Text::Textile::textile( $text );
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1570 return( $text );
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1571 }
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1572
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1573
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1574
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1575