annotate bin/chronicle @ 144:571c8d4310f0

Removed redundent reading of entries, to speed up and simplify the code.
author Steve Kemp <steve@steve.org.uk>
date Wed, 26 Dec 2007 15:28:45 +0000
parents 55c15e6aebd6
children 89eef19064e8
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
85
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
14 --comments Specify the path to the optional comments directory.
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
15 --config Specify a configuration file to read.
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
16 --input Specify the input directory to use.
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
17 --output Specify the directory to write output to.
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
18 --theme-dir Specify the path to the theme templates.
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
19 --theme Specify the theme to use.
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
20 --pattern Specify the pattern of files to work with.
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
21 --url-prefix Specify the prefix to the live blog.
36
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
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
24 Pre & Post-Build Commands:
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
25
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
26 --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
27 --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
28
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
29 Blog Entry Options:
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
30
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
31 --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
32
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
33 Optional Features:
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
34
46
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
35 --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
36 --no-archive Don't create an archive page.
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
37 --no-cache Don't use the optional memcached features, even if available.
128
9f092b9be906 Updated spelling.
Steve Kemp <steve@steve.org.uk>
parents: 105
diff changeset
38 --no-calendar Don't use the optional calendar upon the index.
36
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
39 --no-tags Don't produce any tag pages.
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
40 --lower-case Lower-case all filenames which are output.
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
41
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
42
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
43 Help Options:
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
44
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
45 --help Show the help information for this script.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
46 --manual Read the manual for this script.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
47 --verbose Show useful debugging information.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
48 --version Show the version number and exit.
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 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
51
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 =head1 ABOUT
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
54
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
55 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
56 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
57 HTML files.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
58
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
59 It supports only the bare minimum of features which are required
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
60 to be useful:
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 * Tagging 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 * RSS 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 * Archive support.
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 The obvious deficiencies are:
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
69
85
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
70 * Lack of support for instant commenting.
1
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 * Lack of pingback/trackback support.
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 Having said that it is a robust, stable, and useful system.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
75
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
76 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
77
46
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
78
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
79 =head1 BLOG FORMAT
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
80
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
81 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
82 pages. Each entry should look something like this:
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 =for example begin
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
85
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
86 Title: This is the title of the blog post
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
87 Date: 2nd March 2007
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
88 Tags: one, two, three, long tag
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 The text of your entry goes here.
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 =for example end
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
93
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
94 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
95 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
96 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
97 below:
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 =over 8
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
100
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
101 =item Title:
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
102 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
103 is used instead.
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
104
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
105 =item Date:
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
106 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
107 file is used instead.
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
108
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
109 =item Tags:
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
110 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
111
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
112 =back
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
113
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
114 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
115 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
116 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
117 informing you of the names of the required modules.
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
118
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
119 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
120 file, or via the command line flag B<--format>.
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
121
46
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
122 =cut
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
123
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 =head1 CONFIGURATION
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
126
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
127 The configuration of the software is minimal, and generally performed
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
128 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
129 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
130 file.
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
131
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
132 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
133 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
134 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
135
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
136 The configuration file contains lines like these:
46
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 =for example begin
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 input = /home/me/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 output = /var/www/blog
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 format = markdown
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 =for example end
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
147
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
148 Keys which are unknown are ignored.
44
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 =cut
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
151
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
152
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
153 =head1 OPTIONAL CACHING
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
154
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
155 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
156 Memcached deaemon, if installed and available.
44
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 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
159
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
160 =for example begin
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
161
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
162 apt-get update
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
163 apt-get install memcached libcache-memcached-perl
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 =for example end
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
166
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
167 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
168 effect with --verbose.
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
169
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
170 =cut
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
171
66
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
172 =head1 OPTIONAL CALENDAR
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
173
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
174 If the 'HTML::CalendarMonthSimple' module is available each blog will
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
175 contain a simple month-view of the current month upon the index.
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
176
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
177 To disable this invoke the program with '--no-calendar'.
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
178
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
179 =cut
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
180
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
181
85
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
182 =head1 OPTIONAL COMMENTING
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
183
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
184 Included with the chronicle code you should find the file
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
185 cgi-bin/comments.cgi.
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
186
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
187 This file is designed to write submitted comments to the local
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
188 filesystem of your webserver. If you install that, and edit the
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
189 path at the start of teh script you should be able to include
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
190 comments in your blog.
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
191
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
192 In short there are three things you need to do:
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
193
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
194 =over 8
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
195
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
196 =item Install the CGI script and edit the path at the start.
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
197
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
198 =item Copy the output comments to your local blog source.
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
199
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
200 =item Run this script again with --comments=./path/to/comments
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
201
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
202 =back
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
203
143
55c15e6aebd6 Minore cleanups.
Steve Kemp <steve@steve.org.uk>
parents: 132
diff changeset
204 This should include the comments in the static output. More
55c15e6aebd6 Minore cleanups.
Steve Kemp <steve@steve.org.uk>
parents: 132
diff changeset
205 explicit instructions are provided within the file 'COMMENTS'
55c15e6aebd6 Minore cleanups.
Steve Kemp <steve@steve.org.uk>
parents: 132
diff changeset
206 included within the distribution.
85
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
207
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
208 =cut
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
209
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
210
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
211 =head1 AUTHOR
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
212
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
213 Steve
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
214 --
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
215 http://www.steve.org.uk/
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
216
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
217 =cut
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 =head1 LICENSE
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
220
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
221 Copyright (c) 2007 by Steve Kemp. All rights reserved.
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 This module is free software;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
224 you can redistribute it and/or modify it under
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
225 the same terms as Perl itself.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
226 The LICENSE file contains the full text of the license.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
227
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
228 =cut
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 use strict;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
232 use warnings;
45
a9f8a82045f8 2007-10-10 20:00:57 by steve
steve
parents: 44
diff changeset
233
a9f8a82045f8 2007-10-10 20:00:57 by steve
steve
parents: 44
diff changeset
234
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
235 use Date::Parse;
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
236 use Date::Format;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
237 use File::Copy;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
238 use File::Path;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
239 use Getopt::Long;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
240 use HTML::Template;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
241 use Pod::Usage;
45
a9f8a82045f8 2007-10-10 20:00:57 by steve
steve
parents: 44
diff changeset
242 use Time::Local;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
243
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
244
23
59b123e21627 2007-08-15 18:23:35 by steve
steve
parents: 21
diff changeset
245 #
59b123e21627 2007-08-15 18:23:35 by steve
steve
parents: 21
diff changeset
246 # Release number
59b123e21627 2007-08-15 18:23:35 by steve
steve
parents: 21
diff changeset
247 #
59b123e21627 2007-08-15 18:23:35 by steve
steve
parents: 21
diff changeset
248 # NOTE: Set by 'make release'.
59b123e21627 2007-08-15 18:23:35 by steve
steve
parents: 21
diff changeset
249 #
67
e1bef4e4fb5e Removed the 1.0 version
Steve Kemp <steve@steve.org.uk>
parents: 66
diff changeset
250 my $RELEASE = 'UNRELEASED';
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
251
49
0c4f7753c9d3 2007-10-10 21:31:32 by steve
steve
parents: 48
diff changeset
252 #
0c4f7753c9d3 2007-10-10 21:31:32 by steve
steve
parents: 48
diff changeset
253 # 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
254 #
0c4f7753c9d3 2007-10-10 21:31:32 by steve
steve
parents: 48
diff changeset
255 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
256
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
257 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
258 # Setup default options.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
259 #
33
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
260 my %CONFIG = setupDefaultOptions();
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
261
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
262
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
263 #
7
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
264 # 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
265 #
7
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
266 readConfigurationFile( "/etc/chroniclerc" );
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
267 readConfigurationFile( $ENV{'HOME'} . "/.chroniclerc" );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
268
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 # Parse the command line arguments.
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 parseCommandLineArguments();
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
274
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 #
59
943499ebeaef 2007-10-25 18:43:41 by steve
steve
parents: 57
diff changeset
277 # Another configuration file?
943499ebeaef 2007-10-25 18:43:41 by steve
steve
parents: 57
diff changeset
278 #
943499ebeaef 2007-10-25 18:43:41 by steve
steve
parents: 57
diff changeset
279 readConfigurationFile( $CONFIG{'config'} ) if ( defined $CONFIG{'config'} );
943499ebeaef 2007-10-25 18:43:41 by steve
steve
parents: 57
diff changeset
280
943499ebeaef 2007-10-25 18:43:41 by steve
steve
parents: 57
diff changeset
281
943499ebeaef 2007-10-25 18:43:41 by steve
steve
parents: 57
diff changeset
282 #
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
283 # Make sure we have arguments which are sane.
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
284 #
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
285 # 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
286 # arguments.
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
287 #
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
288 #
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
289 sanityCheckArguments();
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
290
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
291
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
292 #
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
293 # Listing themes?
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
294 #
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
295 if ( $CONFIG{'list-themes'} )
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
296 {
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
297 listThemes( $CONFIG{'theme-dir'} );
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
298 exit;
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
299 }
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
300
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
301 # Should we run something before we start?
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 if ( $CONFIG{'pre-build'} )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
304 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
305 $CONFIG{'verbose'} && print "Running command: $CONFIG{'pre-build'}\n";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
306
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
307 system($CONFIG{'pre-build'});
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
308 }
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
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
311 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
312 # 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
313 # we can use to create our pages.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
314 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
315 # 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
316 # 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
317 # keys such as:
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
318 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
319 # tags => [ 'test', 'testing' ]
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
320 # date => '1st july 2007'
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
321 # title => 'Some title'
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
322 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
323 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
324 my %data = createDataStructure();
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
325
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
326 #
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
327 # Find each unique tag used within our entries.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
328 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
329 my %all_tags;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
330 %all_tags = findAllTags() unless( $CONFIG{'no-tags'} );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
331
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
332 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
333 # Find each unique month + year we've used.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
334 #
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
335 my %all_dates;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
336 %all_dates = findAllMonths() unless( $CONFIG{'no-archive'} );
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
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
339 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
340 # 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
341 # sidebar.
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 my %CLOUD;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
344 $CLOUD{'tag'} = createTagCloud( %all_tags ) unless( $CONFIG{'no-tags'} );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
345 $CLOUD{'archive'} = createDateCloud( %all_dates ) unless( $CONFIG{'no-archive'} );;
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
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
348
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
349 #
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
350 # Create the output directories.
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
351 #
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
352 mkpath( $CONFIG{'output'}, 0, 0755 ) if ( ! -d $CONFIG{'output'} );
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
353 foreach my $tag ( keys %all_tags )
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
354 {
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
355 mkpath( "$CONFIG{'output'}/tags/$tag", 0, 0755 );
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
356 }
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
357 foreach my $date ( keys %all_dates )
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
358 {
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
359 next unless ( $date =~ /^([0-9]{4})-([0-9]{2})/ );
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
360 mkpath( "$CONFIG{'output'}/archive/$1/$2", 0, 0755 );
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
361 }
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
362
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
363
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 # Output each static page.
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 $CONFIG{'verbose'} && print "Creating static pages:\n";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
368 foreach my $file ( keys %data )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
369 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
370 outputStaticPage( $file );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
371 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
372
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 #
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
376 # 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
377 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
378 foreach my $tagName ( sort keys %all_tags )
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 "Creating tag page: $tagName\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 outputTagPage( $tagName );
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
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
385
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 #
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
388 # Now build the archive pages.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
389 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
390 foreach my $date ( keys( %all_dates ) )
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 $CONFIG{'verbose'} && print "Creating archive page: $date\n";
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 outputArchivePage( $date );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
395 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
396
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
397
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 #
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
400 # Finally out the most recent entries for the front-page.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
401 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
402 outputIndexPage();
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
403
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
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
406 #
12
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
407 # Copy any static files into place.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
408 #
12
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
409 copyStaticFiles();
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
410
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
411
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
412 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
413 # Post-build command?
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
414 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
415 if ( $CONFIG{'post-build'} )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
416 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
417 $CONFIG{'verbose'} && print "Running command: $CONFIG{'post-build'}\n";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
418
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
419 system($CONFIG{'post-build'});
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
420 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
421
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
422
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
423 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
424 # All done.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
425 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
426 exit;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
427
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
428
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
429
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
430
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
431
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
432
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
433
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
434 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
435
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
436 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
437
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
438 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
439
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
440 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
441
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
442 sub setupDefaultOptions
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
443 {
33
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
444 my %CONFIG;
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
445
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
446 #
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
447 # Text directory.
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
448 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
449 $CONFIG{'input'} = "./blog";
85
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
450 $CONFIG{'comments'} = '';
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
451
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
452 #
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
453 # Output directory.
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
454 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
455 $CONFIG{'output'} = "./output";
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
456
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
457 #
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
458 # Theme setup
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
459 #
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
460 $CONFIG{'theme-dir'} = "./themes/";
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
461 $CONFIG{'theme'} = "default";
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
462
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
463 #
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
464 # prefix for all links.
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
465 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
466 $CONFIG{'url-prefix'} = "";
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
467
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
468 #
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
469 # Default input format
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
470 #
16
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
471 $CONFIG{'format'} = 'html';
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
472
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
473 #
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
474 # Entries per-page for the index.
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
475 #
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
476 $CONFIG{'entry-count'} = 10;
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
477
46
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
478 #
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
479 # Don't overwrite files by default
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
480 #
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
481 $CONFIG{'force'} = 0;
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
482
33
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
483 return( %CONFIG );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
484 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
485
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
486
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
487
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
488
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
489 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
490
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
491 Parse the command line arguments this script was given.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
492
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
493 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
494
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
495 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
496
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
497 sub parseCommandLineArguments
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
498 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
499 my $HELP = 0;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
500 my $MANUAL = 0;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
501 my $VERSION = 0;
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 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
504 # Parse options.
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 GetOptions(
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
507 # Help options
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
508 "help", \$HELP,
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
509 "manual", \$MANUAL,
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
510 "verbose", \$CONFIG{'verbose'},
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
511 "version", \$VERSION,
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
512 "list-themes", \$CONFIG{'list-themes'},
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
513
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
514 # paths
85
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
515 "comments=s", \$CONFIG{'comments'},
59
943499ebeaef 2007-10-25 18:43:41 by steve
steve
parents: 57
diff changeset
516 "config=s", \$CONFIG{'config'},
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
517 "input=s", \$CONFIG{'input'},
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
518 "output=s", \$CONFIG{'output'},
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
519 "theme-dir=s", \$CONFIG{'theme-dir'},
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
520 "theme=s", \$CONFIG{'theme'},
36
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
521 "pattern=s", \$CONFIG{'pattern'},
1
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 # optional
46
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
524 "force", \$CONFIG{'force'},
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
525 "no-tags", \$CONFIG{'no-tags'},
33
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
526 "no-cache", \$CONFIG{'no-cache'},
75
c64a37a823d1 Document, and support, no-calendar.
Steve Kemp <steve@steve.org.uk>
parents: 67
diff changeset
527 "no-calendar", \$CONFIG{'no-calendar'},
105
7a7c3faf3171 Honour --no-comments
Steve Kemp <steve@steve.org.uk>
parents: 100
diff changeset
528 "no-comments", \$CONFIG{'no-comments'},
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
529 "no-archive", \$CONFIG{'no-archive'},
34
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
530 "lower-case", \$CONFIG{'lower-case'},
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
531
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
532 # input format.
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
533 "format=s", \$CONFIG{'format'},
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
534
27
25450021ba3e 2007-08-16 12:45:55 by steve
steve
parents: 23
diff changeset
535 # prefix
25450021ba3e 2007-08-16 12:45:55 by steve
steve
parents: 23
diff changeset
536 "url-prefix=s", \$CONFIG{'url_prefix'},
25450021ba3e 2007-08-16 12:45:55 by steve
steve
parents: 23
diff changeset
537
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
538 # commands
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
539 "pre-build=s", \$CONFIG{'pre-build'},
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
540 "post-build=s", \$CONFIG{'post-build'},
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 );
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 pod2usage(1) if $HELP;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
545 pod2usage(-verbose => 2 ) if $MANUAL;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
546
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
547 if ( $VERSION )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
548 {
23
59b123e21627 2007-08-15 18:23:35 by steve
steve
parents: 21
diff changeset
549 print( "chronicle release $RELEASE\n" );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
550 exit;
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
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
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
556 =begin doc
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 Create our global datastructure, by reading each of the blog
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
559 files and extracting:
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
560
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
561 1. The title of the entry.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
562
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
563 2. Any tags which might be present.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
564
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
565 3. The date upon which it was made.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
566
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
567 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
568
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
569 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
570
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
571 sub createDataStructure
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
572 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
573 my %results;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
574
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
575 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
576 # Did the user override the default pattern?
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
577 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
578 my $pattern = $CONFIG{'pattern'} || "*";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
579
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
580 foreach my $file ( sort( glob( $CONFIG{'input'} . "/" . $pattern ) ) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
581 {
7
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
582 #
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
583 # Ignore directories.
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
584 #
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
585 next if ( -d $file );
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
586
144
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
587 #
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
588 # Read the entry and store all the data away as a
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
589 # hash element keyed upon the (unique) filename.
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
590 #
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
591 $results{$file} = readBlogEntry( $file);
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
592 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
593
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
594 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
595 # Make sure we found some entries.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
596 #
144
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
597 if ( scalar(keys(%results))< 1 )
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
598 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
599 print <<EOF;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
600
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
601 There were no text files found in the input directory
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
602 $CONFIG{'input'} which matched the pattern '$pattern'.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
603
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
604 Aborting.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
605
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
606 EOF
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
607 exit;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
608 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
609
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
610 return %results;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
611 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
612
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
613
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
614
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
615 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
616
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
617 Find each distinct tag which has been used within blog entries,
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
618 and the number of times each one has been used.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
619
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
620 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
621
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
622 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
623
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
624 sub findAllTags
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
625 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
626 my %allTags;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
627
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
628 foreach my $f ( keys %data )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
629 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
630 my $h = $data{$f};
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
631 my $tags = $h->{'tags'} || undef;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
632 foreach my $t ( @$tags )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
633 {
144
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
634 if ( $t->{'tag'} )
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
635 {
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
636 $allTags{$t->{'tag'}}+=1;
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
637 }
1
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 }
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 return( %allTags );
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
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
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
646 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
647
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
648 Create a structure for a tag cloud.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
649
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
650 =end doc
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 =cut
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 sub createTagCloud
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
655 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
656 my( %unique ) = ( @_ );
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 my $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 foreach my $key ( sort keys( %unique ) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
661 {
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
662 # count.
27
25450021ba3e 2007-08-16 12:45:55 by steve
steve
parents: 23
diff changeset
663 my $count = $unique{$key};
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
664
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
665 # size for the HTML.
27
25450021ba3e 2007-08-16 12:45:55 by steve
steve
parents: 23
diff changeset
666 my $size = 10 + ( $count * 5 );
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
667 $size = 40 if ( $size >= 40 );
27
25450021ba3e 2007-08-16 12:45:55 by steve
steve
parents: 23
diff changeset
668
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
669 push( @$results,
27
25450021ba3e 2007-08-16 12:45:55 by steve
steve
parents: 23
diff changeset
670 { tag => $key,
25450021ba3e 2007-08-16 12:45:55 by steve
steve
parents: 23
diff changeset
671 count => $count,
34
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
672 size => $size } );
1
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 return $results;
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 }
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
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
679
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
680 =begin doc
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 Find each of the distinct Month + Year pairs for entries which
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
683 have been created.
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 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
686
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
687 =cut
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 sub findAllMonths
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 my %allDates;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
692 foreach my $f ( keys %data )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
693 {
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
694 my $h = $data{$f};
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
695 next if ( !$h );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
696
55
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
697 my $date = $h->{'date'};
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
698
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
699 #
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
700 # Not a date? Use the ctime of the file.
55
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
701 #
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
702 if ( !defined( $date ) || !length($date) )
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
703 {
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
704 #
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
705 # Test the file for creation time.
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
706 #
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
707 my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
708 $atime,$mtime,$ctime,$blksize,$blocks)
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
709 = stat($f);
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
710
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
711 $date = localtime( $ctime );
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
712 }
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
713
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
714 $date = time2str("%Y-%m", str2time($date));
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
715
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
716 $allDates{$date}+=1;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
717 }
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( %allDates );
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 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
725
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
726 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
727
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
728 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
729 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
730
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
731 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
732
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
733 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
734
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
735 sub createDateCloud
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
736 {
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
737 my( %entry_dates ) = ( @_ );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
738
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
739 my $results;
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
740 my $year;
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
741 my $months;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
742
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
743 foreach my $date ( sort keys %entry_dates )
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
744 {
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
745 next unless ( $date =~ /^([0-9]{4})-([0-9]{2})/ );
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
746
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
747 if ( $year and $1 ne $year )
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
748 {
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
749 push( @$results, { year => $year,
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
750 months => $months } );
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
751 undef $months;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
752 }
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
753 $year = $1;
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
754
84
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
755 push( @$months, { month => $2,
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
756 month_name => $names[$2-1],
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
757 count => $entry_dates{$date} } );
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
758
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
759 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
760
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
761 push( @$results, { year => $year,
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
762 months => $months } );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
763
78
cbac8af73d88 Updated sort ordering.
Steve Kemp <steve@steve.org.uk>
parents: 77
diff changeset
764 #
cbac8af73d88 Updated sort ordering.
Steve Kemp <steve@steve.org.uk>
parents: 77
diff changeset
765 # Make sure this is sorted by reverse chronilogical order.
cbac8af73d88 Updated sort ordering.
Steve Kemp <steve@steve.org.uk>
parents: 77
diff changeset
766 #
cbac8af73d88 Updated sort ordering.
Steve Kemp <steve@steve.org.uk>
parents: 77
diff changeset
767 my @sorted = sort { $b->{'year'} <=> $a->{'year'} } @$results;
cbac8af73d88 Updated sort ordering.
Steve Kemp <steve@steve.org.uk>
parents: 77
diff changeset
768 return \@sorted;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
769 }
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
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 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
774
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
775 Sort by date.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
776
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
777 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
778
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
779 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
780
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
781 sub bywhen
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
782 {
37
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
783 #
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
784 # Parse and return the date
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
785 #
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
786 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
787 my ($ss2,$mm2,$hh2,$day2,$month2,$year2,$zone2) = strptime($b->{'date'});
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
788
37
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
789 #
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
790 # Abort if we didn't work.
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
791 #
66
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
792 die "Couldn't find first year: $a->{'date'}" unless defined($year1);
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
793 die "Couldn't find second year: $b->{'date'}" unless defined($year2);
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
794
37
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
795 #
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
796 # Convert to compare
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
797 #
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
798 my $c = timelocal(0,0,0,$day1,$month1,$year1 + 1900);
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
799 my $d = timelocal(0,0,0,$day2,$month2,$year2 + 1900);
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
800
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
801 return $d <=> $c;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
802 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
803
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
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
806
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
807 =begin doc
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 Output the index page + index RSS feed.
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 =end doc
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 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
814
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
815 sub outputIndexPage
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
816 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
817
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
818 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
819 # Holder for the blog entries.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
820 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
821 my $entries;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
822
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
823 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
824 # 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
825 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
826 my $tmp;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
827 foreach my $file ( keys ( %data ) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
828 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
829 my $blog = readBlogEntry( $file );
80
5379f7e3f7de Updated so that we have pubDate attributes for our RDF
Steve Kemp <steve@steve.org.uk>
parents: 78
diff changeset
830
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
831 push( @$tmp, $blog ) if (keys( %$blog ) );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
832 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
833 my @tmp2 = sort bywhen @$tmp;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
834
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
835 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
836 # The number of entries to display upon the index.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
837 #
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
838 my $max = $CONFIG{'entry-count'};
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
839 foreach my $f ( @tmp2 )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
840 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
841 push( @$entries, $f ) if ( $max > 0 );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
842 $max -= 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 # Open the index template.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
847 #
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
848 my $template = loadTemplate( "index.template",
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
849 die_on_bad_params => 0 );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
850
66
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
851
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
852 #
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
853 # create the calendar if we can.
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
854 #
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
855 my $calendar = createCalendar();
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
856 if ( defined( $calendar ) )
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
857 {
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
858 my $text = $calendar->as_HTML();
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
859
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
860 $text =~ s/<\/?b>//g;
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
861 $text =~ s/<\/?p>//g;
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
862
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
863 $template->param( calendar => 1,
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
864 calendar_month => $text );
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
865 }
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
866
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
867
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
868 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
869 # The entries.
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
870 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
871 $template->param( entries => $entries )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
872 if ( $entries );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
873
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
874 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
875 # The clouds
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
876 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
877 $template->param( tagcloud => $CLOUD{'tag'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
878 if ( $CLOUD{'tag'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
879 $template->param( datecloud => $CLOUD{'archive'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
880 if ( $CLOUD{'archive'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
881
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
882 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
883 # Blog title and subtitle, if present.
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
884 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
885 $template->param( blog_title => $CONFIG{'blog_title'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
886 if ( $CONFIG{'blog_title'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
887 $template->param( blog_subtitle => $CONFIG{'blog_subtitle'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
888 if ( $CONFIG{'blog_subtitle'} );
23
59b123e21627 2007-08-15 18:23:35 by steve
steve
parents: 21
diff changeset
889 $template->param( release => $RELEASE );
59b123e21627 2007-08-15 18:23:35 by steve
steve
parents: 21
diff changeset
890
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
891
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
892 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
893 # Page to use
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
894 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
895 my $index = $CONFIG{'filename'} || "index.html";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
896
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
897 outputTemplate( $template, $index );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
898
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
899 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
900 # Output the RSS feed
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
901 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
902 $template = loadTemplate( "index.xml.template",
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
903 die_on_bad_params => 0 );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
904 $template->param( entries => $entries ) if ( $entries );
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
905 outputTemplate( $template, "index.rss" );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
906 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
907
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
908
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
909
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
910 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
911
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
912 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
913 tag '$foo'.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
914
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
915 =end doc
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 =cut
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 sub outputTagPage
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
920 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
921 my ( $tagName ) = ( @_ );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
922
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
923 my $dir = "tags/$tagName";
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
924
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
925 my %allTags;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
926 my %tagEntries;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
927 foreach my $f ( keys %data )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
928 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
929 my $h = $data{$f};
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
930 my $tags = $h->{'tags'} || undef;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
931 foreach my $t ( @$tags )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
932 {
144
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
933 my $name = $t->{'tag'};
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
934 $allTags{$name}+=1;
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
935 my $a = $tagEntries{$name};
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
936 push @$a, $f ;
144
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
937 $tagEntries{$name}= $a;
1
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 }
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 my $matching = $tagEntries{$tagName};
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 my $entries;
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 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
946 # Now read the matching entries.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
947 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
948 foreach my $f ( sort @$matching )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
949 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
950 my $blog = readBlogEntry( $f );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
951 if (keys( %$blog ) )
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 $CONFIG{'verbose'} && print "\tAdded: $f\n";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
954 push( @$entries, $blog );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
955 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
956 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
957
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
958 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
959 # Now write the output as a HTML page.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
960 #
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
961 my $template = loadTemplate( "tags.template",
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
962 die_on_bad_params => 0 );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
963
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
964 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
965 # The entries.
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
966 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
967 $template->param( entries => $entries ) if ( $entries );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
968 $template->param( tagname => $tagName );
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
969
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
970 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
971 # The clouds
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
972 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
973 $template->param( tagcloud => $CLOUD{'tag'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
974 if ( $CLOUD{'tag'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
975 $template->param( datecloud => $CLOUD{'archive'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
976 if ( $CLOUD{'archive'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
977
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
978 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
979 # Blog title and subtitle, if present.
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
980 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
981 $template->param( blog_title => $CONFIG{'blog_title'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
982 if ( $CONFIG{'blog_title'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
983 $template->param( blog_subtitle => $CONFIG{'blog_subtitle'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
984 if ( $CONFIG{'blog_subtitle'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
985
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
986
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
987 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
988 # Page to use
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
989 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
990 my $index = $CONFIG{'filename'} || "index.html";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
991
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
992 outputTemplate( $template, "$dir/$index" );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
993
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
994 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
995 # Now output the .xml file
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
996 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
997 $template = loadTemplate( "tags.xml.template", die_on_bad_params => 0 );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
998 $template->param( entries => $entries ) if ( $entries );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
999 $template->param( tagname => $tagName ) if ( $tagName );
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1000 outputTemplate( $template, "$dir/$tagName.rss" );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1001 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1002
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1003
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1004
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1005 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1006
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1007 Output the archive page for the given Month + Year.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1008
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1009 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
1010 more often than it needs to.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1011
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1012 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1013
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1014 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1015
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1016 sub outputArchivePage
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 my( $date ) = ( @_ );
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 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1021 # Should we abort?
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1022 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1023 if ( $CONFIG{'no-archive'} )
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 $CONFIG{'verbose'} && print "Ignoring archive page, as instructed.\n";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1026 return;
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
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 my $year = '';
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1031 my $month = '';
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1032 if ( $date =~ /^([0-9]{4})-([0-9]{2})/ )
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1033 {
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1034 $year = $1;
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1035 $month = $2;
1
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
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 # Make the directory
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1040 #
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1041 my $dir = "archive/$year/$month";
1
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 my $entries;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1044
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1045
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1046 my %dateEntries;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1047 foreach my $f ( keys %data )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1048 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1049 my $h = $data{$f};
55
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1050 my $date = $h->{'date'};
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1051
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1052 #
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1053 # Not a date? Use the file.
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1054 #
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1055 if ( !defined( $date ) || !length($date) )
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1056 {
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1057 #
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1058 # Test the file for creation time.
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1059 #
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1060 my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1061 $atime,$mtime,$ctime,$blksize,$blocks)
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1062 = stat($f);
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1063
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1064 $date = localtime( $ctime );
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1065 }
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1066
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1067 $date = time2str("%Y-%m", str2time($date));
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1068
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1069 push @{$dateEntries{$date}}, $f ;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1070 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1071
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1072
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1073 my $matching = $dateEntries{$date};
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1074 foreach my $f ( reverse @$matching )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1075 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1076 $CONFIG{'verbose'} && print "\tAdded: $f\n";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1077
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1078 my $blog = readBlogEntry( $f );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1079 if (keys( %$blog ) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1080 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1081 push( @$entries, $blog );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1082 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1083 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1084
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1085 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1086 # Now write the output as a HTML page.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1087 #
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1088 my $template = loadTemplate( "month.template",
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1089 die_on_bad_params => 0 );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1090
48
29464ede63dd 2007-10-10 21:30:50 by steve
steve
parents: 46
diff changeset
1091
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1092 #
48
29464ede63dd 2007-10-10 21:30:50 by steve
steve
parents: 46
diff changeset
1093 # The entries
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1094 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1095 $template->param( entries => $entries ) if ( $entries );
48
29464ede63dd 2007-10-10 21:30:50 by steve
steve
parents: 46
diff changeset
1096
29464ede63dd 2007-10-10 21:30:50 by steve
steve
parents: 46
diff changeset
1097 #
29464ede63dd 2007-10-10 21:30:50 by steve
steve
parents: 46
diff changeset
1098 # Output the month + year.
29464ede63dd 2007-10-10 21:30:50 by steve
steve
parents: 46
diff changeset
1099 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1100 $template->param( year => $year, month => $month );
48
29464ede63dd 2007-10-10 21:30:50 by steve
steve
parents: 46
diff changeset
1101 $template->param( month_name => $names[$month - 1 ] );
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1102
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1103 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1104 # The clouds
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1105 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1106 $template->param( tagcloud => $CLOUD{'tag'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1107 if ( $CLOUD{'tag'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1108 $template->param( datecloud => $CLOUD{'archive'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1109 if ( $CLOUD{'archive'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1110
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1111 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1112 # Blog title and subtitle, if present.
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1113 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1114 $template->param( blog_title => $CONFIG{'blog_title'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1115 if ( $CONFIG{'blog_title'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1116 $template->param( blog_subtitle => $CONFIG{'blog_subtitle'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1117 if ( $CONFIG{'blog_subtitle'} );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1118
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1119 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1120 # Page to use
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1121 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1122 my $index = $CONFIG{'filename'} || "index.html";
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1123 outputTemplate( $template, "$dir/$index" );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1124
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1125 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1126 # Now the RSS page.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1127 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1128 $template = loadTemplate( "month.xml.template", die_on_bad_params => 0 );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1129 $template->param( entries => $entries ) if ( $entries );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1130 $template->param( month => $month, year => $year );
48
29464ede63dd 2007-10-10 21:30:50 by steve
steve
parents: 46
diff changeset
1131 $template->param( month_name => $names[$month - 1 ] );
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1132 outputTemplate( $template, "$dir/$month.rss" );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1133 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1134
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1135
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1136
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1137
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1138 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1139
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1140 Output static page.
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 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1143
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1144 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1145
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1146 sub outputStaticPage
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 my ( $filename ) = ( @_ );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1149
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 # Load the template
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1152 #
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1153 my $template = loadTemplate( "entry.template",
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1154 die_on_bad_params => 0 );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1155
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 # Just the name of the file.
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 my $basename = $filename;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1160 if ( $basename =~ /(.*)\/(.*)/ )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1161 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1162 $basename=$2;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1163 }
57
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1164 if ( $basename =~ /^(.*)\.(.*)$/ )
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1165 {
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1166 $basename = $1;
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1167 }
34
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1168
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1169 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1170 # Read the entry
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1171 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1172 my $static = readBlogEntry( $filename );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1173
34
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1174 #
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1175 # Get the pieces of information.
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1176 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1177 my $title = $static->{'title'} || $basename;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1178 my $tags = $static->{'tags'};
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1179 my $body = $static->{'body'};
55
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1180 my $date = $static->{'date'};
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1181
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1182 if ( !defined($date) )
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1183 {
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1184 my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1185 $atime,$mtime,$ctime,$blksize,$blocks)
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1186 = stat($filename);
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1187
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1188 $date = localtime( $ctime );
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1189 }
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1190
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1191 $CONFIG{'verbose'} && print "\t$filename\n";
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 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1194 # Convert to suitable filename.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1195 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1196 my $file = fileToTitle($title);
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1197
85
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1198
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1199 #
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1200 # Get comments, if present.
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1201 #
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1202 if( !$CONFIG{'no-comments'} )
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1203 {
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1204 my $comments = getComments( $CONFIG{'comments'}, $file );
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1205
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1206 if ( defined($comments) )
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1207 {
132
7a05117f1bc3 Show plural comments correctly.
Steve Kemp <steve@steve.org.uk>
parents: 128
diff changeset
1208 my $count = scalar( @$comments );
7a05117f1bc3 Show plural comments correctly.
Steve Kemp <steve@steve.org.uk>
parents: 128
diff changeset
1209 my $plural = 1;
7a05117f1bc3 Show plural comments correctly.
Steve Kemp <steve@steve.org.uk>
parents: 128
diff changeset
1210 $plural = 0 if ( $count == 1 );
7a05117f1bc3 Show plural comments correctly.
Steve Kemp <steve@steve.org.uk>
parents: 128
diff changeset
1211
7a05117f1bc3 Show plural comments correctly.
Steve Kemp <steve@steve.org.uk>
parents: 128
diff changeset
1212 $template->param( comments => $comments,
7a05117f1bc3 Show plural comments correctly.
Steve Kemp <steve@steve.org.uk>
parents: 128
diff changeset
1213 comment_count => $count,
7a05117f1bc3 Show plural comments correctly.
Steve Kemp <steve@steve.org.uk>
parents: 128
diff changeset
1214 comment_plural => $plural );
85
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1215
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1216 $CONFIG{'verbose'} && print "$file [$filename] has $count comments\n";
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1217 }
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1218
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1219 $template->param( comments_enabled => 1 );
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1220 }
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1221
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1222
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1223 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1224 # The entry.
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1225 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1226 $template->param( title => $title );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1227 $template->param( tags => $tags ) if ( $tags );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1228 $template->param( date => $date ) if ( $date );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1229 $template->param( body => $body );
92
44401f2b885b Updated again.
Steve Kemp <steve@steve.org.uk>
parents: 85
diff changeset
1230 $template->param( link => $static->{'link'} );
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1231
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1232 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1233 # Our clouds
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1234 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1235 $template->param( tagcloud => $CLOUD{'tag'} ) if ( $CLOUD{'tag'} );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1236 $template->param( datecloud => $CLOUD{'archive'} ) if ( $CLOUD{'archive'} );
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1237
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 # Blog title and subtitle, if present.
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1240 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1241 $template->param( blog_title => $CONFIG{'blog_title'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1242 if ( $CONFIG{'blog_title'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1243 $template->param( blog_subtitle => $CONFIG{'blog_subtitle'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1244 if ( $CONFIG{'blog_subtitle'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1245
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1246 outputTemplate( $template, $file );
1
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
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 =begin doc
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 Return a hash of interesting data from our blog file.
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 =end doc
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 =cut
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 sub readBlogEntry
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 ( $filename ) = ( @_);
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1262
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1263 my %entry;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1264
33
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 # Do we have the memcache module available?
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1267 #
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1268 my $cache = undef;
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1269 my $test = "use Cache::Memcached;";
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1270 eval( $test );
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1271 if ( ( ! $@ ) && ( ! $CONFIG{'no-cache'} ) )
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1272 {
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1273 # create the cache object
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1274 $cache = new Cache::Memcached {'servers' => ["localhost:11211"] };
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1275
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1276 # fetch from the cache if it is present.
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1277 my $cached = $cache->get( "file_$filename" );
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1278 if ( defined( $cached ) )
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1279 {
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1280 $CONFIG{'verbose'} && print "memcache-get: $filename\n";
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1281 return( \%$cached )
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 else
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 $CONFIG{'verbose'} && print "memcache-fail: $filename\n";
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1286 }
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1287 }
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1288
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1289
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
1290 my $title = ""; # entry title.
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
1291 my $tags = ""; # entry tags.
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
1292 my $body = ""; # entry body.
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
1293 my $date = ""; # entry date
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 }
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1327 else
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
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 # Just a piece of body text.
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1331 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1332 $body .= $line;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1333 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1334 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1335 close( ENTRY );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1336
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1337 #
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1338 # Determine the input format to use.
16
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1339 #
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1340 my $format = lc($CONFIG{'format'});
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1341
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1342 #
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1343 # Now process accordingly.
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1344 #
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1345 if ( $format eq 'html' )
16
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1346 {
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1347 # nop
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1348 }
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1349 elsif( $format eq 'markdown' )
16
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1350 {
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1351 $body = markdown2HTML( $body );
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1352 }
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1353 elsif( $format eq 'textile' )
16
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1354 {
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1355 $body = textile2HTML( $body );
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1356 }
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1357 else
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1358 {
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1359 print "Unkown blog entry format ($CONFIG{'format'}).\n";
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1360 print "Treating as HTML.\n";
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
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 #
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1365 # If we have tags then we should use them.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1366 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1367 my $entryTags;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1368
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1369 foreach my $tag ( split( /,/, $tags ) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1370 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1371 # strip leading and trailing space.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1372 $tag =~ s/^\s+//;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1373 $tag =~ s/\s+$//;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1374
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1375 # skip empty tags.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1376 next if ( !length($tag) );
62
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1377
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1378 # tags are lowercase.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1379 $tag = lc($tag);
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1380 push ( @$entryTags, { tag => $tag } );
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
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1383 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1384 # If the date isn't set then use todays.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1385 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1386 if ( ! defined($date) ||( !length( $date ) ) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1387 {
84
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1388 my @lt = localtime(time);
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1389 $date = strftime( "%d %B %Y", @lt);
1
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
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1392 #
84
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1393 # Make an entry date for the XML feed, if we have a date.
80
5379f7e3f7de Updated so that we have pubDate attributes for our RDF
Steve Kemp <steve@steve.org.uk>
parents: 78
diff changeset
1394 #
84
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1395 my $time = str2time($date);
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1396 if ( $time )
80
5379f7e3f7de Updated so that we have pubDate attributes for our RDF
Steve Kemp <steve@steve.org.uk>
parents: 78
diff changeset
1397 {
84
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1398 #
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1399 # Get the details of the file.
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1400 #
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1401 my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1402 $atime,$mtime,$ctime,$blksize,$blocks)
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1403 = stat($filename);
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1404
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1405 #
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1406 # Get the modification hours.
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1407 #
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1408 my ($sec,$min,$hour) = localtime( $mtime );
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1409
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1410 #
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1411 # Pad to two digits for each of the hours, minutes, and seconds.
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1412 #
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1413 my $hms = sprintf("%02d:%02d:%02d", $hour, $min, $sec );
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1414
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1415 #
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1416 # Store the published date & time away. Collapsing multiple
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1417 # spaces
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1418 #
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1419 $entry{'pubdate'} = time2str("%a, %e %b %Y $hms GMT", $time );
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1420 $entry{'pubdate'} =~ s/ +/ /g;
80
5379f7e3f7de Updated so that we have pubDate attributes for our RDF
Steve Kemp <steve@steve.org.uk>
parents: 78
diff changeset
1421 }
84
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1422 else
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1423 {
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1424 print "Failed to parse date: '$date' to generate pubDate of entry.\n";
c7f71166bc90 Simplified the handling of dates & times a little via Date::Format.
Steve Kemp <steve@steve.org.uk>
parents: 83
diff changeset
1425 }
80
5379f7e3f7de Updated so that we have pubDate attributes for our RDF
Steve Kemp <steve@steve.org.uk>
parents: 78
diff changeset
1426
5379f7e3f7de Updated so that we have pubDate attributes for our RDF
Steve Kemp <steve@steve.org.uk>
parents: 78
diff changeset
1427 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1428 # Store the entry.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1429 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1430 $entry{'title'} = $title;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1431 $entry{'body'} = $body if ( $body );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1432 $entry{'date'} = $date;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1433 $entry{'tags'} = $entryTags if ( $entryTags );
33
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1434
85
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1435
33
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1436 #
57
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1437 # No title?
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 if ( !defined($entry{'title'}) ||
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1440 !length($entry{'title'}) )
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1441 {
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1442 my $basename = $filename;
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1443 if ( $basename =~ /(.*)\/(.*)/ )
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1444 {
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1445 $basename=$2;
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1446 }
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1447 if ( $basename =~ /^(.*)\.(.*)$/ )
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1448 {
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1449 $basename = $1;
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1450 }
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1451
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1452 $entry{'title'} = $basename;
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1453 }
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1454
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1455 #
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1456 # Get the link - after ensuring we have a title.
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1457 #
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1458 my $link = fileToTitle( $entry{'title'} );
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1459 $entry{'link'} = $link;
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1460
85
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1461 #
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1462 # Count comments.
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1463 #
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1464 $entry{'comment_count' } = countComments( $CONFIG{'comments'}, $entry{'link'} );
132
7a05117f1bc3 Show plural comments correctly.
Steve Kemp <steve@steve.org.uk>
parents: 128
diff changeset
1465 if ( defined $entry{'comment_count'} &&
7a05117f1bc3 Show plural comments correctly.
Steve Kemp <steve@steve.org.uk>
parents: 128
diff changeset
1466 $entry{'comment_count'} != 1 )
7a05117f1bc3 Show plural comments correctly.
Steve Kemp <steve@steve.org.uk>
parents: 128
diff changeset
1467 {
7a05117f1bc3 Show plural comments correctly.
Steve Kemp <steve@steve.org.uk>
parents: 128
diff changeset
1468 $entry{'comment_plural'} = 1;
7a05117f1bc3 Show plural comments correctly.
Steve Kemp <steve@steve.org.uk>
parents: 128
diff changeset
1469 }
57
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1470
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1471 #
33
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1472 # 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
1473 #
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1474 if ( defined( $cache ) )
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1475 {
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1476 $CONFIG{'verbose'} && print "memcache-set: $filename\n";
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1477 $cache->set( "file_$filename", \%entry );
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1478 }
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1479 return \%entry;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1480 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1481
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 =begin doc
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 Create a filename for an URL which does not contain unsafe
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1487 characters.
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 =end doc
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 =cut
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 sub fileToTitle
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 my( $file ) = ( @_ );
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 if ( $file =~ /(.*)\.(.*)/ )
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 $file = $1;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1500 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1501 $file =~ s/ /_/g;
78
cbac8af73d88 Updated sort ordering.
Steve Kemp <steve@steve.org.uk>
parents: 77
diff changeset
1502 $file =~ s/'/_/g;
cbac8af73d88 Updated sort ordering.
Steve Kemp <steve@steve.org.uk>
parents: 77
diff changeset
1503 $file =~ s/!/_/g;
cbac8af73d88 Updated sort ordering.
Steve Kemp <steve@steve.org.uk>
parents: 77
diff changeset
1504 $file =~ s/\?/_/g;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1505 $file =~ s/\///g;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1506 $file =~ s/\\//g;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1507
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
1508 my $suffix = $CONFIG{'suffix'} || ".html";
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
1509 $file .= $suffix;
34
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1510
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1511 #
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1512 # Lower case?
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1513 #
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1514 $file = lc($file) if ( $CONFIG{'lower-case'} );
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1515
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1516 return( $file );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1517
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1518 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1519
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1520
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 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1523
144
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
1524 Look for comments, for the given entry. Return any found in a format
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
1525 suitable for the insertion into the output templates.
85
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1526
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1527 =end doc
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1528
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1529 =cut
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1530
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1531 sub getComments
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1532 {
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1533 my( $dir, $title ) = (@_);
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1534
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1535 my $results;
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1536
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1537 if ( $title =~ /^(.*)\.([^.]+)$/ )
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1538 {
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1539 $title = $1;
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1540 }
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1541
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1542 foreach my $file ( sort( glob( $dir . "/" . $title . "*" ) ) )
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1543 {
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1544 my $date = "";
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1545 my $name = "";
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1546 my $body = "";
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1547 my $mail = "";
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1548
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1549 if ( $file =~ /^(.*)\.([^.]+)$/ )
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1550 {
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1551 $date = $2;
100
19148729b491 Updated the formatting of date++time on comments
Steve Kemp <steve@steve.org.uk>
parents: 97
diff changeset
1552
19148729b491 Updated the formatting of date++time on comments
Steve Kemp <steve@steve.org.uk>
parents: 97
diff changeset
1553 if ( $date =~ /(.*)-([0-9:]+)/ )
19148729b491 Updated the formatting of date++time on comments
Steve Kemp <steve@steve.org.uk>
parents: 97
diff changeset
1554 {
19148729b491 Updated the formatting of date++time on comments
Steve Kemp <steve@steve.org.uk>
parents: 97
diff changeset
1555 my $d = $1;
19148729b491 Updated the formatting of date++time on comments
Steve Kemp <steve@steve.org.uk>
parents: 97
diff changeset
1556 my $t = $2;
19148729b491 Updated the formatting of date++time on comments
Steve Kemp <steve@steve.org.uk>
parents: 97
diff changeset
1557
19148729b491 Updated the formatting of date++time on comments
Steve Kemp <steve@steve.org.uk>
parents: 97
diff changeset
1558 $d =~ s/-/ /g;
19148729b491 Updated the formatting of date++time on comments
Steve Kemp <steve@steve.org.uk>
parents: 97
diff changeset
1559 $date = "Submitted at $t on $d";
19148729b491 Updated the formatting of date++time on comments
Steve Kemp <steve@steve.org.uk>
parents: 97
diff changeset
1560 }
85
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1561 }
100
19148729b491 Updated the formatting of date++time on comments
Steve Kemp <steve@steve.org.uk>
parents: 97
diff changeset
1562
85
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1563 open( COMMENT, "<", $file )
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1564 or next;
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1565
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1566 foreach my $line ( <COMMENT> )
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1567 {
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1568 next if ( !defined( $line ) );
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1569
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1570 chomp( $line );
97
69570137cb66 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 96
diff changeset
1571
69570137cb66 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 96
diff changeset
1572 next if ($line =~ /^IP-Address:/ );
69570137cb66 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 96
diff changeset
1573 next if ($line =~ /^User-Agent:/ );
69570137cb66 Updated.
Steve Kemp <steve@steve.org.uk>
parents: 96
diff changeset
1574
85
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1575 if ( !length( $name ) && $line =~ /^Name: (.*)/i )
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1576 {
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1577 $name = $1;
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1578 }
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1579 elsif ( !length( $mail ) && $line =~ /^Mail: (.*)/i )
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1580 {
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1581 $mail = $1;
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1582 }
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1583 else
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1584 {
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1585 $body .= $line . "\n";
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1586 }
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1587 }
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1588 close( COMMENT );
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1589
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1590 if ( length($name) &&
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1591 length($mail) &&
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1592 length($body) )
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1593 {
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1594 push( @$results,
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1595 { name => $name,
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1596 mail => $mail,
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1597 body => $body,
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1598 date => $date } );
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1599
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1600 }
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1601 }
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1602 return( $results );
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1603 }
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1604
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1605
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1606
144
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
1607 =begin doc
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
1608
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
1609 Count the number of comments associated with a given post.
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
1610
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
1611 =end doc
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
1612
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
1613 =cut
571c8d4310f0 Removed redundent reading of entries, to speed up and simplify the code.
Steve Kemp <steve@steve.org.uk>
parents: 143
diff changeset
1614
85
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1615 sub countComments
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1616 {
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1617 my( $dir, $title ) = (@_);
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1618
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1619 return( 0 ) if ( $CONFIG{'no-comments'} );
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1620
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1621 if ( $title =~ /^(.*)\.([^.]+)$/ )
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1622 {
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1623 $title = $1;
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1624 }
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1625
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1626 my $count = 0;
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1627 foreach my $f ( sort glob( $dir . "/" . $title . "*" ) )
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1628 {
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1629 $count += 1;
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1630 }
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1631
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1632 return( $count );
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1633 }
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1634
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1635
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1636
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1637 =begin doc
f3b73f970dd2 Added comments.
Steve Kemp <steve@steve.org.uk>
parents: 84
diff changeset
1638
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1639 Load a template file.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1640
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1641 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1642
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1643 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1644
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1645 sub loadTemplate
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1646 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1647 my( $file, %params ) = (@_);
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1648
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1649 #
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1650 # Get the directory.
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1651 #
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1652 my $dir = $CONFIG{'theme-dir'};
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1653
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1654 #
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1655 # XML files go in theme-dir/xml/
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1656 #
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1657 if ( $file =~ /\.xml\./i )
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1658 {
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1659 $dir .= "/xml/";
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1660 }
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1661 else
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1662 {
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1663 $dir .= "/" . $CONFIG{'theme'} . "/";
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1664 }
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
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1667 # Make sure the file exists.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1668 #
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1669 if ( ! -e $dir . $file )
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1670 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1671 print <<EOF;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1672
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1673 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
1674
62
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1675 Theme : $CONFIG{'theme'}
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1676 Theme Directory: $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 We expected to find $dir$file;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1679
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1680 Aborting.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1681 EOF
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1682 exit;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1683 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1684
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1685 my $t = HTML::Template->new( filename => $file,
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1686 path => $dir,
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1687 loop_context_vars => 1,
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1688 global_vars => 1,
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1689 %params );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1690
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1691 return( $t );
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1692 }
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1693
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1694
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1695
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1696 =begin doc
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1697
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1698 Set URL for top directory and output a template.
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1699
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1700 =end doc
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1701
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1702 =cut
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1703
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1704 sub outputTemplate
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1705 {
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1706 my( $template, $path ) = ( @_ );
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1707
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1708 #
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1709 # Select relative/absolute URL prefix.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1710 #
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1711 my $top;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1712 if ( $CONFIG{'url_prefix'} )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1713 {
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1714 $top = $CONFIG{'url_prefix'};
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1715 }
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1716 else
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1717 {
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1718 $top = $path;
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1719 $top =~ s'[^/]+/'../'g;
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1720 $top =~ s'[^/]*$'';
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1721 }
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1722 $template->param( top => $top );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1723
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1724 open( OUTPUT, ">", "$CONFIG{'output'}/$path" );
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1725 print OUTPUT $template->output();
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1726 close( OUTPUT );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1727 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1728
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1729
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1730
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1731 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1732
7
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
1733 Read the specified configuration file if it exists.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1734
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1735 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1736
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1737 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1738
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1739 sub readConfigurationFile
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1740 {
7
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
1741 my( $file ) = ( @_ );
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
1742
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
1743 #
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
1744 # If it doesn't exist ignore it.
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
1745 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1746 return if ( ! -e $file );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1747
7
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
1748
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1749 my $line = "";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1750
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1751 open( FILE, "<", $file ) or die "Cannot read file '$file' - $!";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1752 while (defined($line = <FILE>) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1753 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1754 chomp $line;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1755 if ($line =~ s/\\$//)
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1756 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1757 $line .= <FILE>;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1758 redo unless eof(FILE);
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1759 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1760
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1761 # Skip lines beginning with comments
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1762 next if ( $line =~ /^([ \t]*)\#/ );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1763
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1764 # Skip blank lines
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1765 next if ( length( $line ) < 1 );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1766
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1767 # Strip trailing comments.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1768 if ( $line =~ /(.*)\#(.*)/ )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1769 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1770 $line = $1;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1771 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1772
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1773 # Find variable settings
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1774 if ( $line =~ /([^=]+)=([^\n]+)/ )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1775 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1776 my $key = $1;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1777 my $val = $2;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1778
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1779 # Strip leading and trailing whitespace.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1780 $key =~ s/^\s+//;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1781 $key =~ s/\s+$//;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1782 $val =~ s/^\s+//;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1783 $val =~ s/\s+$//;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1784
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1785 # command expansion?
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1786 if ( $val =~ /(.*)`([^`]+)`(.*)/ )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1787 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1788 # store
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1789 my $pre = $1;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1790 my $cmd = $2;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1791 my $post = $3;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1792
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1793 # get output
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1794 my $output = `$cmd`;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1795 chomp( $output );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1796
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1797 # build up replacement.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1798 $val = $pre . $output . $post;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1799 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1800
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1801 # Store value.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1802 $CONFIG{ $key } = $val;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1803 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1804 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1805
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1806 close( FILE );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1807 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1808
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1809
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1810
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1811 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1812
143
55c15e6aebd6 Minore cleanups.
Steve Kemp <steve@steve.org.uk>
parents: 132
diff changeset
1813 Sanity check our arguments, and setup to make sure there is nothing
55c15e6aebd6 Minore cleanups.
Steve Kemp <steve@steve.org.uk>
parents: 132
diff changeset
1814 obviously broken.
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1815
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1816 =end doc
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1817
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1818 =cut
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1819
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1820 sub sanityCheckArguments
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1821 {
143
55c15e6aebd6 Minore cleanups.
Steve Kemp <steve@steve.org.uk>
parents: 132
diff changeset
1822 #
55c15e6aebd6 Minore cleanups.
Steve Kemp <steve@steve.org.uk>
parents: 132
diff changeset
1823 # Make sure we have an input directory.
55c15e6aebd6 Minore cleanups.
Steve Kemp <steve@steve.org.uk>
parents: 132
diff changeset
1824 #
55c15e6aebd6 Minore cleanups.
Steve Kemp <steve@steve.org.uk>
parents: 132
diff changeset
1825 if ( ! -d $CONFIG{'input'} )
55c15e6aebd6 Minore cleanups.
Steve Kemp <steve@steve.org.uk>
parents: 132
diff changeset
1826 {
55c15e6aebd6 Minore cleanups.
Steve Kemp <steve@steve.org.uk>
parents: 132
diff changeset
1827 print <<EOF;
55c15e6aebd6 Minore cleanups.
Steve Kemp <steve@steve.org.uk>
parents: 132
diff changeset
1828
55c15e6aebd6 Minore cleanups.
Steve Kemp <steve@steve.org.uk>
parents: 132
diff changeset
1829 The blog input directory $CONFIG{'input'} does not exist.
55c15e6aebd6 Minore cleanups.
Steve Kemp <steve@steve.org.uk>
parents: 132
diff changeset
1830
55c15e6aebd6 Minore cleanups.
Steve Kemp <steve@steve.org.uk>
parents: 132
diff changeset
1831 Aborting.
55c15e6aebd6 Minore cleanups.
Steve Kemp <steve@steve.org.uk>
parents: 132
diff changeset
1832 EOF
55c15e6aebd6 Minore cleanups.
Steve Kemp <steve@steve.org.uk>
parents: 132
diff changeset
1833
55c15e6aebd6 Minore cleanups.
Steve Kemp <steve@steve.org.uk>
parents: 132
diff changeset
1834 exit;
55c15e6aebd6 Minore cleanups.
Steve Kemp <steve@steve.org.uk>
parents: 132
diff changeset
1835 }
55c15e6aebd6 Minore cleanups.
Steve Kemp <steve@steve.org.uk>
parents: 132
diff changeset
1836
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1837 if ( !$CONFIG{'theme-dir'} )
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1838 {
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1839 print <<EOF;
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1840
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1841 Error - You don't have a theme directory setup.
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1842
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1843 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
1844 file:
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1845
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1846 theme-dir = /path/to/use/
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1847 EOF
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1848
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1849 exit;
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1850 }
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1851
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1852 if ( ! -d $CONFIG{'theme-dir'} )
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1853 {
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1854 print "The theme directory you specified doesn't exist:\n";
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1855 print "\t" . $CONFIG{'theme-dir'} . "\n";
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1856 exit;
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1857 }
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1858
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1859 if ( !$CONFIG{'theme'} )
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1860 {
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1861 print <<EOF;
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1862
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1863 You've not specified a theme.
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 Please specify --theme=xx
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 Or add this to your configuration file:
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 theme = xx
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
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1872 [You may list themes with --list-themes]
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1873
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1874 EOF
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1875
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1876 exit;
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1877 }
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 if ( ! -d $CONFIG{'theme-dir'} . "/" . $CONFIG{'theme'} )
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1881 {
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1882 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
1883 print "\tTheme :" . $CONFIG{'theme'} . "\n";
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1884 print "\tTheme dir:" . $CONFIG{'theme-dir'} . "\n";
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1885 print "\tExpected :" . $CONFIG{'theme-dir'} . "/" . $CONFIG{'theme'} . "\n";
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1886 exit;
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1887 }
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1888
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1889 }
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1890
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1891
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1892
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1893
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1894 =begin doc
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1895
12
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1896 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
1897 in the output.
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1898
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1899 This only works for a top-level target directory.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1900
46
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
1901 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
1902
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1903 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1904
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1905 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1906
12
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1907 sub copyStaticFiles
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1908 {
12
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1909 #
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1910 # Soure and destination for the copy
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1911 #
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1912 my $input = $CONFIG{'theme-dir'} . "/" . $CONFIG{'theme'};
12
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1913 my $output = $CONFIG{'output'};
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1914
12
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1915 foreach my $pattern ( qw! *.css *.jpg *.gif *.png *.js *.ico ! )
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1916 {
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1917 foreach my $file ( glob( $input . "/" . $pattern ) )
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1918 {
13
a3d2dca6ada3 2007-08-14 14:22:05 by steve
steve
parents: 12
diff changeset
1919 #
a3d2dca6ada3 2007-08-14 14:22:05 by steve
steve
parents: 12
diff changeset
1920 # Get the name of the file.
a3d2dca6ada3 2007-08-14 14:22:05 by steve
steve
parents: 12
diff changeset
1921 #
a3d2dca6ada3 2007-08-14 14:22:05 by steve
steve
parents: 12
diff changeset
1922 if ( $file =~ /(.*)\/(.*)/ )
a3d2dca6ada3 2007-08-14 14:22:05 by steve
steve
parents: 12
diff changeset
1923 {
a3d2dca6ada3 2007-08-14 14:22:05 by steve
steve
parents: 12
diff changeset
1924 $file = $2;
a3d2dca6ada3 2007-08-14 14:22:05 by steve
steve
parents: 12
diff changeset
1925 }
46
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
1926 if ( $CONFIG{'force'} || ( ! -e "$output/$file" ) )
12
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1927 {
13
a3d2dca6ada3 2007-08-14 14:22:05 by steve
steve
parents: 12
diff changeset
1928 $CONFIG{'verbose'} && print "Copying static file: $file\n";
a3d2dca6ada3 2007-08-14 14:22:05 by steve
steve
parents: 12
diff changeset
1929 copy( "$input/$file", "$output/$file" );
12
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1930 }
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1931 }
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1932 }
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1933 }
16
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1934
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1935
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1936
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1937 =begin doc
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1938
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1939 Convert from markdown to HTML.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1940
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1941 =end doc
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1942
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1943 =cut
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1944
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1945 sub markdown2HTML
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1946 {
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1947 my( $text ) = (@_);
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1948
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1949 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1950 # Make sure we have the module installed. Use eval to
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1951 # avoid making this mandatory.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1952 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1953 my $test = "use Text::Markdown;";
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1954
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1955 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1956 # Test loading the module.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1957 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1958 eval( $test );
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1959 if ( $@ )
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1960 {
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1961 print <<EOF;
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1962
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1963 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
1964 Perl module Text::Markdown is not installed.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1965
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1966 Aborting.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1967 EOF
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1968 exit;
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1969 }
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1970
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1971 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1972 # Convert.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1973 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1974 $text = Text::Markdown::Markdown( $text );
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1975 return( $text );
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1976 }
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1977
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1978
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1979
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1980 =begin doc
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1981
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1982 Convert from textile to HTML.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1983
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1984 =end doc
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1985
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1986 =cut
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1987
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1988 sub textile2HTML
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1989 {
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1990 my( $text ) = (@_);
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1991
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1992 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1993 # Make sure we have the module installed. Use eval to
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1994 # avoid making this mandatory.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1995 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1996 my $test = "use Text::Textile;";
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1997
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1998 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1999 # Test loading the module.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2000 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2001 eval( $test );
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2002 if ( $@ )
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2003 {
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2004 print <<EOF;
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2005
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2006 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
2007 Perl module Text::Textile is not installed.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2008
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2009 Aborting.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2010 EOF
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2011 exit;
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2012 }
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2013
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2014 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2015 # Convert.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2016 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2017 $text = Text::Textile::textile( $text );
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2018 return( $text );
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2019 }
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2020
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2021
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2022
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
2023
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
2024 sub listThemes
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
2025 {
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
2026 my( $dir ) = ( @_ );
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
2027
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
2028 $CONFIG{'verbose'} && print "Listhing themes beneath : $dir\n";
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
2029
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
2030 foreach my $name ( sort( glob( $dir . "/*" ) ) )
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
2031 {
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
2032 next unless( -d $name );
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
2033
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
2034 next if ( $name =~ /\/xml$/ );
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
2035
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
2036 if ( $name =~ /^(.*)\/([^\/\\]*)$/ )
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
2037 {
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
2038 print $2 . "\n";
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
2039 }
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
2040 }
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
2041 }
66
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2042
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2043
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2044
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2045 =begin doc
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2046
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2047 Create and configure a calendar for the index, if and only iff the
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2048 HTML::CalendarMonthSimple module is installed.
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2049
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2050 =end doc
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2051
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2052 =cut
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2053
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2054 sub createCalendar
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2055 {
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2056 #
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2057 # Attempt to load the module.
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2058 #
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2059 my $test = "use HTML::CalendarMonthSimple;";
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2060 eval( $test );
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2061
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2062 #
128
9f092b9be906 Updated spelling.
Steve Kemp <steve@steve.org.uk>
parents: 105
diff changeset
2063 # If there was an error, or the calendar is disabled then
66
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2064 # return undef.
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2065 #
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2066 if ( ( $@ ) || ( $CONFIG{'no-calendar'} ) )
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2067 {
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2068 return undef;
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2069 }
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2070
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2071 #
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2072 # Continue
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2073 #
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2074 my $cal = new HTML::CalendarMonthSimple();
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2075
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2076 # configuration of the calendar
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2077 $cal->border(0);
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2078 $cal->weekstartsonmonday(1);
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2079 $cal->showweekdayheaders(1);
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2080 $cal->sunday('Sun');
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2081 $cal->saturday('Sat');
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2082 $cal->weekdays('Mo','Tue','We','Thu','Fr');
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2083
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2084 # get 4th element from localtime aka month in form of (0..11)
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2085 my $curmonth = (localtime)[4] + 1;
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2086
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2087 foreach my $f (%data)
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2088 {
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2089 my $h = $data{$f};
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2090 next if ( !$h );
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2091 my $entrydate = $h->{'date'};
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2092
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2093 if ( !$entrydate )
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2094 {
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2095 my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2096 $atime,$mtime,$ctime,$blksize,$blocks)
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2097 = stat($f);
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2098
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2099 $entrydate = localtime( $ctime );
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2100 }
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2101
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2102 my $date = time2str("%Y-%m-%d", str2time($entrydate));
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2103 my ($year,$month,$day) = split(/-/,$date);
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2104
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2105
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2106 if ($month eq $curmonth)
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2107 {
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2108 $cal->setdatehref($day,fileToTitle($data{$f}->{'title'}));
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2109 }
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2110 }
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2111 return ($cal);
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
2112 }