35c6353980fe98f2ea438f8f7304635ebfbf8665
[matthijs/upstream/blosxom-plugins.git] / gavinc / flavourpathinfo
1 # Blosxom Plugin: flavourpathinfo
2 # Author(s): Gavin Carr <gavin@openfusion.com.au>
3 # Version: 0.001000
4 # Documentation: 'perldoc flavourpathinfo'
5
6 package flavourpathinfo;
7
8 use strict;
9
10 # --- Configurable variables -----
11
12 my $debug_level = 0;
13
14 # --------------------------------
15
16 my $package = 'flavourpathinfo';
17 sub debug {
18     my ($level, @msg) = @_;
19
20     if ($debug_level >= $level) {
21         print STDERR "$package debug $level: @msg\n";
22     }
23 }
24
25 sub start { 
26     my $path_info = $blosxom::path_info;
27     return 1 if -e "$blosxom::datadir/$path_info";
28     debug(1, "original path_info: $path_info");
29
30     $path_info =~ s!/$!!;
31     if ($path_info =~ m!^(.*)/([^/]+)$!) {
32         my $flavour = $2;
33         $path_info = "$1.$flavour";
34         my $path_file = "$1.$blosxom::file_extension";
35
36         debug(1, "path_file: $path_file");
37         debug(1, "munged path_info: $path_info");
38
39         if (-f "$blosxom::datadir/$path_file") {
40             debug(1, "munged \$path_info exists - updating \$blosxom::path_info");
41             $blosxom::path_info = $path_info;
42             $blosxom::flavour = $flavour;
43             $blosxom::path_info_yr = undef;
44         }
45     }
46
47     return 1; 
48 }
49
50 1;
51
52 __END__
53
54 =head1 NAME
55
56 flavourpathinfo - allows flavour designation via a trailing path component
57 instead of via a file extension
58
59 =head1 DESCRIPTION
60
61 flavourpathinfo is a syntactic sugar plugin that allows flavour designation 
62 via a trailing path component instead of via a file extension e.g.
63
64     http://blog.example.com/category/post/html
65     http://blog.example.com/category/post/atom
66     http://blog.example.com/category/post/trackback
67
68 instead of the more typical:
69
70     http://blog.example.com/category/post.html
71     http://blog.example.com/category/post.atom
72     http://blog.example.com/category/post.trackback
73
74 =head1 USAGE
75
76 Should be loaded early as it manipulates $blosxom::path_info
77 e.g. as 00flavourpathinfo.
78
79 =head1 SEE ALSO
80
81 extensionless
82
83 Blosxom: http://blosxom.sourceforge.net/
84
85 =head1 BUGS
86
87 Please report bugs either directly to the author or to the blosxom 
88 development mailing list: <blosxom-devel@lists.sourceforge.net>.
89
90 =head1 AUTHOR
91
92 Gavin Carr <gavin@openfusion.com.au>, http://www.openfusion.net/
93
94 =head1 LICENSE
95
96 Copyright 2007 Gavin Carr.
97
98 This plugin is licensed under the same terms as blosxom itself i.e.
99
100 Permission is hereby granted, free of charge, to any person obtaining a
101 copy of this software and associated documentation files (the "Software"),
102 to deal in the Software without restriction, including without limitation
103 the rights to use, copy, modify, merge, publish, distribute, sublicense,
104 and/or sell copies of the Software, and to permit persons to whom the
105 Software is furnished to do so, subject to the following conditions:
106
107 The above copyright notice and this permission notice shall be included
108 in all copies or substantial portions of the Software.
109
110 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
111 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
112 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
113 THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
114 OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
115 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
116 OTHER DEALINGS IN THE SOFTWARE.
117
118 =cut
119
120 # vim:ft=perl
121