annotate bin/chronicle @ 65:88f87687b36e

Removed references to the CVS repository and replaced them with Mercurial.
author Steve Kemp <steve@steve.org.uk>
date Sun, 25 Nov 2007 14:15:10 +0000
parents 41386f30097e
children fbeda752caa7
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
36
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
12 Path Options:
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
13
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
14 --config Specify a configuration file to read.
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
15 --input Specify the input directory to use.
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
16 --output Specify the directory to write output to.
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
17 --theme-dir Specify the path to the theme templates.
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
18 --theme Specify the theme to use.
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
19 --pattern Specify the pattern of files to work with.
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
20 --url-prefix Specify the prefix to the live blog.
36
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
21
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
22
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
23 Pre & Post-Build Commands:
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
24
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
25 --pre-build Specify a command to execute prior to building the blog.
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
26 --post-build Specify a command to execute once the blog has been built.
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
27
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
28 Blog Entry Options:
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
29
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
30 --format Specify the format of your entries, HTML/textile/markdown.
36
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
31
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
32 Optional Features:
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
33
46
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
34 --force Force the copying of static files from the blog theme.
36
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
35 --no-archive Don't create an archive page.
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
36 --no-cache Don't use the optional memcached features, even if available.
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
37 --no-tags Don't produce any tag pages.
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
38 --lower-case Lower-case all filenames which are output.
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
39
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
40
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
41 Help Options:
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
42
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
43 --help Show the help information for this script.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
44 --manual Read the manual for this script.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
45 --verbose Show useful debugging information.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
46 --version Show the version number and exit.
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 ABOUT
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 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
54 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
55 HTML files.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
56
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
57 It supports only the bare minimum of features which are required
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
58 to be useful:
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
59
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
60 * Tagging support.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
61
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
62 * RSS support.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
63
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
64 * Archive support.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
65
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
66 The obvious deficiencies are:
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
67
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
68 * Lack of support for commenting.
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 * Lack of pingback/trackback support.
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 Having said that it is a robust, stable, and useful system.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
73
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
74 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
75
46
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
76
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
77 =head1 BLOG FORMAT
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
78
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
79 The format of the text files we process is critical to the output
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
80 pages. Each entry should look something like this:
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
81
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
82 =for example begin
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
83
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
84 Title: This is the title of the blog post
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
85 Date: 2nd March 2007
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
86 Tags: one, two, three, long tag
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
87
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
88 The text of your entry goes here.
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
89
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
90 =for example end
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
91
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
92 In this example we can see that the entry itself has been prefaced
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
93 with a small header. An entry header is contains three optional lines,
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
94 if these are not present then there are sensible defaults as described
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
95 below:
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
96
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
97 =over 8
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
98
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
99 =item Title:
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
100 Describes the title of the post. If not present the filename of the entry
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
101 is used instead.
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
102
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
103 =item Date:
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
104 The date the post was written. If not present the creation time of the
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
105 file is used instead.
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
106
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
107 =item Tags:
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
108 Any tags which should be associated with the entry, separated by commas.
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
109
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
110 =back
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
111
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
112 The text of the entry itself is assumed to be HTML, however if you
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
113 have the optional modules installed you may write it in Markdown or
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
114 Textile formats - if they are not present you will receive a message
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
115 informing you of the names of the required modules.
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
116
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
117 You may specify the format of your entries either in the configuration
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
118 file, or via the command line flag B<--format>.
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
119
46
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
120 =cut
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
121
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
122
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
123 =head1 CONFIGURATION
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
124
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
125 The configuration of the software is minimal, and generally performed
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
126 via the command line arguments. However it is possible to save settings
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
127 either in the file global /etc/chroniclerc or the per-user ~/.chroniclerc
46
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
128 file.
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
129
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
130 If you wish you may pass the name of another configuration file to
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
131 the script with the B<--config> flag. This will be read after the
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
132 previous two files, and may override any settings which are present.
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
133
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
134 The configuration file contains lines like these:
46
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
135
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
136 =for example begin
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
137
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
138 input = /home/me/blog
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
139
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
140 output = /var/www/blog
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
141
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
142 format = markdown
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
143
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
144 =for example end
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
145
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
146 Keys which are unknown are ignored.
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
147
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
148 =cut
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
149
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
150
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
151 =head1 OPTIONAL CACHING
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
152
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
153 To speed the rebuilding of a large blog the compiler may use a local
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
154 Memcached deaemon, if installed and available.
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
155
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
156 To install this, under a Debian GNU/Linux system please run:
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
157
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
158 =for example begin
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
159
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
160 apt-get update
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
161 apt-get install memcached libcache-memcached-perl
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
162
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
163 =for example end
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
164
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
165 You may disable this caching behaviour with --no-cache, and see the
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
166 effect with --verbose.
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
167
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
168 =cut
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
169
1
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 =head1 AUTHOR
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
172
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
173 Steve
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
174 --
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
175 http://www.steve.org.uk/
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 =cut
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 =head1 LICENSE
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
180
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
181 Copyright (c) 2007 by Steve Kemp. All rights reserved.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
182
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
183 This module is free software;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
184 you can redistribute it and/or modify it under
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
185 the same terms as Perl itself.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
186 The LICENSE file contains the full text of the license.
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 =cut
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 use strict;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
192 use warnings;
45
a9f8a82045f8 2007-10-10 20:00:57 by steve
steve
parents: 44
diff changeset
193
a9f8a82045f8 2007-10-10 20:00:57 by steve
steve
parents: 44
diff changeset
194
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
195 use Date::Parse;
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
196 use Date::Format;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
197 use File::Copy;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
198 use File::Path;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
199 use Getopt::Long;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
200 use HTML::Template;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
201 use Pod::Usage;
45
a9f8a82045f8 2007-10-10 20:00:57 by steve
steve
parents: 44
diff changeset
202 use Time::Local;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
203
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
204
23
59b123e21627 2007-08-15 18:23:35 by steve
steve
parents: 21
diff changeset
205 #
59b123e21627 2007-08-15 18:23:35 by steve
steve
parents: 21
diff changeset
206 # Release number
59b123e21627 2007-08-15 18:23:35 by steve
steve
parents: 21
diff changeset
207 #
59b123e21627 2007-08-15 18:23:35 by steve
steve
parents: 21
diff changeset
208 # NOTE: Set by 'make release'.
59b123e21627 2007-08-15 18:23:35 by steve
steve
parents: 21
diff changeset
209 #
59b123e21627 2007-08-15 18:23:35 by steve
steve
parents: 21
diff changeset
210 my $RELEASE = 'UNRELEASED';
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
211
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
212
49
0c4f7753c9d3 2007-10-10 21:31:32 by steve
steve
parents: 48
diff changeset
213 #
0c4f7753c9d3 2007-10-10 21:31:32 by steve
steve
parents: 48
diff changeset
214 # The names of the months. Posted early to allow i18n users.
0c4f7753c9d3 2007-10-10 21:31:32 by steve
steve
parents: 48
diff changeset
215 #
0c4f7753c9d3 2007-10-10 21:31:32 by steve
steve
parents: 48
diff changeset
216 my @names = qw( January February March April May June July August September October November December );
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
217
1
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 # Setup default options.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
220 #
33
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
221 my %CONFIG = setupDefaultOptions();
1
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
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
224 #
7
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
225 # 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
226 #
7
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
227 readConfigurationFile( "/etc/chroniclerc" );
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
228 readConfigurationFile( $ENV{'HOME'} . "/.chroniclerc" );
1
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
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 # Parse the command line arguments.
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 parseCommandLineArguments();
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
235
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
236
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
237 #
59
943499ebeaef 2007-10-25 18:43:41 by steve
steve
parents: 57
diff changeset
238 # Another configuration file?
943499ebeaef 2007-10-25 18:43:41 by steve
steve
parents: 57
diff changeset
239 #
943499ebeaef 2007-10-25 18:43:41 by steve
steve
parents: 57
diff changeset
240 readConfigurationFile( $CONFIG{'config'} ) if ( defined $CONFIG{'config'} );
943499ebeaef 2007-10-25 18:43:41 by steve
steve
parents: 57
diff changeset
241
943499ebeaef 2007-10-25 18:43:41 by steve
steve
parents: 57
diff changeset
242
943499ebeaef 2007-10-25 18:43:41 by steve
steve
parents: 57
diff changeset
243 #
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
244 # Make sure we have arguments which are sane.
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
245 #
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
246 # Specifically we want to cope with the "new" 'theme-dir', and 'theme'
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
247 # arguments.
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
248 #
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
249 #
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
250 sanityCheckArguments();
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
251
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
252
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
253 #
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
254 # Listing themes?
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
255 #
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
256 if ( $CONFIG{'list-themes'} )
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
257 {
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
258 listThemes( $CONFIG{'theme-dir'} );
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
259 exit;
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
260 }
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
261
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
262 # Should we run something before we start?
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
263 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
264 if ( $CONFIG{'pre-build'} )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
265 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
266 $CONFIG{'verbose'} && print "Running command: $CONFIG{'pre-build'}\n";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
267
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
268 system($CONFIG{'pre-build'});
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
269 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
270
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
271
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
272 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
273 # 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
274 # we can use to create our pages.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
275 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
276 # 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
277 # 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
278 # keys such as:
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
279 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
280 # tags => [ 'test', 'testing' ]
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
281 # date => '1st july 2007'
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
282 # title => 'Some title'
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 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
285 my %data = createDataStructure();
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
286
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
287
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
288 #
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
289 # Find each unique tag used within our entries.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
290 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
291 my %all_tags;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
292 %all_tags = findAllTags() unless( $CONFIG{'no-tags'} );
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
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 # Find each unique month + year we've used.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
297 #
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
298 my %all_dates;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
299 %all_dates = findAllMonths() unless( $CONFIG{'no-archive'} );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
300
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 # 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
304 # sidebar.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
305 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
306 my %CLOUD;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
307 $CLOUD{'tag'} = createTagCloud( %all_tags ) unless( $CONFIG{'no-tags'} );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
308 $CLOUD{'archive'} = createDateCloud( %all_dates ) unless( $CONFIG{'no-archive'} );;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
309
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
310
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
311
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
312 #
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
313 # Create the output directories.
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
314 #
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
315 mkpath( $CONFIG{'output'}, 0, 0755 ) if ( ! -d $CONFIG{'output'} );
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
316 foreach my $tag ( keys %all_tags )
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
317 {
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
318 mkpath( "$CONFIG{'output'}/tags/$tag", 0, 0755 );
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
319 }
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
320 foreach my $date ( keys %all_dates )
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
321 {
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
322 next unless ( $date =~ /^([0-9]{4})-([0-9]{2})/ );
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
323 mkpath( "$CONFIG{'output'}/archive/$1/$2", 0, 0755 );
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
324 }
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
325
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
326
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
327 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
328 # Output each static page.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
329 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
330 $CONFIG{'verbose'} && print "Creating static pages:\n";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
331 foreach my $file ( keys %data )
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 outputStaticPage( $file );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
334 }
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
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
337
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
338 #
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
339 # Build an output page for every tag which has ever been used.
1
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 foreach my $tagName ( sort keys %all_tags )
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 $CONFIG{'verbose'} && print "Creating tag page: $tagName\n";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
344
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
345 outputTagPage( $tagName );
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 #
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
351 # Now build the archive pages.
1
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 foreach my $date ( keys( %all_dates ) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
354 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
355 $CONFIG{'verbose'} && print "Creating archive page: $date\n";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
356
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
357 outputArchivePage( $date );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
358 }
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
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 #
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
363 # Finally out the most recent entries for the front-page.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
364 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
365 outputIndexPage();
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
366
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
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
369 #
12
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
370 # Copy any static files into place.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
371 #
12
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
372 copyStaticFiles();
1
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
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 # Post-build command?
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
377 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
378 if ( $CONFIG{'post-build'} )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
379 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
380 $CONFIG{'verbose'} && print "Running command: $CONFIG{'post-build'}\n";
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 system($CONFIG{'post-build'});
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
383 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
384
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
385
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
386 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
387 # All done.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
388 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
389 exit;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
390
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
391
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
392
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
393
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
394
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
395
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
396
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
397 =begin doc
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 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
400
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
401 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
402
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
403 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
404
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
405 sub setupDefaultOptions
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
406 {
33
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
407 my %CONFIG;
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
408
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
409 #
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
410 # Text directory.
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
411 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
412 $CONFIG{'input'} = "./blog";
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
413
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
414 #
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
415 # Output directory.
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
416 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
417 $CONFIG{'output'} = "./output";
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
418
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
419 #
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
420 # Theme setup
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
421 #
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
422 $CONFIG{'theme-dir'} = "./themes/";
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
423 $CONFIG{'theme'} = "default";
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
424
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
425 #
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
426 # prefix for all links.
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
427 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
428 $CONFIG{'url-prefix'} = "";
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
429
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
430 #
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
431 # Default input format
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
432 #
16
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
433 $CONFIG{'format'} = 'html';
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
434
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
435 #
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
436 # Entries per-page for the index.
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
437 #
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
438 $CONFIG{'entry-count'} = 10;
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
439
46
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
440 #
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
441 # Don't overwrite files by default
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
442 #
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
443 $CONFIG{'force'} = 0;
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
444
33
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
445 return( %CONFIG );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
446 }
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
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
450
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
451 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
452
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
453 Parse the command line arguments this script was given.
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 =end doc
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 =cut
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 sub parseCommandLineArguments
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 my $HELP = 0;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
462 my $MANUAL = 0;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
463 my $VERSION = 0;
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 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
466 # Parse options.
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 GetOptions(
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
469 # Help options
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
470 "help", \$HELP,
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
471 "manual", \$MANUAL,
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
472 "verbose", \$CONFIG{'verbose'},
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
473 "version", \$VERSION,
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
474 "list-themes", \$CONFIG{'list-themes'},
1
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 # paths
59
943499ebeaef 2007-10-25 18:43:41 by steve
steve
parents: 57
diff changeset
477 "config=s", \$CONFIG{'config'},
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
478 "input=s", \$CONFIG{'input'},
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
479 "output=s", \$CONFIG{'output'},
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
480 "theme-dir=s", \$CONFIG{'theme-dir'},
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
481 "theme=s", \$CONFIG{'theme'},
36
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
482 "pattern=s", \$CONFIG{'pattern'},
1
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 # optional
46
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
485 "force", \$CONFIG{'force'},
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
486 "no-tags", \$CONFIG{'no-tags'},
33
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
487 "no-cache", \$CONFIG{'no-cache'},
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
488 "no-archive", \$CONFIG{'no-archive'},
34
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
489 "lower-case", \$CONFIG{'lower-case'},
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
490
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
491 # input format.
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
492 "format=s", \$CONFIG{'format'},
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
493
27
25450021ba3e 2007-08-16 12:45:55 by steve
steve
parents: 23
diff changeset
494 # prefix
25450021ba3e 2007-08-16 12:45:55 by steve
steve
parents: 23
diff changeset
495 "url-prefix=s", \$CONFIG{'url_prefix'},
25450021ba3e 2007-08-16 12:45:55 by steve
steve
parents: 23
diff changeset
496
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
497 # commands
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
498 "pre-build=s", \$CONFIG{'pre-build'},
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
499 "post-build=s", \$CONFIG{'post-build'},
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
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
503 pod2usage(1) if $HELP;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
504 pod2usage(-verbose => 2 ) if $MANUAL;
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 if ( $VERSION )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
507 {
62
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
508 my $REVISION = '$Revision: 1.28 $';
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
509 if ( $REVISION =~ /1.([0-9.]+) / )
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 $REVISION = $1;
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
23
59b123e21627 2007-08-15 18:23:35 by steve
steve
parents: 21
diff changeset
514 print( "chronicle release $RELEASE\n" );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
515 exit;
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 }
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
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 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
522
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
523 Create our global datastructure, by reading each of the blog
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
524 files and extracting:
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
525
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
526 1. The title of the entry.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
527
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
528 2. Any tags which might be present.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
529
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
530 3. The date upon which it was made.
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 =end doc
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 =cut
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 sub createDataStructure
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 my %results;
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 if ( ! -d $CONFIG{'input'} )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
541 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
542 print <<EOF;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
543
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
544 The blog input directory $CONFIG{'input'} does not exist.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
545
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
546 Aborting.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
547 EOF
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 exit
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
550 }
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 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
553 # Did the user override the default pattern?
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 $pattern = $CONFIG{'pattern'} || "*";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
556 my $count = 0;
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 foreach my $file ( sort( glob( $CONFIG{'input'} . "/" . $pattern ) ) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
559 {
7
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
560 #
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
561 # Ignore directories.
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
562 #
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
563 next if ( -d $file );
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
564
62
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
565 my $tags = '';
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
566 my $title = '';
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
567 my $date = '';
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
568 my $private = 0;
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 my @tags;
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 open( INPUT, "<", $file ) or die "Failed to open blog file $file - $!";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
573 while( my $line = <INPUT> )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
574 {
62
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
575 #
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
576 # Get the tags
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
577 #
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
578 if ( ( $line =~ /^tags:(.*)/i ) && !length($tags) )
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
579 {
62
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
580 $tags = $1;
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
581 foreach my $t ( split( /,/, $tags ) )
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
582 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
583 # strip leading and trailing space.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
584 $t =~ s/^\s+//;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
585 $t =~ s/\s+$//;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
586
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
587 # skip empty tags.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
588 next if ( !length($t) );
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 # lowercase and store the tags.
62
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
591 $t = lc($t);
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
592 push ( @tags, $t );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
593 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
594 }
11
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
595 elsif (( $line =~ /^title:(.*)/i ) && !length($title) )
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
596 {
62
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
597 #
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
598 # Get the title.
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
599 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
600 $title = $1;
11
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
601
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
602 # strip leading and trailing space.
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
603 $title =~ s/^\s+// if ( length $title );
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
604 $title =~ s/\s+$// if ( length $title );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
605 }
11
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
606 elsif (( $line =~ /^date:(.*)/i ) && !length($date) )
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
607 {
62
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
608 #
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
609 # Get the date.
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
610 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
611 $date = $1;
11
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
612
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
613 # strip leading and trailing space.
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
614 $date =~ s/^\s+// if ( $date );
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
615 $date =~ s/\s+$// if ( $date );
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
616
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
617 }
11
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
618 elsif ( $line =~ /^status:(.*)/i )
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
619 {
62
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
620 #
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
621 # The security level.
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
622 #
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
623
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
624 my $level = $1;
11
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
625
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
626 # strip leading and trailing space.
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
627 $level =~ s/^\s+// if ( $level );
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
628 $level =~ s/\s+$// if ( $level );
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
629
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
630 $private = 1 if ( $level =~ /private/i);
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
631 }
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 close( INPUT );
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 $results{$file} = { tags => \@tags,
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
636 title => $title,
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
637 date => $date } unless( $private );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
638
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
639 $count += 1;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
640 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
641
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
642 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
643 # Make sure we found some entries.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
644 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
645 if ( $count < 1 )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
646 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
647 print <<EOF;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
648
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
649 There were no text files found in the input directory
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
650 $CONFIG{'input'} which matched the pattern '$pattern'.
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 Aborting.
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 EOF
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
655 exit;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
656 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
657
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
658 return %results;
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
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
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
663 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
664
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
665 Find each distinct tag which has been used within blog entries,
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
666 and the number of times each one has been used.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
667
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
668 =end doc
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 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
671
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
672 sub findAllTags
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
673 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
674 my %allTags;
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 foreach my $f ( keys %data )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
677 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
678 my $h = $data{$f};
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
679 my $tags = $h->{'tags'} || undef;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
680 foreach my $t ( @$tags )
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 $allTags{$t}+=1;
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 }
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 return( %allTags );
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
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 =begin doc
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 Create a structure for a tag cloud.
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 =end doc
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 =cut
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 sub createTagCloud
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
700 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
701 my( %unique ) = ( @_ );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
702
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
703 my $results;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
704
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
705 foreach my $key ( sort keys( %unique ) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
706 {
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
707 # count.
27
25450021ba3e 2007-08-16 12:45:55 by steve
steve
parents: 23
diff changeset
708 my $count = $unique{$key};
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
709
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
710 # size for the HTML.
27
25450021ba3e 2007-08-16 12:45:55 by steve
steve
parents: 23
diff changeset
711 my $size = 10 + ( $count * 5 );
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
712 $size = 40 if ( $size >= 40 );
27
25450021ba3e 2007-08-16 12:45:55 by steve
steve
parents: 23
diff changeset
713
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
714 push( @$results,
27
25450021ba3e 2007-08-16 12:45:55 by steve
steve
parents: 23
diff changeset
715 { tag => $key,
25450021ba3e 2007-08-16 12:45:55 by steve
steve
parents: 23
diff changeset
716 count => $count,
34
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
717 size => $size } );
1
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 return $results;
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 }
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 =begin doc
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 Find each of the distinct Month + Year pairs for entries which
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
728 have been created.
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 =end doc
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 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
733
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
734 sub findAllMonths
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
735 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
736 my %allDates;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
737 foreach my $f ( keys %data )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
738 {
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
739 my $h = $data{$f};
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
740 next if ( !$h );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
741
55
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
742 my $date = $h->{'date'};
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
743
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
744 #
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
745 # Not a date? Use the ctime of the file.
55
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
746 #
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
747 if ( !defined( $date ) || !length($date) )
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
748 {
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
749 #
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
750 # Test the file for creation time.
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
751 #
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
752 my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
753 $atime,$mtime,$ctime,$blksize,$blocks)
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
754 = stat($f);
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
755
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
756 $date = localtime( $ctime );
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
757 }
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
758
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
759 $date = time2str("%Y-%m", str2time($date));
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
760
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
761 $allDates{$date}+=1;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
762 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
763
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
764 return( %allDates );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
765 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
766
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
767
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
768
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
769 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
770
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
771 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
772
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
773 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
774 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
775
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
776 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
777
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
778 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
779
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
780 sub createDateCloud
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
781 {
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
782 my( %entry_dates ) = ( @_ );
1
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 $results;
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
785 my $year;
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
786 my $months;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
787
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
788 foreach my $date ( sort keys %entry_dates )
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
789 {
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
790 next unless ( $date =~ /^([0-9]{4})-([0-9]{2})/ );
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
791
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
792 if ( $year and $1 ne $year )
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
793 {
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
794 push( @$results, { year => $year,
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
795 months => $months } );
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
796 undef $months;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
797 }
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
798 $year = $1;
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
799
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
800 push( @$months, { month => $2,
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
801 month_name => $names[$2-1],
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
802 count => $entry_dates{$date} } );
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
803
1
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
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
806 push( @$results, { year => $year,
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
807 months => $months } );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
808
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
809 return $results;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
810 }
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
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 =begin doc
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 Sort by date.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
817
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
818 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
819
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
820 =cut
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 sub bywhen
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
823 {
37
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
824 #
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
825 # Parse and return the date
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
826 #
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
827 my ($ss1,$mm1,$hh1,$day1,$month1,$year1,$zone1) = strptime($a->{'date'});
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
828 my ($ss2,$mm2,$hh2,$day2,$month2,$year2,$zone2) = strptime($b->{'date'});
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
829
37
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
830 #
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
831 # Abort if we didn't work.
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
832 #
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
833 die "Couldn't find first year" unless defined($year1);
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
834 die "Couldn't find second year" unless defined($year2);
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
835
37
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
836 #
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
837 # Convert to compare
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
838 #
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
839 my $c = timelocal(0,0,0,$day1,$month1,$year1 + 1900);
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
840 my $d = timelocal(0,0,0,$day2,$month2,$year2 + 1900);
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
841
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
842 return $d <=> $c;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
843 }
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
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 =begin doc
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 Output the index page + index RSS feed.
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 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
853
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
854 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
855
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
856 sub outputIndexPage
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 # Holder for the blog entries.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
861 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
862 my $entries;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
863
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
864 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
865 # 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
866 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
867 my $tmp;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
868 foreach my $file ( keys ( %data ) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
869 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
870 my $blog = readBlogEntry( $file );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
871 push( @$tmp, $blog ) if (keys( %$blog ) );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
872 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
873 my @tmp2 = sort bywhen @$tmp;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
874
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
875
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
876 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
877 # The number of entries to display upon the index.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
878 #
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
879 my $max = $CONFIG{'entry-count'};
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
880 foreach my $f ( @tmp2 )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
881 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
882 push( @$entries, $f ) if ( $max > 0 );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
883 $max -= 1;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
884 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
885
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
886 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
887 # Open the index template.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
888 #
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
889 my $template = loadTemplate( "index.template",
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
890 die_on_bad_params => 0 );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
891
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
892 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
893 # The entries.
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
894 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
895 $template->param( entries => $entries )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
896 if ( $entries );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
897
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
898 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
899 # The clouds
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
900 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
901 $template->param( tagcloud => $CLOUD{'tag'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
902 if ( $CLOUD{'tag'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
903 $template->param( datecloud => $CLOUD{'archive'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
904 if ( $CLOUD{'archive'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
905
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
906 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
907 # Blog title and subtitle, if present.
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
908 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
909 $template->param( blog_title => $CONFIG{'blog_title'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
910 if ( $CONFIG{'blog_title'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
911 $template->param( blog_subtitle => $CONFIG{'blog_subtitle'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
912 if ( $CONFIG{'blog_subtitle'} );
23
59b123e21627 2007-08-15 18:23:35 by steve
steve
parents: 21
diff changeset
913 $template->param( release => $RELEASE );
59b123e21627 2007-08-15 18:23:35 by steve
steve
parents: 21
diff changeset
914
1
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 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
917 # Page to use
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 my $index = $CONFIG{'filename'} || "index.html";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
920
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
921 outputTemplate( $template, $index );
1
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 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
924 # Output the RSS feed
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
925 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
926 $template = loadTemplate( "index.xml.template",
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
927 die_on_bad_params => 0 );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
928 $template->param( entries => $entries ) if ( $entries );
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
929 outputTemplate( $template, "index.rss" );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
930 }
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
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 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
935
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
936 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
937 tag '$foo'.
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 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
940
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
941 =cut
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 sub outputTagPage
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
944 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
945 my ( $tagName ) = ( @_ );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
946
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
947 my $dir = "tags/$tagName";
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
948
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
949 my %allTags;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
950 my %tagEntries;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
951 foreach my $f ( keys %data )
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 my $h = $data{$f};
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
954 my $tags = $h->{'tags'} || undef;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
955 foreach my $t ( @$tags )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
956 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
957 $allTags{$t}+=1;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
958 my $a = $tagEntries{$t};
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
959 push @$a, $f ;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
960 $tagEntries{$t}= $a;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
961 }
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
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
964 my $matching = $tagEntries{$tagName};
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
965
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
966 my $entries;
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 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
969 # Now read the matching entries.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
970 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
971 foreach my $f ( sort @$matching )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
972 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
973 my $blog = readBlogEntry( $f );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
974 if (keys( %$blog ) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
975 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
976 $CONFIG{'verbose'} && print "\tAdded: $f\n";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
977 push( @$entries, $blog );
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 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
982 # Now write the output as a HTML page.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
983 #
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
984 my $template = loadTemplate( "tags.template",
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
985 die_on_bad_params => 0 );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
986
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
987 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
988 # The entries.
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
989 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
990 $template->param( entries => $entries ) if ( $entries );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
991 $template->param( tagname => $tagName );
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
992
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
993 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
994 # The clouds
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
995 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
996 $template->param( tagcloud => $CLOUD{'tag'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
997 if ( $CLOUD{'tag'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
998 $template->param( datecloud => $CLOUD{'archive'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
999 if ( $CLOUD{'archive'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1000
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1001 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1002 # Blog title and subtitle, if present.
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1003 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1004 $template->param( blog_title => $CONFIG{'blog_title'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1005 if ( $CONFIG{'blog_title'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1006 $template->param( blog_subtitle => $CONFIG{'blog_subtitle'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1007 if ( $CONFIG{'blog_subtitle'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1008
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1009
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1010 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1011 # Page to use
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1012 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1013 my $index = $CONFIG{'filename'} || "index.html";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1014
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1015 outputTemplate( $template, "$dir/$index" );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1016
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1017 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1018 # Now output the .xml file
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1019 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1020 $template = loadTemplate( "tags.xml.template", die_on_bad_params => 0 );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1021 $template->param( entries => $entries ) if ( $entries );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1022 $template->param( tagname => $tagName ) if ( $tagName );
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1023 outputTemplate( $template, "$dir/$tagName.rss" );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1024 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1025
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1026
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1027
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1028 =begin doc
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 Output the archive page for the given Month + Year.
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 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
1033 more often than it needs to.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1034
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1035 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1036
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1037 =cut
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 sub outputArchivePage
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 my( $date ) = ( @_ );
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 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1044 # Should we abort?
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1045 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1046 if ( $CONFIG{'no-archive'} )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1047 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1048 $CONFIG{'verbose'} && print "Ignoring archive page, as instructed.\n";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1049 return;
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
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 $year = '';
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1054 my $month = '';
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1055 if ( $date =~ /^([0-9]{4})-([0-9]{2})/ )
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1056 {
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1057 $year = $1;
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1058 $month = $2;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1059 }
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 # Make the directory
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1063 #
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1064 my $dir = "archive/$year/$month";
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1065
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1066 my $entries;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1067
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1068
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1069 my %dateEntries;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1070 foreach my $f ( keys %data )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1071 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1072 my $h = $data{$f};
55
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1073 my $date = $h->{'date'};
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1074
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1075 #
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1076 # Not a date? Use the file.
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1077 #
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1078 if ( !defined( $date ) || !length($date) )
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1079 {
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1080 #
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1081 # Test the file for creation time.
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1082 #
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1083 my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1084 $atime,$mtime,$ctime,$blksize,$blocks)
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1085 = stat($f);
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1086
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1087 $date = localtime( $ctime );
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1088 }
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1089
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1090 $date = time2str("%Y-%m", str2time($date));
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1091
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1092 push @{$dateEntries{$date}}, $f ;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1093 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1094
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1095
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1096 my $matching = $dateEntries{$date};
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1097 foreach my $f ( reverse @$matching )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1098 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1099 $CONFIG{'verbose'} && print "\tAdded: $f\n";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1100
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1101 my $blog = readBlogEntry( $f );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1102 if (keys( %$blog ) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1103 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1104 push( @$entries, $blog );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1105 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1106 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1107
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1108 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1109 # Now write the output as a HTML page.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1110 #
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1111 my $template = loadTemplate( "month.template",
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1112 die_on_bad_params => 0 );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1113
48
29464ede63dd 2007-10-10 21:30:50 by steve
steve
parents: 46
diff changeset
1114
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1115 #
48
29464ede63dd 2007-10-10 21:30:50 by steve
steve
parents: 46
diff changeset
1116 # The entries
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1117 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1118 $template->param( entries => $entries ) if ( $entries );
48
29464ede63dd 2007-10-10 21:30:50 by steve
steve
parents: 46
diff changeset
1119
29464ede63dd 2007-10-10 21:30:50 by steve
steve
parents: 46
diff changeset
1120 #
29464ede63dd 2007-10-10 21:30:50 by steve
steve
parents: 46
diff changeset
1121 # Output the month + year.
29464ede63dd 2007-10-10 21:30:50 by steve
steve
parents: 46
diff changeset
1122 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1123 $template->param( year => $year, month => $month );
48
29464ede63dd 2007-10-10 21:30:50 by steve
steve
parents: 46
diff changeset
1124 $template->param( month_name => $names[$month - 1 ] );
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1125
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1126 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1127 # The clouds
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1128 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1129 $template->param( tagcloud => $CLOUD{'tag'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1130 if ( $CLOUD{'tag'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1131 $template->param( datecloud => $CLOUD{'archive'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1132 if ( $CLOUD{'archive'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1133
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1134 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1135 # Blog title and subtitle, if present.
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1136 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1137 $template->param( blog_title => $CONFIG{'blog_title'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1138 if ( $CONFIG{'blog_title'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1139 $template->param( blog_subtitle => $CONFIG{'blog_subtitle'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1140 if ( $CONFIG{'blog_subtitle'} );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1141
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1142 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1143 # Page to use
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1144 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1145 my $index = $CONFIG{'filename'} || "index.html";
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1146 outputTemplate( $template, "$dir/$index" );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1147
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1148 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1149 # Now the RSS page.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1150 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1151 $template = loadTemplate( "month.xml.template", die_on_bad_params => 0 );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1152 $template->param( entries => $entries ) if ( $entries );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1153 $template->param( month => $month, year => $year );
48
29464ede63dd 2007-10-10 21:30:50 by steve
steve
parents: 46
diff changeset
1154 $template->param( month_name => $names[$month - 1 ] );
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1155 outputTemplate( $template, "$dir/$month.rss" );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1156 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1157
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1158
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1159
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1160
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1161 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1162
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1163 Output static page.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1164
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1165 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1166
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1167 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1168
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1169 sub outputStaticPage
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1170 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1171 my ( $filename ) = ( @_ );
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 # Load the template
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1175 #
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1176 my $template = loadTemplate( "entry.template",
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1177 die_on_bad_params => 0 );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1178
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 # Just the name of the file.
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 my $basename = $filename;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1183 if ( $basename =~ /(.*)\/(.*)/ )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1184 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1185 $basename=$2;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1186 }
57
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1187 if ( $basename =~ /^(.*)\.(.*)$/ )
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1188 {
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1189 $basename = $1;
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1190 }
34
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1191
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1192 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1193 # Read the entry
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1194 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1195 my $static = readBlogEntry( $filename );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1196
34
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1197 #
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1198 # Get the pieces of information.
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1199 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1200 my $title = $static->{'title'} || $basename;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1201 my $tags = $static->{'tags'};
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1202 my $body = $static->{'body'};
55
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1203 my $date = $static->{'date'};
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1204
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1205 if ( !defined($date) )
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1206 {
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1207 my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1208 $atime,$mtime,$ctime,$blksize,$blocks)
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1209 = stat($filename);
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1210
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1211 $date = localtime( $ctime );
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1212
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1213 }
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1214
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1215 $CONFIG{'verbose'} && print "\t$filename\n";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1216
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1217 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1218 # Convert to suitable filename.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1219 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1220 my $file = fileToTitle($title);
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1221
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1222 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1223 # The entry.
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1224 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1225 $template->param( title => $title );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1226 $template->param( tags => $tags ) if ( $tags );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1227 $template->param( date => $date ) if ( $date );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1228 $template->param( body => $body );
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1229
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1230 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1231 # Our clouds
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1232 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1233 $template->param( tagcloud => $CLOUD{'tag'} ) if ( $CLOUD{'tag'} );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1234 $template->param( datecloud => $CLOUD{'archive'} ) if ( $CLOUD{'archive'} );
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1235
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1236 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1237 # Blog title and subtitle, if present.
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1238 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1239 $template->param( blog_title => $CONFIG{'blog_title'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1240 if ( $CONFIG{'blog_title'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1241 $template->param( blog_subtitle => $CONFIG{'blog_subtitle'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1242 if ( $CONFIG{'blog_subtitle'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1243
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1244 outputTemplate( $template, $file );
1
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
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
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1249 =begin doc
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 Return a hash of interesting data from our blog file.
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 =end doc
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 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1256
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1257 sub readBlogEntry
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1258 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1259 my ( $filename ) = ( @_);
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1260
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1261 my %entry;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1262
33
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1263 #
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1264 # Do we have the memcache module available?
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1265 #
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1266 my $cache = undef;
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1267 my $test = "use Cache::Memcached;";
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1268 eval( $test );
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1269 if ( ( ! $@ ) && ( ! $CONFIG{'no-cache'} ) )
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1270 {
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1271 # create the cache object
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1272 $cache = new Cache::Memcached {'servers' => ["localhost:11211"] };
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 # fetch from the cache if it is present.
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1275 my $cached = $cache->get( "file_$filename" );
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1276 if ( defined( $cached ) )
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1277 {
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1278 $CONFIG{'verbose'} && print "memcache-get: $filename\n";
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1279 return( \%$cached )
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1280 }
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1281 else
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1282 {
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1283 $CONFIG{'verbose'} && print "memcache-fail: $filename\n";
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1284 }
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1285 }
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1286
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1287
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
1288 my $title = ""; # entry title.
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
1289 my $tags = ""; # entry tags.
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
1290 my $body = ""; # entry body.
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
1291 my $date = ""; # entry date
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
1292 my $status = ""; # entry privacy/security.
11
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1293
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1294
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1295 open( ENTRY, "<", $filename ) or die "Failed to read $filename $!";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1296 while( my $line = <ENTRY> )
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 #
62
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1299 # Get the tags.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1300 #
62
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1301 if (( $line =~ /^tags: (.*)/i ) && !length( $tags ) )
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1302 {
62
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1303 $tags = $1;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1304 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1305 elsif (( $line =~ /^title: (.*)/i ) && !length($title) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1306 {
62
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1307 #
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1308 # Get the title
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1309 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1310 $title = $1;
11
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1311
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1312 # strip leading and trailing space.
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1313 $title =~ s/^\s+// if ( length $title );
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1314 $title =~ s/\s+$// if ( length $title );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1315 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1316 elsif (( $line =~ /^date: (.*)/i ) && !length($date) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1317 {
62
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1318 #
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1319 # Get the date.
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1320 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1321 $date = $1;
11
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1322
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1323 # strip leading and trailing space.
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1324 $date =~ s/^\s+// if ( length $date );
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1325 $date =~ s/\s+$// if ( length $date );
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1326 }
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1327 elsif (( $line =~ /^status:(.*)/ ) && !length ( $status ) )
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1328 {
62
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1329 #
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1330 # Security level?
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1331 #
11
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1332 $status = $1;
1
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 else
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1335 {
62
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1336 #
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1337 # Just a piece of body text.
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1338 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1339 $body .= $line;
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 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1342 close( ENTRY );
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 #
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1345 # Determine the input format to use.
16
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1346 #
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1347 my $format = lc($CONFIG{'format'});
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1348
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1349 #
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1350 # Now process accordingly.
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1351 #
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1352 if ( $format eq 'html' )
16
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1353 {
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1354 # nop
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1355 }
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1356 elsif( $format eq 'markdown' )
16
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1357 {
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1358 $body = markdown2HTML( $body );
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1359 }
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1360 elsif( $format eq 'textile' )
16
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1361 {
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1362 $body = textile2HTML( $body );
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1363 }
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1364 else
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1365 {
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1366 print "Unkown blog entry format ($CONFIG{'format'}).\n";
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1367 print "Treating as HTML.\n";
16
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1368 }
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1369
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1370 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1371 #
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1372 # If we have tags then we should use them.
1
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 my $entryTags;
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 foreach my $tag ( split( /,/, $tags ) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1377 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1378 # strip leading and trailing space.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1379 $tag =~ s/^\s+//;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1380 $tag =~ s/\s+$//;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1381
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1382 # skip empty tags.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1383 next if ( !length($tag) );
62
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1384
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1385 # tags are lowercase.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1386 $tag = lc($tag);
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1387 push ( @$entryTags, { tag => $tag } );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1388 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1389
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 # If the date isn't set then use todays.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1392 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1393 if ( ! defined($date) ||( !length( $date ) ) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1394 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1395 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
1396 c );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1397 my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1398 localtime(time);
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1399
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1400 $year += 1900;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1401
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1402 $date = "$mday $abbr[$mon] $year";
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
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1405 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1406 # Store the entry.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1407 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1408 $entry{'title'} = $title;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1409 $entry{'body'} = $body if ( $body );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1410 $entry{'date'} = $date;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1411 $entry{'tags'} = $entryTags if ( $entryTags );
33
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1412
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1413 #
57
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1414 # No title?
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1415 #
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1416 if ( !defined($entry{'title'}) ||
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1417 !length($entry{'title'}) )
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1418 {
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1419 my $basename = $filename;
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1420 if ( $basename =~ /(.*)\/(.*)/ )
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1421 {
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1422 $basename=$2;
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1423 }
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1424 if ( $basename =~ /^(.*)\.(.*)$/ )
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1425 {
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1426 $basename = $1;
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1427 }
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1428
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1429 $entry{'title'} = $basename;
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1430 }
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1431
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1432 #
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1433 # Get the link - after ensuring we have a title.
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1434 #
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1435 my $link = fileToTitle( $entry{'title'} );
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1436 $entry{'link'} = $link;
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1437
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1438
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1439 #
33
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1440 # 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
1441 #
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1442 if ( defined( $cache ) )
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1443 {
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1444 $CONFIG{'verbose'} && print "memcache-set: $filename\n";
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1445 $cache->set( "file_$filename", \%entry );
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1446 }
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1447 return \%entry;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1448 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1449
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1450
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1451
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1452 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1453
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1454 Create a filename for an URL which does not contain unsafe
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1455 characters.
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 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1458
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1459 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1460
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1461 sub fileToTitle
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1462 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1463 my( $file ) = ( @_ );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1464
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1465 if ( $file =~ /(.*)\.(.*)/ )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1466 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1467 $file = $1;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1468 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1469 $file =~ s/ /_/g;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1470 $file =~ s/\///g;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1471 $file =~ s/\\//g;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1472
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
1473 my $suffix = $CONFIG{'suffix'} || ".html";
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
1474 $file .= $suffix;
34
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1475
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1476 #
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1477 # Lower case?
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1478 #
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1479 $file = lc($file) if ( $CONFIG{'lower-case'} );
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1480
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1481 return( $file );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1482
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1483 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1484
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1485
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1486
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1487 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1488
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1489 Load a template file.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1490
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1491 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1492
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1493 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1494
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1495 sub loadTemplate
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1496 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1497 my( $file, %params ) = (@_);
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1498
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1499 #
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1500 # Get the directory.
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1501 #
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1502 my $dir = $CONFIG{'theme-dir'};
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1503
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1504 #
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1505 # XML files go in theme-dir/xml/
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1506 #
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1507 if ( $file =~ /\.xml\./i )
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1508 {
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1509 $dir .= "/xml/";
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1510 }
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1511 else
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1512 {
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1513 $dir .= "/" . $CONFIG{'theme'} . "/";
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1514 }
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1515
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1516
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1517 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1518 # Make sure the file exists.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1519 #
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1520 if ( ! -e $dir . $file )
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1521 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1522 print <<EOF;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1523
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1524 The template file $file was not found in the theme directory.
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1525
62
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1526 Theme : $CONFIG{'theme'}
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1527 Theme Directory: $CONFIG{'theme-dir'}
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1528
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1529 We expected to find $dir$file;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1530
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1531 Aborting.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1532 EOF
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1533 exit;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1534 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1535
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1536 my $t = HTML::Template->new( filename => $file,
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1537 path => $dir,
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1538 loop_context_vars => 1,
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1539 global_vars => 1,
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1540 %params );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1541
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1542 return( $t );
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1543 }
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1544
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1545
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1546
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1547 =begin doc
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1548
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1549 Set URL for top directory and output a template.
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1550
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1551 =end doc
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1552
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1553 =cut
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1554
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1555 sub outputTemplate
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1556 {
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1557 my( $template, $path ) = ( @_ );
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1558
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1559 #
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1560 # Select relative/absolute URL prefix.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1561 #
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1562 my $top;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1563 if ( $CONFIG{'url_prefix'} )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1564 {
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1565 $top = $CONFIG{'url_prefix'};
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1566 }
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1567 else
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1568 {
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1569 $top = $path;
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1570 $top =~ s'[^/]+/'../'g;
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1571 $top =~ s'[^/]*$'';
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1572 }
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1573 $template->param( top => $top );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1574
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1575 open( OUTPUT, ">", "$CONFIG{'output'}/$path" );
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1576 print OUTPUT $template->output();
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1577 close( OUTPUT );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1578 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1579
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1580
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1581
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1582 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1583
7
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
1584 Read the specified configuration file if it exists.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1585
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1586 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1587
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1588 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1589
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1590 sub readConfigurationFile
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1591 {
7
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
1592 my( $file ) = ( @_ );
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
1593
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
1594 #
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
1595 # If it doesn't exist ignore it.
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
1596 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1597 return if ( ! -e $file );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1598
7
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
1599
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1600 my $line = "";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1601
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1602 open( FILE, "<", $file ) or die "Cannot read file '$file' - $!";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1603 while (defined($line = <FILE>) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1604 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1605 chomp $line;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1606 if ($line =~ s/\\$//)
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1607 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1608 $line .= <FILE>;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1609 redo unless eof(FILE);
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1610 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1611
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1612 # Skip lines beginning with comments
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1613 next if ( $line =~ /^([ \t]*)\#/ );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1614
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1615 # Skip blank lines
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1616 next if ( length( $line ) < 1 );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1617
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1618 # Strip trailing comments.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1619 if ( $line =~ /(.*)\#(.*)/ )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1620 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1621 $line = $1;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1622 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1623
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1624 # Find variable settings
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1625 if ( $line =~ /([^=]+)=([^\n]+)/ )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1626 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1627 my $key = $1;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1628 my $val = $2;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1629
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1630 # Strip leading and trailing whitespace.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1631 $key =~ s/^\s+//;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1632 $key =~ s/\s+$//;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1633 $val =~ s/^\s+//;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1634 $val =~ s/\s+$//;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1635
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1636 # command expansion?
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1637 if ( $val =~ /(.*)`([^`]+)`(.*)/ )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1638 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1639 # store
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1640 my $pre = $1;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1641 my $cmd = $2;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1642 my $post = $3;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1643
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1644 # get output
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1645 my $output = `$cmd`;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1646 chomp( $output );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1647
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1648 # build up replacement.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1649 $val = $pre . $output . $post;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1650 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1651
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1652 # Store value.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1653 $CONFIG{ $key } = $val;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1654 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1655 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1656
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1657 close( FILE );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1658 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1659
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1660
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1661
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1662 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1663
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1664 Sanity check our arguments:
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1665
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1666 1. Make sure we have a theme-directory
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1667
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1668 2. Make sure we have a theme.
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1669
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1670 =end doc
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1671
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1672 =cut
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1673
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1674 sub sanityCheckArguments
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1675 {
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1676 if ( !$CONFIG{'theme-dir'} )
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1677 {
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1678 print <<EOF;
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1679
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1680 Error - You don't have a theme directory setup.
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1681
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1682 Please specify --theme-dir=/some/path, or add this to your configuration
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1683 file:
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1684
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1685 theme-dir = /path/to/use/
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1686 EOF
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1687
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1688 exit;
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1689 }
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1690
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1691 if ( ! -d $CONFIG{'theme-dir'} )
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1692 {
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1693 print "The theme directory you specified doesn't exist:\n";
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1694 print "\t" . $CONFIG{'theme-dir'} . "\n";
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1695 exit;
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1696 }
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1697
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1698 if ( !$CONFIG{'theme'} )
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1699 {
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1700 print <<EOF;
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1701
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1702 You've not specified a theme.
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1703
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1704 Please specify --theme=xx
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1705
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1706 Or add this to your configuration file:
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1707
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1708 theme = xx
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1709
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1710
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1711 [You may list themes with --list-themes]
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1712
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1713 EOF
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1714
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1715 exit;
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1716 }
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1717
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1718
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1719 if ( ! -d $CONFIG{'theme-dir'} . "/" . $CONFIG{'theme'} )
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1720 {
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1721 print "The theme directory you specified doesn't exist in the theme directory:\n";
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1722 print "\tTheme :" . $CONFIG{'theme'} . "\n";
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1723 print "\tTheme dir:" . $CONFIG{'theme-dir'} . "\n";
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1724 print "\tExpected :" . $CONFIG{'theme-dir'} . "/" . $CONFIG{'theme'} . "\n";
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1725 exit;
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1726 }
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1727
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1728 }
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1729
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1730
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1731
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1732
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1733 =begin doc
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1734
12
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1735 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
1736 in the output.
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1737
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1738 This only works for a top-level target directory.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1739
46
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
1740 Unless --force is specified we skip copying files which already exist.
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
1741
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1742 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1743
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1744 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1745
12
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1746 sub copyStaticFiles
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1747 {
12
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1748 #
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1749 # Soure and destination for the copy
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1750 #
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1751 my $input = $CONFIG{'theme-dir'} . "/" . $CONFIG{'theme'};
12
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1752 my $output = $CONFIG{'output'};
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1753
12
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1754 foreach my $pattern ( qw! *.css *.jpg *.gif *.png *.js *.ico ! )
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1755 {
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1756 foreach my $file ( glob( $input . "/" . $pattern ) )
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1757 {
13
a3d2dca6ada3 2007-08-14 14:22:05 by steve
steve
parents: 12
diff changeset
1758 #
a3d2dca6ada3 2007-08-14 14:22:05 by steve
steve
parents: 12
diff changeset
1759 # Get the name of the file.
a3d2dca6ada3 2007-08-14 14:22:05 by steve
steve
parents: 12
diff changeset
1760 #
a3d2dca6ada3 2007-08-14 14:22:05 by steve
steve
parents: 12
diff changeset
1761 if ( $file =~ /(.*)\/(.*)/ )
a3d2dca6ada3 2007-08-14 14:22:05 by steve
steve
parents: 12
diff changeset
1762 {
a3d2dca6ada3 2007-08-14 14:22:05 by steve
steve
parents: 12
diff changeset
1763 $file = $2;
a3d2dca6ada3 2007-08-14 14:22:05 by steve
steve
parents: 12
diff changeset
1764 }
46
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
1765 if ( $CONFIG{'force'} || ( ! -e "$output/$file" ) )
12
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1766 {
13
a3d2dca6ada3 2007-08-14 14:22:05 by steve
steve
parents: 12
diff changeset
1767 $CONFIG{'verbose'} && print "Copying static file: $file\n";
a3d2dca6ada3 2007-08-14 14:22:05 by steve
steve
parents: 12
diff changeset
1768 copy( "$input/$file", "$output/$file" );
12
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1769 }
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1770 }
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1771 }
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1772 }
16
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1773
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1774
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1775
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1776 =begin doc
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1777
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1778 Convert from markdown to HTML.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1779
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1780 =end doc
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1781
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1782 =cut
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1783
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1784 sub markdown2HTML
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1785 {
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1786 my( $text ) = (@_);
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1787
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1788 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1789 # Make sure we have the module installed. Use eval to
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1790 # avoid making this mandatory.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1791 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1792 my $test = "use Text::Markdown;";
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1793
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1794 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1795 # Test loading the module.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1796 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1797 eval( $test );
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1798 if ( $@ )
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1799 {
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1800 print <<EOF;
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1801
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1802 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
1803 Perl module Text::Markdown is not installed.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1804
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1805 Aborting.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1806 EOF
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1807 exit;
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1808 }
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1809
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1810 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1811 # Convert.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1812 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1813 $text = Text::Markdown::Markdown( $text );
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1814 return( $text );
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1815 }
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1816
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1817
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1818
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1819 =begin doc
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1820
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1821 Convert from textile to HTML.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1822
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1823 =end doc
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1824
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1825 =cut
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1826
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1827 sub textile2HTML
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1828 {
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1829 my( $text ) = (@_);
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1830
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1831 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1832 # Make sure we have the module installed. Use eval to
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1833 # avoid making this mandatory.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1834 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1835 my $test = "use Text::Textile;";
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1836
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1837 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1838 # Test loading the module.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1839 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1840 eval( $test );
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1841 if ( $@ )
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1842 {
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1843 print <<EOF;
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1844
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1845 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
1846 Perl module Text::Textile is not installed.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1847
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1848 Aborting.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1849 EOF
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1850 exit;
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1851 }
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1852
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1853 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1854 # Convert.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1855 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1856 $text = Text::Textile::textile( $text );
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1857 return( $text );
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1858 }
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1859
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1860
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1861
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1862
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1863 sub listThemes
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1864 {
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1865 my( $dir ) = ( @_ );
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1866
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1867 $CONFIG{'verbose'} && print "Listhing themes beneath : $dir\n";
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1868
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1869 foreach my $name ( sort( glob( $dir . "/*" ) ) )
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1870 {
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1871 next unless( -d $name );
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1872
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1873 next if ( $name =~ /\/xml$/ );
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1874
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1875 if ( $name =~ /^(.*)\/([^\/\\]*)$/ )
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1876 {
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1877 print $2 . "\n";
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1878 }
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1879 }
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1880 }