annotate bin/chronicle @ 82:249ca4872b6c

Updated version number
author Steve Kemp <steve@steve.org.uk>
date Tue, 11 Dec 2007 10:56:27 +0000
parents 073dc15e70ac
children 2b56674bde84
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1 #!/usr/bin/perl -w
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
2
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
3 =head1 NAME
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
4
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
5 chronicle - A blog compiler.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
6
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
7 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
8
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
9 =head1 SYNOPSIS
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
10
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
11
36
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
12 Path Options:
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
13
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
14 --config Specify a configuration file to read.
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
15 --input Specify the input directory to use.
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
16 --output Specify the directory to write output to.
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
17 --theme-dir Specify the path to the theme templates.
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
18 --theme Specify the theme to use.
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
19 --pattern Specify the pattern of files to work with.
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
20 --url-prefix Specify the prefix to the live blog.
36
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
21
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
22
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
23 Pre & Post-Build Commands:
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
24
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
25 --pre-build Specify a command to execute prior to building the blog.
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
26 --post-build Specify a command to execute once the blog has been built.
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
27
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
28 Blog Entry Options:
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
29
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
30 --format Specify the format of your entries, HTML/textile/markdown.
36
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
31
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
32 Optional Features:
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
33
46
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
34 --force Force the copying of static files from the blog theme.
36
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
35 --no-archive Don't create an archive page.
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
36 --no-cache Don't use the optional memcached features, even if available.
66
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
37 --no-calander Don't use the optional calendar upon the index.
36
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
38 --no-tags Don't produce any tag pages.
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
39 --lower-case Lower-case all filenames which are output.
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
40
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
41
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
42 Help Options:
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
43
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
44 --help Show the help information for this script.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
45 --manual Read the manual for this script.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
46 --verbose Show useful debugging information.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
47 --version Show the version number and exit.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
48
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
49 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
50
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
51
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
52 =head1 ABOUT
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
53
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
54 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
55 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
56 HTML files.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
57
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
58 It supports only the bare minimum of features which are required
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
59 to be useful:
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
60
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
61 * Tagging support.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
62
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
63 * RSS support.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
64
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
65 * Archive support.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
66
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
67 The obvious deficiencies are:
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
68
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
69 * Lack of support for commenting.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
70
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
71 * Lack of pingback/trackback support.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
72
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
73 Having said that it is a robust, stable, and useful system.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
74
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
75 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
76
46
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
77
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
78 =head1 BLOG FORMAT
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
79
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
80 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
81 pages. Each entry should look something like this:
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
82
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
83 =for example begin
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
84
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
85 Title: This is the title of the blog post
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
86 Date: 2nd March 2007
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
87 Tags: one, two, three, long tag
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
88
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
89 The text of your entry goes here.
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
90
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
91 =for example end
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
92
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
93 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
94 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
95 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
96 below:
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
97
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
98 =over 8
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
99
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
100 =item Title:
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
101 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
102 is used instead.
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
103
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
104 =item Date:
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
105 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
106 file is used instead.
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
107
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
108 =item Tags:
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
109 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
110
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
111 =back
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
112
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
113 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
114 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
115 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
116 informing you of the names of the required modules.
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
117
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
118 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
119 file, or via the command line flag B<--format>.
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
120
46
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
121 =cut
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
122
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
123
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
124 =head1 CONFIGURATION
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
125
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
126 The configuration of the software is minimal, and generally performed
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
127 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
128 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
129 file.
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
130
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
131 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
132 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
133 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
134
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
135 The configuration file contains lines like these:
46
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
136
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
137 =for example begin
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
138
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
139 input = /home/me/blog
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
140
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
141 output = /var/www/blog
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
142
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
143 format = markdown
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
144
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
145 =for example end
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
146
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
147 Keys which are unknown are ignored.
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
148
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
149 =cut
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
150
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
151
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
152 =head1 OPTIONAL CACHING
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
153
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
154 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
155 Memcached deaemon, if installed and available.
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
156
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
157 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
158
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
159 =for example begin
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
160
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
161 apt-get update
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
162 apt-get install memcached libcache-memcached-perl
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
163
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
164 =for example end
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
165
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
166 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
167 effect with --verbose.
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
168
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
169 =cut
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
170
66
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
171 =head1 OPTIONAL CALENDAR
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
172
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
173 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
174 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
175
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
176 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
177
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
178 =cut
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
179
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
180
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
181 =head1 AUTHOR
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
182
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
183 Steve
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
184 --
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
185 http://www.steve.org.uk/
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
186
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
187 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
188
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
189 =head1 LICENSE
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
190
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
191 Copyright (c) 2007 by Steve Kemp. All rights reserved.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
192
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
193 This module is free software;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
194 you can redistribute it and/or modify it under
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
195 the same terms as Perl itself.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
196 The LICENSE file contains the full text of the license.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
197
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
198 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
199
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
200
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
201 use strict;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
202 use warnings;
45
a9f8a82045f8 2007-10-10 20:00:57 by steve
steve
parents: 44
diff changeset
203
a9f8a82045f8 2007-10-10 20:00:57 by steve
steve
parents: 44
diff changeset
204
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
205 use Date::Parse;
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
206 use Date::Format;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
207 use File::Copy;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
208 use File::Path;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
209 use Getopt::Long;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
210 use HTML::Template;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
211 use Pod::Usage;
45
a9f8a82045f8 2007-10-10 20:00:57 by steve
steve
parents: 44
diff changeset
212 use Time::Local;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
213
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
214
23
59b123e21627 2007-08-15 18:23:35 by steve
steve
parents: 21
diff changeset
215 #
59b123e21627 2007-08-15 18:23:35 by steve
steve
parents: 21
diff changeset
216 # Release number
59b123e21627 2007-08-15 18:23:35 by steve
steve
parents: 21
diff changeset
217 #
59b123e21627 2007-08-15 18:23:35 by steve
steve
parents: 21
diff changeset
218 # NOTE: Set by 'make release'.
59b123e21627 2007-08-15 18:23:35 by steve
steve
parents: 21
diff changeset
219 #
67
e1bef4e4fb5e Removed the 1.0 version
Steve Kemp <steve@steve.org.uk>
parents: 66
diff changeset
220 my $RELEASE = 'UNRELEASED';
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
221
49
0c4f7753c9d3 2007-10-10 21:31:32 by steve
steve
parents: 48
diff changeset
222 #
0c4f7753c9d3 2007-10-10 21:31:32 by steve
steve
parents: 48
diff changeset
223 # 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
224 #
0c4f7753c9d3 2007-10-10 21:31:32 by steve
steve
parents: 48
diff changeset
225 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
226
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
227 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
228 # Setup default options.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
229 #
33
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
230 my %CONFIG = setupDefaultOptions();
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
231
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
232
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
233 #
7
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
234 # 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
235 #
7
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
236 readConfigurationFile( "/etc/chroniclerc" );
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
237 readConfigurationFile( $ENV{'HOME'} . "/.chroniclerc" );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
238
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
239
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
240 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
241 # Parse the command line arguments.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
242 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
243 parseCommandLineArguments();
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
244
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
245
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
246 #
59
943499ebeaef 2007-10-25 18:43:41 by steve
steve
parents: 57
diff changeset
247 # Another configuration file?
943499ebeaef 2007-10-25 18:43:41 by steve
steve
parents: 57
diff changeset
248 #
943499ebeaef 2007-10-25 18:43:41 by steve
steve
parents: 57
diff changeset
249 readConfigurationFile( $CONFIG{'config'} ) if ( defined $CONFIG{'config'} );
943499ebeaef 2007-10-25 18:43:41 by steve
steve
parents: 57
diff changeset
250
943499ebeaef 2007-10-25 18:43:41 by steve
steve
parents: 57
diff changeset
251
943499ebeaef 2007-10-25 18:43:41 by steve
steve
parents: 57
diff changeset
252 #
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
253 # Make sure we have arguments which are sane.
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
254 #
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
255 # 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
256 # arguments.
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
257 #
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
258 #
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
259 sanityCheckArguments();
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
260
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
261
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
262 #
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
263 # Listing themes?
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
264 #
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
265 if ( $CONFIG{'list-themes'} )
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
266 {
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
267 listThemes( $CONFIG{'theme-dir'} );
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
268 exit;
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
269 }
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
270
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
271 # Should we run something before we start?
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 if ( $CONFIG{'pre-build'} )
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 $CONFIG{'verbose'} && print "Running command: $CONFIG{'pre-build'}\n";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
276
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
277 system($CONFIG{'pre-build'});
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
278 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
279
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
280
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
281 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
282 # 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
283 # we can use to create our pages.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
284 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
285 # 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
286 # 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
287 # keys such as:
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
288 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
289 # tags => [ 'test', 'testing' ]
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
290 # date => '1st july 2007'
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
291 # title => 'Some title'
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
292 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
293 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
294 my %data = createDataStructure();
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
295
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
296 #
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
297 # Find each unique tag used within our entries.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
298 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
299 my %all_tags;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
300 %all_tags = findAllTags() unless( $CONFIG{'no-tags'} );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
301
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
302
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
303 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
304 # Find each unique month + year we've used.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
305 #
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
306 my %all_dates;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
307 %all_dates = findAllMonths() unless( $CONFIG{'no-archive'} );
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 # 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
312 # sidebar.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
313 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
314 my %CLOUD;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
315 $CLOUD{'tag'} = createTagCloud( %all_tags ) unless( $CONFIG{'no-tags'} );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
316 $CLOUD{'archive'} = createDateCloud( %all_dates ) unless( $CONFIG{'no-archive'} );;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
317
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
318
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
319
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
320 #
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
321 # Create the output directories.
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
322 #
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
323 mkpath( $CONFIG{'output'}, 0, 0755 ) if ( ! -d $CONFIG{'output'} );
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
324 foreach my $tag ( keys %all_tags )
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
325 {
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
326 mkpath( "$CONFIG{'output'}/tags/$tag", 0, 0755 );
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
327 }
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
328 foreach my $date ( keys %all_dates )
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
329 {
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
330 next unless ( $date =~ /^([0-9]{4})-([0-9]{2})/ );
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
331 mkpath( "$CONFIG{'output'}/archive/$1/$2", 0, 0755 );
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
332 }
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
333
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
334
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
335 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
336 # Output each static page.
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 $CONFIG{'verbose'} && print "Creating static pages:\n";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
339 foreach my $file ( keys %data )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
340 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
341 outputStaticPage( $file );
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
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
344
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
345
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
346 #
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
347 # 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
348 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
349 foreach my $tagName ( sort keys %all_tags )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
350 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
351 $CONFIG{'verbose'} && print "Creating tag page: $tagName\n";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
352
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
353 outputTagPage( $tagName );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
354 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
355
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
356
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
357
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
358 #
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
359 # Now build the archive pages.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
360 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
361 foreach my $date ( keys( %all_dates ) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
362 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
363 $CONFIG{'verbose'} && print "Creating archive page: $date\n";
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 outputArchivePage( $date );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
366 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
367
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
368
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
369
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
370 #
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
371 # Finally out the most recent entries for the front-page.
1
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 outputIndexPage();
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
374
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
375
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
376
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
377 #
12
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
378 # Copy any static files into place.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
379 #
12
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
380 copyStaticFiles();
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
381
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
382
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
383 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
384 # Post-build command?
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 if ( $CONFIG{'post-build'} )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
387 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
388 $CONFIG{'verbose'} && print "Running command: $CONFIG{'post-build'}\n";
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 system($CONFIG{'post-build'});
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
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
393
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
394 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
395 # All done.
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 exit;
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
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
400
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
401
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
402
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
403
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
404
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
405 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
406
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
407 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
408
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
409 =end doc
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 =cut
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 sub setupDefaultOptions
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
414 {
33
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
415 my %CONFIG;
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
416
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
417 #
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
418 # Text directory.
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
419 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
420 $CONFIG{'input'} = "./blog";
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
421
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
422 #
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
423 # Output directory.
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
424 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
425 $CONFIG{'output'} = "./output";
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
426
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
427 #
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
428 # Theme setup
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
429 #
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
430 $CONFIG{'theme-dir'} = "./themes/";
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
431 $CONFIG{'theme'} = "default";
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 #
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
434 # prefix for all links.
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
435 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
436 $CONFIG{'url-prefix'} = "";
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
437
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
438 #
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
439 # Default input format
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
440 #
16
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
441 $CONFIG{'format'} = 'html';
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
442
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
443 #
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
444 # Entries per-page for the index.
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
445 #
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
446 $CONFIG{'entry-count'} = 10;
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
447
46
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
448 #
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
449 # Don't overwrite files by default
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
450 #
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
451 $CONFIG{'force'} = 0;
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
452
33
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
453 return( %CONFIG );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
454 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
455
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
456
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
457
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
458
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
459 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
460
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
461 Parse the command line arguments this script was given.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
462
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
463 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
464
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
465 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
466
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
467 sub parseCommandLineArguments
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
468 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
469 my $HELP = 0;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
470 my $MANUAL = 0;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
471 my $VERSION = 0;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
472
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
473 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
474 # Parse options.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
475 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
476 GetOptions(
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
477 # Help options
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
478 "help", \$HELP,
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
479 "manual", \$MANUAL,
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
480 "verbose", \$CONFIG{'verbose'},
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
481 "version", \$VERSION,
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
482 "list-themes", \$CONFIG{'list-themes'},
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
483
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
484 # paths
59
943499ebeaef 2007-10-25 18:43:41 by steve
steve
parents: 57
diff changeset
485 "config=s", \$CONFIG{'config'},
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
486 "input=s", \$CONFIG{'input'},
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
487 "output=s", \$CONFIG{'output'},
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
488 "theme-dir=s", \$CONFIG{'theme-dir'},
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
489 "theme=s", \$CONFIG{'theme'},
36
3f5f19c3b0cc 2007-09-03 05:16:51 by steve
steve
parents: 34
diff changeset
490 "pattern=s", \$CONFIG{'pattern'},
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
491
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
492 # optional
46
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
493 "force", \$CONFIG{'force'},
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
494 "no-tags", \$CONFIG{'no-tags'},
33
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
495 "no-cache", \$CONFIG{'no-cache'},
75
c64a37a823d1 Document, and support, no-calendar.
Steve Kemp <steve@steve.org.uk>
parents: 67
diff changeset
496 "no-calendar", \$CONFIG{'no-calendar'},
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
497 "no-archive", \$CONFIG{'no-archive'},
34
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
498 "lower-case", \$CONFIG{'lower-case'},
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
499
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
500 # input format.
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
501 "format=s", \$CONFIG{'format'},
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
502
27
25450021ba3e 2007-08-16 12:45:55 by steve
steve
parents: 23
diff changeset
503 # prefix
25450021ba3e 2007-08-16 12:45:55 by steve
steve
parents: 23
diff changeset
504 "url-prefix=s", \$CONFIG{'url_prefix'},
25450021ba3e 2007-08-16 12:45:55 by steve
steve
parents: 23
diff changeset
505
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
506 # commands
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
507 "pre-build=s", \$CONFIG{'pre-build'},
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
508 "post-build=s", \$CONFIG{'post-build'},
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
509
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
510 );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
511
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
512 pod2usage(1) if $HELP;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
513 pod2usage(-verbose => 2 ) if $MANUAL;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
514
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
515 if ( $VERSION )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
516 {
62
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
517 my $REVISION = '$Revision: 1.28 $';
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
518 if ( $REVISION =~ /1.([0-9.]+) / )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
519 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
520 $REVISION = $1;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
521 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
522
23
59b123e21627 2007-08-15 18:23:35 by steve
steve
parents: 21
diff changeset
523 print( "chronicle release $RELEASE\n" );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
524 exit;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
525 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
526 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
527
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
528
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
529
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
530 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
531
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
532 Create our global datastructure, by reading each of the blog
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
533 files and extracting:
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
534
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
535 1. The title of the entry.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
536
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
537 2. Any tags which might be present.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
538
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
539 3. The date upon which it was made.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
540
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
541 =end doc
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 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
544
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
545 sub createDataStructure
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 my %results;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
548
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
549 if ( ! -d $CONFIG{'input'} )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
550 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
551 print <<EOF;
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 The blog input directory $CONFIG{'input'} does not exist.
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 Aborting.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
556 EOF
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 exit
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
559 }
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 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
562 # Did the user override the default pattern?
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
563 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
564 my $pattern = $CONFIG{'pattern'} || "*";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
565 my $count = 0;
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 foreach my $file ( sort( glob( $CONFIG{'input'} . "/" . $pattern ) ) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
568 {
7
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
569 #
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
570 # Ignore directories.
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
571 #
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
572 next if ( -d $file );
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
573
62
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
574 my $tags = '';
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
575 my $title = '';
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
576 my $date = '';
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
577 my $private = 0;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
578
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
579 my @tags;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
580
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
581 open( INPUT, "<", $file ) or die "Failed to open blog file $file - $!";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
582 while( my $line = <INPUT> )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
583 {
62
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
584 #
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
585 # Get the tags
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
586 #
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
587 if ( ( $line =~ /^tags:(.*)/i ) && !length($tags) )
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
588 {
62
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
589 $tags = $1;
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
590 foreach my $t ( split( /,/, $tags ) )
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
591 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
592 # strip leading and trailing space.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
593 $t =~ s/^\s+//;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
594 $t =~ s/\s+$//;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
595
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
596 # skip empty tags.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
597 next if ( !length($t) );
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 # lowercase and store the tags.
62
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
600 $t = lc($t);
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
601 push ( @tags, $t );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
602 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
603 }
11
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
604 elsif (( $line =~ /^title:(.*)/i ) && !length($title) )
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
605 {
62
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
606 #
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
607 # Get the title.
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
608 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
609 $title = $1;
11
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
610
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
611 # strip leading and trailing space.
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
612 $title =~ s/^\s+// if ( length $title );
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
613 $title =~ s/\s+$// if ( length $title );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
614 }
11
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
615 elsif (( $line =~ /^date:(.*)/i ) && !length($date) )
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
616 {
62
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
617 #
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
618 # Get the date.
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
619 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
620 $date = $1;
11
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
621
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
622 # strip leading and trailing space.
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
623 $date =~ s/^\s+// if ( $date );
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
624 $date =~ s/\s+$// if ( $date );
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
625
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
626 }
11
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
627 elsif ( $line =~ /^status:(.*)/i )
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
628 {
62
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
629 #
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
630 # The security level.
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
631 #
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
632
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
633 my $level = $1;
11
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
634
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
635 # strip leading and trailing space.
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
636 $level =~ s/^\s+// if ( $level );
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
637 $level =~ s/\s+$// if ( $level );
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
638
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
639 $private = 1 if ( $level =~ /private/i);
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
640 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
641 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
642 close( INPUT );
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 $results{$file} = { tags => \@tags,
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
645 title => $title,
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
646 date => $date } unless( $private );
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 $count += 1;
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
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 # Make sure we found some entries.
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 if ( $count < 1 )
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 print <<EOF;
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 There were no text files found in the input directory
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
659 $CONFIG{'input'} which matched the pattern '$pattern'.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
660
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
661 Aborting.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
662
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
663 EOF
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
664 exit;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
665 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
666
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
667 return %results;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
668 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
669
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
670
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
671
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
672 =begin doc
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 Find each distinct tag which has been used within blog entries,
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
675 and the number of times each one has been used.
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 =end doc
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 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
680
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
681 sub findAllTags
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
682 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
683 my %allTags;
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 foreach my $f ( keys %data )
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 my $h = $data{$f};
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
688 my $tags = $h->{'tags'} || undef;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
689 foreach my $t ( @$tags )
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 $allTags{$t}+=1;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
692 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
693 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
694
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
695 return( %allTags );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
696 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
697
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
698
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
699
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
700 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
701
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
702 Create a structure for a tag cloud.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
703
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
704 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
705
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
706 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
707
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
708 sub createTagCloud
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
709 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
710 my( %unique ) = ( @_ );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
711
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
712 my $results;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
713
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
714 foreach my $key ( sort keys( %unique ) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
715 {
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
716 # count.
27
25450021ba3e 2007-08-16 12:45:55 by steve
steve
parents: 23
diff changeset
717 my $count = $unique{$key};
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
718
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
719 # size for the HTML.
27
25450021ba3e 2007-08-16 12:45:55 by steve
steve
parents: 23
diff changeset
720 my $size = 10 + ( $count * 5 );
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
721 $size = 40 if ( $size >= 40 );
27
25450021ba3e 2007-08-16 12:45:55 by steve
steve
parents: 23
diff changeset
722
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
723 push( @$results,
27
25450021ba3e 2007-08-16 12:45:55 by steve
steve
parents: 23
diff changeset
724 { tag => $key,
25450021ba3e 2007-08-16 12:45:55 by steve
steve
parents: 23
diff changeset
725 count => $count,
34
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
726 size => $size } );
1
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 return $results;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
729
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
730 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
731
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
732
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
733
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
734 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
735
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
736 Find each of the distinct Month + Year pairs for entries which
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
737 have been created.
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 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
740
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
741 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
742
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
743 sub findAllMonths
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
744 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
745 my %allDates;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
746 foreach my $f ( keys %data )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
747 {
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
748 my $h = $data{$f};
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
749 next if ( !$h );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
750
55
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
751 my $date = $h->{'date'};
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
752
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
753 #
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
754 # Not a date? Use the ctime of the file.
55
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
755 #
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
756 if ( !defined( $date ) || !length($date) )
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
757 {
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
758 #
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
759 # Test the file for creation time.
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
760 #
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
761 my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
762 $atime,$mtime,$ctime,$blksize,$blocks)
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
763 = stat($f);
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
764
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
765 $date = localtime( $ctime );
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
766 }
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
767
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
768 $date = time2str("%Y-%m", str2time($date));
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 $allDates{$date}+=1;
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 return( %allDates );
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
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
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
778 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
779
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
780 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
781
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
782 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
783 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
784
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
785 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
786
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
787 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
788
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
789 sub createDateCloud
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
790 {
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
791 my( %entry_dates ) = ( @_ );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
792
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
793 my $results;
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
794 my $year;
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
795 my $months;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
796
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
797 foreach my $date ( sort keys %entry_dates )
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
798 {
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
799 next unless ( $date =~ /^([0-9]{4})-([0-9]{2})/ );
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
800
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
801 if ( $year and $1 ne $year )
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
802 {
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
803 push( @$results, { year => $year,
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
804 months => $months } );
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
805 undef $months;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
806 }
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
807 $year = $1;
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
808
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
809 push( @$months, { month => $2,
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
810 month_name => $names[$2-1],
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
811 count => $entry_dates{$date} } );
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
812
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
813 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
814
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
815 push( @$results, { year => $year,
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
816 months => $months } );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
817
78
cbac8af73d88 Updated sort ordering.
Steve Kemp <steve@steve.org.uk>
parents: 77
diff changeset
818 #
cbac8af73d88 Updated sort ordering.
Steve Kemp <steve@steve.org.uk>
parents: 77
diff changeset
819 # Make sure this is sorted by reverse chronilogical order.
cbac8af73d88 Updated sort ordering.
Steve Kemp <steve@steve.org.uk>
parents: 77
diff changeset
820 #
cbac8af73d88 Updated sort ordering.
Steve Kemp <steve@steve.org.uk>
parents: 77
diff changeset
821 my @sorted = sort { $b->{'year'} <=> $a->{'year'} } @$results;
cbac8af73d88 Updated sort ordering.
Steve Kemp <steve@steve.org.uk>
parents: 77
diff changeset
822 return \@sorted;
1
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
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
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
827 =begin doc
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 Sort by date.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
830
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
831 =end doc
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 =cut
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 sub bywhen
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
836 {
37
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
837 #
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
838 # Parse and return the date
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
839 #
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
840 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
841 my ($ss2,$mm2,$hh2,$day2,$month2,$year2,$zone2) = strptime($b->{'date'});
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
842
37
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
843 #
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
844 # Abort if we didn't work.
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
845 #
66
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
846 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
847 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
848
37
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
849 #
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
850 # Convert to compare
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
851 #
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
852 my $c = timelocal(0,0,0,$day1,$month1,$year1 + 1900);
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
853 my $d = timelocal(0,0,0,$day2,$month2,$year2 + 1900);
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
854
98d78379a017 2007-09-04 10:51:11 by steve
steve
parents: 36
diff changeset
855 return $d <=> $c;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
856 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
857
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
858
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
859
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
860
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
861 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
862
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
863 Output the index page + index RSS feed.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
864
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
865 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
866
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
867 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
868
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
869 sub outputIndexPage
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
870 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
871
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
872 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
873 # Holder for the blog entries.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
874 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
875 my $entries;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
876
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
877 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
878 # 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
879 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
880 my $tmp;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
881 foreach my $file ( keys ( %data ) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
882 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
883 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
884
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
885 push( @$tmp, $blog ) if (keys( %$blog ) );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
886 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
887 my @tmp2 = sort bywhen @$tmp;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
888
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
889 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
890 # The number of entries to display upon the index.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
891 #
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
892 my $max = $CONFIG{'entry-count'};
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
893 foreach my $f ( @tmp2 )
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 push( @$entries, $f ) if ( $max > 0 );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
896 $max -= 1;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
897 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
898
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
899 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
900 # Open the index template.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
901 #
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
902 my $template = loadTemplate( "index.template",
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
903 die_on_bad_params => 0 );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
904
66
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
905
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
906 #
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
907 # 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
908 #
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
909 my $calendar = createCalendar();
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
910 if ( defined( $calendar ) )
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
911 {
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
912 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
913
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
914 $text =~ s/<\/?b>//g;
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
915 $text =~ s/<\/?p>//g;
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
916
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
917 $template->param( calendar => 1,
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
918 calendar_month => $text );
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
919 }
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
920
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
921
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
922 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
923 # The entries.
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
924 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
925 $template->param( entries => $entries )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
926 if ( $entries );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
927
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
928 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
929 # The clouds
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
930 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
931 $template->param( tagcloud => $CLOUD{'tag'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
932 if ( $CLOUD{'tag'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
933 $template->param( datecloud => $CLOUD{'archive'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
934 if ( $CLOUD{'archive'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
935
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
936 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
937 # Blog title and subtitle, if present.
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
938 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
939 $template->param( blog_title => $CONFIG{'blog_title'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
940 if ( $CONFIG{'blog_title'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
941 $template->param( blog_subtitle => $CONFIG{'blog_subtitle'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
942 if ( $CONFIG{'blog_subtitle'} );
23
59b123e21627 2007-08-15 18:23:35 by steve
steve
parents: 21
diff changeset
943 $template->param( release => $RELEASE );
59b123e21627 2007-08-15 18:23:35 by steve
steve
parents: 21
diff changeset
944
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
945
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
946 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
947 # Page to use
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
948 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
949 my $index = $CONFIG{'filename'} || "index.html";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
950
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
951 outputTemplate( $template, $index );
1
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 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
954 # Output the RSS feed
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 $template = loadTemplate( "index.xml.template",
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
957 die_on_bad_params => 0 );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
958 $template->param( entries => $entries ) if ( $entries );
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
959 outputTemplate( $template, "index.rss" );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
960 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
961
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
962
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
963
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
964 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
965
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
966 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
967 tag '$foo'.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
968
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
969 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
970
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
971 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
972
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
973 sub outputTagPage
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
974 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
975 my ( $tagName ) = ( @_ );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
976
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
977 my $dir = "tags/$tagName";
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
978
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
979 my %allTags;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
980 my %tagEntries;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
981 foreach my $f ( keys %data )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
982 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
983 my $h = $data{$f};
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
984 my $tags = $h->{'tags'} || undef;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
985 foreach my $t ( @$tags )
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 $allTags{$t}+=1;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
988 my $a = $tagEntries{$t};
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
989 push @$a, $f ;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
990 $tagEntries{$t}= $a;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
991 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
992 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
993
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
994 my $matching = $tagEntries{$tagName};
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
995
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
996 my $entries;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
997
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
998 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
999 # Now read the matching entries.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1000 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1001 foreach my $f ( sort @$matching )
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 my $blog = readBlogEntry( $f );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1004 if (keys( %$blog ) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1005 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1006 $CONFIG{'verbose'} && print "\tAdded: $f\n";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1007 push( @$entries, $blog );
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 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1010
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1011 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1012 # Now write the output as a HTML page.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1013 #
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1014 my $template = loadTemplate( "tags.template",
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1015 die_on_bad_params => 0 );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1016
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1017 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1018 # The entries.
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1019 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1020 $template->param( entries => $entries ) if ( $entries );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1021 $template->param( tagname => $tagName );
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1022
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1023 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1024 # The clouds
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1025 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1026 $template->param( tagcloud => $CLOUD{'tag'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1027 if ( $CLOUD{'tag'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1028 $template->param( datecloud => $CLOUD{'archive'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1029 if ( $CLOUD{'archive'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1030
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1031 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1032 # Blog title and subtitle, if present.
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1033 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1034 $template->param( blog_title => $CONFIG{'blog_title'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1035 if ( $CONFIG{'blog_title'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1036 $template->param( blog_subtitle => $CONFIG{'blog_subtitle'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1037 if ( $CONFIG{'blog_subtitle'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1038
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1039
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1040 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1041 # Page to use
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 $index = $CONFIG{'filename'} || "index.html";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1044
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1045 outputTemplate( $template, "$dir/$index" );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1046
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1047 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1048 # Now output the .xml file
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1049 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1050 $template = loadTemplate( "tags.xml.template", die_on_bad_params => 0 );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1051 $template->param( entries => $entries ) if ( $entries );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1052 $template->param( tagname => $tagName ) if ( $tagName );
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1053 outputTemplate( $template, "$dir/$tagName.rss" );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1054 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1055
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1056
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1057
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1058 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1059
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1060 Output the archive page for the given Month + Year.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1061
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1062 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
1063 more often than it needs to.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1064
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1065 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1066
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1067 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1068
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1069 sub outputArchivePage
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 my( $date ) = ( @_ );
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 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1074 # Should we abort?
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 if ( $CONFIG{'no-archive'} )
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 $CONFIG{'verbose'} && print "Ignoring archive page, as instructed.\n";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1079 return;
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
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 my $year = '';
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1084 my $month = '';
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1085 if ( $date =~ /^([0-9]{4})-([0-9]{2})/ )
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1086 {
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1087 $year = $1;
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1088 $month = $2;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1089 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1090
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1091 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1092 # Make the directory
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1093 #
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1094 my $dir = "archive/$year/$month";
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1095
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1096 my $entries;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1097
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1098
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1099 my %dateEntries;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1100 foreach my $f ( keys %data )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1101 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1102 my $h = $data{$f};
55
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1103 my $date = $h->{'date'};
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1104
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1105 #
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1106 # Not a date? Use the file.
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1107 #
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1108 if ( !defined( $date ) || !length($date) )
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1109 {
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1110 #
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1111 # Test the file for creation time.
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1112 #
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1113 my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1114 $atime,$mtime,$ctime,$blksize,$blocks)
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1115 = stat($f);
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1116
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1117 $date = localtime( $ctime );
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1118 }
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1119
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1120 $date = time2str("%Y-%m", str2time($date));
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1121
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1122 push @{$dateEntries{$date}}, $f ;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1123 }
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 my $matching = $dateEntries{$date};
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1127 foreach my $f ( reverse @$matching )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1128 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1129 $CONFIG{'verbose'} && print "\tAdded: $f\n";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1130
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1131 my $blog = readBlogEntry( $f );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1132 if (keys( %$blog ) )
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 push( @$entries, $blog );
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 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1139 # Now write the output as a HTML page.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1140 #
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1141 my $template = loadTemplate( "month.template",
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1142 die_on_bad_params => 0 );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1143
48
29464ede63dd 2007-10-10 21:30:50 by steve
steve
parents: 46
diff changeset
1144
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1145 #
48
29464ede63dd 2007-10-10 21:30:50 by steve
steve
parents: 46
diff changeset
1146 # The entries
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1147 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1148 $template->param( entries => $entries ) if ( $entries );
48
29464ede63dd 2007-10-10 21:30:50 by steve
steve
parents: 46
diff changeset
1149
29464ede63dd 2007-10-10 21:30:50 by steve
steve
parents: 46
diff changeset
1150 #
29464ede63dd 2007-10-10 21:30:50 by steve
steve
parents: 46
diff changeset
1151 # Output the month + year.
29464ede63dd 2007-10-10 21:30:50 by steve
steve
parents: 46
diff changeset
1152 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1153 $template->param( year => $year, month => $month );
48
29464ede63dd 2007-10-10 21:30:50 by steve
steve
parents: 46
diff changeset
1154 $template->param( month_name => $names[$month - 1 ] );
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1155
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1156 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1157 # The clouds
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1158 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1159 $template->param( tagcloud => $CLOUD{'tag'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1160 if ( $CLOUD{'tag'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1161 $template->param( datecloud => $CLOUD{'archive'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1162 if ( $CLOUD{'archive'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1163
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1164 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1165 # Blog title and subtitle, if present.
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1166 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1167 $template->param( blog_title => $CONFIG{'blog_title'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1168 if ( $CONFIG{'blog_title'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1169 $template->param( blog_subtitle => $CONFIG{'blog_subtitle'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1170 if ( $CONFIG{'blog_subtitle'} );
1
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 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1173 # Page to use
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1174 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1175 my $index = $CONFIG{'filename'} || "index.html";
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1176 outputTemplate( $template, "$dir/$index" );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1177
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1178 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1179 # Now the RSS page.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1180 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1181 $template = loadTemplate( "month.xml.template", die_on_bad_params => 0 );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1182 $template->param( entries => $entries ) if ( $entries );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1183 $template->param( month => $month, year => $year );
48
29464ede63dd 2007-10-10 21:30:50 by steve
steve
parents: 46
diff changeset
1184 $template->param( month_name => $names[$month - 1 ] );
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1185 outputTemplate( $template, "$dir/$month.rss" );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1186 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1187
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1188
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1189
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1190
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1191 =begin doc
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 Output static page.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1194
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1195 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1196
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1197 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1198
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1199 sub outputStaticPage
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1200 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1201 my ( $filename ) = ( @_ );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1202
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1203 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1204 # Load the template
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1205 #
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1206 my $template = loadTemplate( "entry.template",
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1207 die_on_bad_params => 0 );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1208
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1209 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1210 # Just the name of the file.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1211 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1212 my $basename = $filename;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1213 if ( $basename =~ /(.*)\/(.*)/ )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1214 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1215 $basename=$2;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1216 }
57
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1217 if ( $basename =~ /^(.*)\.(.*)$/ )
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1218 {
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1219 $basename = $1;
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1220 }
34
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1221
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1222 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1223 # Read the entry
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1224 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1225 my $static = readBlogEntry( $filename );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1226
34
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1227 #
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1228 # Get the pieces of information.
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1229 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1230 my $title = $static->{'title'} || $basename;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1231 my $tags = $static->{'tags'};
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1232 my $body = $static->{'body'};
55
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1233 my $date = $static->{'date'};
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1234
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1235 if ( !defined($date) )
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1236 {
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1237 my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1238 $atime,$mtime,$ctime,$blksize,$blocks)
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1239 = stat($filename);
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1240
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1241 $date = localtime( $ctime );
54a234f93390 2007-10-25 12:52:55 by steve
steve
parents: 49
diff changeset
1242 }
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1243
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1244 $CONFIG{'verbose'} && print "\t$filename\n";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1245
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1246 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1247 # Convert to suitable filename.
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 my $file = fileToTitle($title);
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1250
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1251 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1252 # The entry.
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1253 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1254 $template->param( title => $title );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1255 $template->param( tags => $tags ) if ( $tags );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1256 $template->param( date => $date ) if ( $date );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1257 $template->param( body => $body );
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1258
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1259 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1260 # Our clouds
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1261 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1262 $template->param( tagcloud => $CLOUD{'tag'} ) if ( $CLOUD{'tag'} );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1263 $template->param( datecloud => $CLOUD{'archive'} ) if ( $CLOUD{'archive'} );
21
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1264
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1265 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1266 # Blog title and subtitle, if present.
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1267 #
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1268 $template->param( blog_title => $CONFIG{'blog_title'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1269 if ( $CONFIG{'blog_title'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1270 $template->param( blog_subtitle => $CONFIG{'blog_subtitle'} )
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1271 if ( $CONFIG{'blog_subtitle'} );
393cf6c9301b 2007-08-15 00:40:35 by steve
steve
parents: 18
diff changeset
1272
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1273 outputTemplate( $template, $file );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1274 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1275
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1276
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1277
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1278 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1279
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1280 Return a hash of interesting data from our blog file.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1281
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1282 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1283
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1284 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1285
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1286 sub readBlogEntry
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1287 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1288 my ( $filename ) = ( @_);
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1289
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1290 my %entry;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1291
33
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1292 #
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1293 # Do we have the memcache module available?
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1294 #
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1295 my $cache = undef;
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1296 my $test = "use Cache::Memcached;";
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1297 eval( $test );
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1298 if ( ( ! $@ ) && ( ! $CONFIG{'no-cache'} ) )
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1299 {
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1300 # create the cache object
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1301 $cache = new Cache::Memcached {'servers' => ["localhost:11211"] };
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1302
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1303 # fetch from the cache if it is present.
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1304 my $cached = $cache->get( "file_$filename" );
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1305 if ( defined( $cached ) )
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1306 {
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1307 $CONFIG{'verbose'} && print "memcache-get: $filename\n";
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1308 return( \%$cached )
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1309 }
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1310 else
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1311 {
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1312 $CONFIG{'verbose'} && print "memcache-fail: $filename\n";
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1313 }
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1314 }
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1315
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1316
18
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
1317 my $title = ""; # entry title.
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
1318 my $tags = ""; # entry tags.
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
1319 my $body = ""; # entry body.
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
1320 my $date = ""; # entry date
c1e8ae6c878d 2007-08-14 18:10:18 by steve
steve
parents: 16
diff changeset
1321 my $status = ""; # entry privacy/security.
11
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1322
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1323
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1324 open( ENTRY, "<", $filename ) or die "Failed to read $filename $!";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1325 while( my $line = <ENTRY> )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1326 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1327 #
62
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1328 # Get the tags.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1329 #
62
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1330 if (( $line =~ /^tags: (.*)/i ) && !length( $tags ) )
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1331 {
62
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1332 $tags = $1;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1333 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1334 elsif (( $line =~ /^title: (.*)/i ) && !length($title) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1335 {
62
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1336 #
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1337 # Get the title
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1338 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1339 $title = $1;
11
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1340
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1341 # strip leading and trailing space.
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1342 $title =~ s/^\s+// if ( length $title );
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1343 $title =~ s/\s+$// if ( length $title );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1344 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1345 elsif (( $line =~ /^date: (.*)/i ) && !length($date) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1346 {
62
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1347 #
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1348 # Get the date.
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1349 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1350 $date = $1;
11
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1351
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1352 # strip leading and trailing space.
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1353 $date =~ s/^\s+// if ( length $date );
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1354 $date =~ s/\s+$// if ( length $date );
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1355 }
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1356 elsif (( $line =~ /^status:(.*)/ ) && !length ( $status ) )
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1357 {
62
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1358 #
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1359 # Security level?
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1360 #
11
057cd84ce271 2007-08-14 13:39:30 by steve
steve
parents: 9
diff changeset
1361 $status = $1;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1362 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1363 else
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1364 {
62
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1365 #
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1366 # Just a piece of body text.
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1367 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1368 $body .= $line;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1369 }
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 close( ENTRY );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1372
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1373 #
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1374 # Determine the input format to use.
16
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1375 #
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1376 my $format = lc($CONFIG{'format'});
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1377
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1378 #
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1379 # Now process accordingly.
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1380 #
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1381 if ( $format eq 'html' )
16
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1382 {
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1383 # nop
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1384 }
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1385 elsif( $format eq 'markdown' )
16
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1386 {
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1387 $body = markdown2HTML( $body );
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1388 }
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1389 elsif( $format eq 'textile' )
16
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1390 {
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1391 $body = textile2HTML( $body );
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1392 }
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1393 else
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1394 {
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1395 print "Unkown blog entry format ($CONFIG{'format'}).\n";
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1396 print "Treating as HTML.\n";
16
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1397 }
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1398
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1399 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1400 #
44
54ecdc0eec9f 2007-10-10 11:58:22 by steve
steve
parents: 39
diff changeset
1401 # If we have tags then we should use them.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1402 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1403 my $entryTags;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1404
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1405 foreach my $tag ( split( /,/, $tags ) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1406 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1407 # strip leading and trailing space.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1408 $tag =~ s/^\s+//;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1409 $tag =~ s/\s+$//;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1410
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1411 # skip empty tags.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1412 next if ( !length($tag) );
62
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1413
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1414 # tags are lowercase.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1415 $tag = lc($tag);
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1416 push ( @$entryTags, { tag => $tag } );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1417 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1418
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1419 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1420 # If the date isn't set then use todays.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1421 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1422 if ( ! defined($date) ||( !length( $date ) ) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1423 {
66
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1424 my @abbr = qw( Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1425 my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1426 localtime(time);
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1427
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1428 $year += 1900;
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 $date = "$mday $abbr[$mon] $year";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1431 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1432
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1433 #
80
5379f7e3f7de Updated so that we have pubDate attributes for our RDF
Steve Kemp <steve@steve.org.uk>
parents: 78
diff changeset
1434 # Make an entry date for the XML feed
5379f7e3f7de Updated so that we have pubDate attributes for our RDF
Steve Kemp <steve@steve.org.uk>
parents: 78
diff changeset
1435 #
5379f7e3f7de Updated so that we have pubDate attributes for our RDF
Steve Kemp <steve@steve.org.uk>
parents: 78
diff changeset
1436 if ( $date )
5379f7e3f7de Updated so that we have pubDate attributes for our RDF
Steve Kemp <steve@steve.org.uk>
parents: 78
diff changeset
1437 {
5379f7e3f7de Updated so that we have pubDate attributes for our RDF
Steve Kemp <steve@steve.org.uk>
parents: 78
diff changeset
1438 my $time = str2time($date);
5379f7e3f7de Updated so that we have pubDate attributes for our RDF
Steve Kemp <steve@steve.org.uk>
parents: 78
diff changeset
1439 if ( $time )
5379f7e3f7de Updated so that we have pubDate attributes for our RDF
Steve Kemp <steve@steve.org.uk>
parents: 78
diff changeset
1440 {
5379f7e3f7de Updated so that we have pubDate attributes for our RDF
Steve Kemp <steve@steve.org.uk>
parents: 78
diff changeset
1441 $entry{'pubdate'} = time2str("%a, %e %b %Y 00:00:00 GMT", $time );
81
073dc15e70ac Updated to remove multiple spaces.
Steve Kemp <steve@steve.org.uk>
parents: 80
diff changeset
1442 $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
1443 }
5379f7e3f7de Updated so that we have pubDate attributes for our RDF
Steve Kemp <steve@steve.org.uk>
parents: 78
diff changeset
1444 }
5379f7e3f7de Updated so that we have pubDate attributes for our RDF
Steve Kemp <steve@steve.org.uk>
parents: 78
diff changeset
1445
5379f7e3f7de Updated so that we have pubDate attributes for our RDF
Steve Kemp <steve@steve.org.uk>
parents: 78
diff changeset
1446
5379f7e3f7de Updated so that we have pubDate attributes for our RDF
Steve Kemp <steve@steve.org.uk>
parents: 78
diff changeset
1447 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1448 # Store the entry.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1449 #
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1450 $entry{'title'} = $title;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1451 $entry{'body'} = $body if ( $body );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1452 $entry{'date'} = $date;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1453 $entry{'tags'} = $entryTags if ( $entryTags );
33
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1454
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1455 #
57
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1456 # No 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 if ( !defined($entry{'title'}) ||
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1459 !length($entry{'title'}) )
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1460 {
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1461 my $basename = $filename;
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1462 if ( $basename =~ /(.*)\/(.*)/ )
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1463 {
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1464 $basename=$2;
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1465 }
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1466 if ( $basename =~ /^(.*)\.(.*)$/ )
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1467 {
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1468 $basename = $1;
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1469 }
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 $entry{'title'} = $basename;
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1472 }
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1473
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1474 #
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1475 # Get the link - after ensuring we have a title.
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1476 #
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1477 my $link = fileToTitle( $entry{'title'} );
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1478 $entry{'link'} = $link;
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1479
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1480
47c1f35b7f73 2007-10-25 18:36:32 by steve
steve
parents: 55
diff changeset
1481 #
33
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1482 # 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
1483 #
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1484 if ( defined( $cache ) )
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1485 {
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1486 $CONFIG{'verbose'} && print "memcache-set: $filename\n";
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1487 $cache->set( "file_$filename", \%entry );
a7324ac2c17e 2007-09-03 05:00:43 by steve
steve
parents: 27
diff changeset
1488 }
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1489 return \%entry;
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
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
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1494 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1495
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1496 Create a filename for an URL which does not contain unsafe
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1497 characters.
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 =end doc
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 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1502
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1503 sub fileToTitle
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1504 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1505 my( $file ) = ( @_ );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1506
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1507 if ( $file =~ /(.*)\.(.*)/ )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1508 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1509 $file = $1;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1510 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1511 $file =~ s/ /_/g;
78
cbac8af73d88 Updated sort ordering.
Steve Kemp <steve@steve.org.uk>
parents: 77
diff changeset
1512 $file =~ s/'/_/g;
cbac8af73d88 Updated sort ordering.
Steve Kemp <steve@steve.org.uk>
parents: 77
diff changeset
1513 $file =~ s/!/_/g;
cbac8af73d88 Updated sort ordering.
Steve Kemp <steve@steve.org.uk>
parents: 77
diff changeset
1514 $file =~ s/\?/_/g;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1515 $file =~ s/\///g;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1516 $file =~ s/\\//g;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1517
60
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
1518 my $suffix = $CONFIG{'suffix'} || ".html";
4af5f3ee59e8 2007-10-31 00:10:39 by steve
steve
parents: 59
diff changeset
1519 $file .= $suffix;
34
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1520
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1521 #
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1522 # Lower case?
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1523 #
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1524 $file = lc($file) if ( $CONFIG{'lower-case'} );
1fc5a48a9e7c 2007-09-03 05:13:09 by steve
steve
parents: 33
diff changeset
1525
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1526 return( $file );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1527
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1528 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1529
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1530
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1531
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1532 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1533
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1534 Load a template file.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1535
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1536 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1537
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1538 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1539
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1540 sub loadTemplate
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1541 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1542 my( $file, %params ) = (@_);
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1543
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1544 #
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1545 # Get the directory.
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1546 #
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1547 my $dir = $CONFIG{'theme-dir'};
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1548
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1549 #
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1550 # XML files go in theme-dir/xml/
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1551 #
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1552 if ( $file =~ /\.xml\./i )
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1553 {
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1554 $dir .= "/xml/";
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1555 }
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1556 else
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1557 {
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1558 $dir .= "/" . $CONFIG{'theme'} . "/";
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1559 }
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1560
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1561
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1562 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1563 # Make sure the file exists.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1564 #
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1565 if ( ! -e $dir . $file )
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1566 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1567 print <<EOF;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1568
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1569 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
1570
62
41386f30097e 2007-11-10 00:13:21 by steve
steve
parents: 61
diff changeset
1571 Theme : $CONFIG{'theme'}
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1572 Theme Directory: $CONFIG{'theme-dir'}
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1573
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1574 We expected to find $dir$file;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1575
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1576 Aborting.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1577 EOF
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1578 exit;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1579 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1580
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1581 my $t = HTML::Template->new( filename => $file,
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1582 path => $dir,
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1583 loop_context_vars => 1,
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1584 global_vars => 1,
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1585 %params );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1586
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1587 return( $t );
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1588 }
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1589
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1590
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1591
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1592 =begin doc
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1593
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1594 Set URL for top directory and output a template.
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1595
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1596 =end doc
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1597
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1598 =cut
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1599
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1600 sub outputTemplate
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1601 {
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1602 my( $template, $path ) = ( @_ );
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1603
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1604 #
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1605 # Select relative/absolute URL prefix.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1606 #
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1607 my $top;
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1608 if ( $CONFIG{'url_prefix'} )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1609 {
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1610 $top = $CONFIG{'url_prefix'};
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1611 }
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1612 else
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1613 {
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1614 $top = $path;
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1615 $top =~ s'[^/]+/'../'g;
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1616 $top =~ s'[^/]*$'';
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1617 }
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1618 $template->param( top => $top );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1619
39
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1620 open( OUTPUT, ">", "$CONFIG{'output'}/$path" );
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1621 print OUTPUT $template->output();
6b5d3f055a8c 2007-10-10 08:53:45 by steve
steve
parents: 37
diff changeset
1622 close( OUTPUT );
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1623 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1624
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1625
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1626
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1627 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1628
7
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
1629 Read the specified configuration file if it exists.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1630
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1631 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1632
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1633 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1634
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1635 sub readConfigurationFile
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1636 {
7
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
1637 my( $file ) = ( @_ );
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
1638
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
1639 #
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
1640 # If it doesn't exist ignore it.
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
1641 #
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1642 return if ( ! -e $file );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1643
7
d23fa8a50a7f 2007-08-13 23:02:02 by steve
steve
parents: 3
diff changeset
1644
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1645 my $line = "";
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 open( FILE, "<", $file ) or die "Cannot read file '$file' - $!";
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1648 while (defined($line = <FILE>) )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1649 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1650 chomp $line;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1651 if ($line =~ s/\\$//)
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1652 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1653 $line .= <FILE>;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1654 redo unless eof(FILE);
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1655 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1656
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1657 # Skip lines beginning with comments
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1658 next if ( $line =~ /^([ \t]*)\#/ );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1659
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1660 # Skip blank lines
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1661 next if ( length( $line ) < 1 );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1662
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1663 # Strip trailing comments.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1664 if ( $line =~ /(.*)\#(.*)/ )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1665 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1666 $line = $1;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1667 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1668
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1669 # Find variable settings
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1670 if ( $line =~ /([^=]+)=([^\n]+)/ )
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1671 {
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1672 my $key = $1;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1673 my $val = $2;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1674
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1675 # Strip leading and trailing whitespace.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1676 $key =~ s/^\s+//;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1677 $key =~ s/\s+$//;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1678 $val =~ s/^\s+//;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1679 $val =~ s/\s+$//;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1680
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1681 # command expansion?
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1682 if ( $val =~ /(.*)`([^`]+)`(.*)/ )
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 # store
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1685 my $pre = $1;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1686 my $cmd = $2;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1687 my $post = $3;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1688
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1689 # get output
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1690 my $output = `$cmd`;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1691 chomp( $output );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1692
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1693 # build up replacement.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1694 $val = $pre . $output . $post;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1695 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1696
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1697 # Store value.
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1698 $CONFIG{ $key } = $val;
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1699 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1700 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1701
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1702 close( FILE );
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1703 }
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1704
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1705
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1706
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1707 =begin doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1708
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1709 Sanity check our arguments:
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1710
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1711 1. Make sure we have a theme-directory
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1712
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1713 2. Make sure we have a theme.
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1714
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1715 =end doc
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1716
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1717 =cut
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1718
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1719 sub sanityCheckArguments
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1720 {
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1721 if ( !$CONFIG{'theme-dir'} )
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1722 {
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1723 print <<EOF;
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1724
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1725 Error - You don't have a theme directory setup.
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1726
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1727 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
1728 file:
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1729
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1730 theme-dir = /path/to/use/
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1731 EOF
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1732
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1733 exit;
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1734 }
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1735
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1736 if ( ! -d $CONFIG{'theme-dir'} )
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1737 {
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1738 print "The theme directory you specified doesn't exist:\n";
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1739 print "\t" . $CONFIG{'theme-dir'} . "\n";
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1740 exit;
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1741 }
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1742
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1743 if ( !$CONFIG{'theme'} )
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1744 {
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1745 print <<EOF;
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1746
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1747 You've not specified a theme.
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1748
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1749 Please specify --theme=xx
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1750
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1751 Or add this to your configuration file:
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1752
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1753 theme = xx
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1754
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1755
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1756 [You may list themes with --list-themes]
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1757
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1758 EOF
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1759
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1760 exit;
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1761 }
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1762
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1763
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1764 if ( ! -d $CONFIG{'theme-dir'} . "/" . $CONFIG{'theme'} )
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1765 {
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1766 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
1767 print "\tTheme :" . $CONFIG{'theme'} . "\n";
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1768 print "\tTheme dir:" . $CONFIG{'theme-dir'} . "\n";
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1769 print "\tExpected :" . $CONFIG{'theme-dir'} . "/" . $CONFIG{'theme'} . "\n";
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1770 exit;
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1771 }
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1772
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1773 }
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1774
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1775
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1776
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1777
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1778 =begin doc
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1779
12
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1780 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
1781 in the output.
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1782
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1783 This only works for a top-level target directory.
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1784
46
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
1785 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
1786
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1787 =end doc
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1788
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1789 =cut
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1790
12
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1791 sub copyStaticFiles
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1792 {
12
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1793 #
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1794 # Soure and destination for the copy
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1795 #
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1796 my $input = $CONFIG{'theme-dir'} . "/" . $CONFIG{'theme'};
12
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1797 my $output = $CONFIG{'output'};
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1798
12
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1799 foreach my $pattern ( qw! *.css *.jpg *.gif *.png *.js *.ico ! )
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1800 {
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1801 foreach my $file ( glob( $input . "/" . $pattern ) )
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1802 {
13
a3d2dca6ada3 2007-08-14 14:22:05 by steve
steve
parents: 12
diff changeset
1803 #
a3d2dca6ada3 2007-08-14 14:22:05 by steve
steve
parents: 12
diff changeset
1804 # Get the name of the file.
a3d2dca6ada3 2007-08-14 14:22:05 by steve
steve
parents: 12
diff changeset
1805 #
a3d2dca6ada3 2007-08-14 14:22:05 by steve
steve
parents: 12
diff changeset
1806 if ( $file =~ /(.*)\/(.*)/ )
a3d2dca6ada3 2007-08-14 14:22:05 by steve
steve
parents: 12
diff changeset
1807 {
a3d2dca6ada3 2007-08-14 14:22:05 by steve
steve
parents: 12
diff changeset
1808 $file = $2;
a3d2dca6ada3 2007-08-14 14:22:05 by steve
steve
parents: 12
diff changeset
1809 }
46
081d06e16a36 2007-10-10 20:09:24 by steve
steve
parents: 45
diff changeset
1810 if ( $CONFIG{'force'} || ( ! -e "$output/$file" ) )
12
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1811 {
13
a3d2dca6ada3 2007-08-14 14:22:05 by steve
steve
parents: 12
diff changeset
1812 $CONFIG{'verbose'} && print "Copying static file: $file\n";
a3d2dca6ada3 2007-08-14 14:22:05 by steve
steve
parents: 12
diff changeset
1813 copy( "$input/$file", "$output/$file" );
12
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1814 }
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1815 }
9efe0b8729a8 2007-08-14 14:01:15 by steve
steve
parents: 11
diff changeset
1816 }
1
bc8961a81af6 2007-08-13 22:53:14 by steve
steve
parents:
diff changeset
1817 }
16
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1818
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1819
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1820
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1821 =begin doc
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1822
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1823 Convert from markdown to HTML.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1824
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1825 =end doc
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1826
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1827 =cut
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1828
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1829 sub markdown2HTML
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1830 {
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1831 my( $text ) = (@_);
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1832
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1833 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1834 # Make sure we have the module installed. Use eval to
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1835 # avoid making this mandatory.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1836 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1837 my $test = "use Text::Markdown;";
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1838
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1839 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1840 # Test loading the module.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1841 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1842 eval( $test );
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1843 if ( $@ )
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1844 {
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1845 print <<EOF;
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1846
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1847 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
1848 Perl module Text::Markdown is not installed.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1849
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1850 Aborting.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1851 EOF
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1852 exit;
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1853 }
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1854
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1855 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1856 # Convert.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1857 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1858 $text = Text::Markdown::Markdown( $text );
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1859 return( $text );
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1860 }
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1861
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1862
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1863
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1864 =begin doc
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1865
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1866 Convert from textile to HTML.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1867
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1868 =end doc
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1869
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1870 =cut
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1871
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1872 sub textile2HTML
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1873 {
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1874 my( $text ) = (@_);
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1875
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1876 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1877 # Make sure we have the module installed. Use eval to
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1878 # avoid making this mandatory.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1879 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1880 my $test = "use Text::Textile;";
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1881
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1882 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1883 # Test loading the module.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1884 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1885 eval( $test );
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1886 if ( $@ )
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1887 {
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1888 print <<EOF;
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1889
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1890 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
1891 Perl module Text::Textile is not installed.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1892
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1893 Aborting.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1894 EOF
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1895 exit;
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1896 }
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1897
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1898 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1899 # Convert.
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1900 #
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1901 $text = Text::Textile::textile( $text );
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1902 return( $text );
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1903 }
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1904
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1905
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1906
f0884c3c035a 2007-08-14 17:58:18 by steve
steve
parents: 13
diff changeset
1907
61
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1908 sub listThemes
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1909 {
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1910 my( $dir ) = ( @_ );
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1911
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1912 $CONFIG{'verbose'} && print "Listhing themes beneath : $dir\n";
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1913
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1914 foreach my $name ( sort( glob( $dir . "/*" ) ) )
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1915 {
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1916 next unless( -d $name );
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1917
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1918 next if ( $name =~ /\/xml$/ );
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1919
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1920 if ( $name =~ /^(.*)\/([^\/\\]*)$/ )
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1921 {
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1922 print $2 . "\n";
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1923 }
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1924 }
89747520b861 2007-11-10 00:01:04 by steve
steve
parents: 60
diff changeset
1925 }
66
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1926
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1927
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1928
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1929 =begin doc
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1930
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1931 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
1932 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
1933
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1934 =end doc
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1935
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1936 =cut
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1937
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1938 sub createCalendar
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1939 {
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1940 #
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1941 # 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
1942 #
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1943 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
1944 eval( $test );
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1945
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1946 #
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1947 # If there was an error, or the calander is disabled then
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1948 # return undef.
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1949 #
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1950 if ( ( $@ ) || ( $CONFIG{'no-calendar'} ) )
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1951 {
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1952 print "Calander not available: $@";
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1953 return undef;
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1954 }
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1955
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1956 #
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1957 # Continue
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1958 #
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1959 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
1960
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1961 # configuration of the calendar
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1962 $cal->border(0);
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1963 $cal->weekstartsonmonday(1);
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1964 $cal->showweekdayheaders(1);
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1965 $cal->sunday('Sun');
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1966 $cal->saturday('Sat');
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1967 $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
1968
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1969 # 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
1970 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
1971
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1972 foreach my $f (%data)
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1973 {
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1974 my $h = $data{$f};
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1975 next if ( !$h );
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1976 my $entrydate = $h->{'date'};
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1977
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1978 if ( !$entrydate )
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1979 {
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1980 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
1981 $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
1982 = stat($f);
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1983
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1984 $entrydate = localtime( $ctime );
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1985 }
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1986
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1987 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
1988 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
1989
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1990
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1991 if ($month eq $curmonth)
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1992 {
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1993 $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
1994 }
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1995 }
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1996 return ($cal);
fbeda752caa7 Updated so that there is a calander optionally available.
Steve Kemp <steve@steve.org.uk>
parents: 65
diff changeset
1997 }