X-Git-Url: https://git.stderr.nl/gitweb?p=matthijs%2Fupstream%2Fblosxom-plugins.git;a=blobdiff_plain;f=gavinc%2Fstorytags;h=e1426a8b1b901c222dfe275dc55f6183e25f3c9e;hp=148a48f5c2d70dc24d048efec69b527231c334f1;hb=HEAD;hpb=e1adedc9d0a948a755ac648befbf5a3415072e5a diff --git a/gavinc/storytags b/gavinc/storytags index 148a48f..e1426a8 100644 --- a/gavinc/storytags +++ b/gavinc/storytags @@ -1,6 +1,6 @@ # Blosxom Plugin: storytags # Author(s): Gavin Carr -# Version: 0.001000 +# Version: 0.003000 # Documentation: See the bottom of this file or type: perldoc storytags # Requires: tags # Follows: tags @@ -12,15 +12,18 @@ use strict; # Uncomment next line to enable debug output (don't uncomment debug() lines) #use Blosxom::Debug debug_level => 1; -use vars qw($taglist); +use vars qw(%config $taglist @taglist); # --- Configuration variables ----- +%config = (); + # Formatting strings -my $prefix = 'Tags: '; -my $suffix = '. '; +$config{prefix} = 'Tags: '; +$config{suffix} = '. '; # --------------------------------- +# __END_CONFIG__ $taglist = ''; @@ -31,26 +34,28 @@ sub story { my ($pkg, $path, $filename, $story_ref, $title_ref, $body_ref) = @_; return 1 unless $tags::tag_cache - && ref $tags::tag_cache - && keys %{ $tags::tag_cache }; + && ref $tags::tag_cache + && keys %{ $tags::tag_cache }; return 1 unless defined $tags::tag_cache->{"$path/$filename"}; - $taglist = _format_taglist($tags::tag_cache->{"$path/$filename"}->{tags}); + @taglist = (); + @taglist = sort { lc $a cmp lc $b } split /\s*,\s*/, + $tags::tag_cache->{"$path/$filename"}->{tags} + if defined $tags::tag_cache->{"$path/$filename"}->{tags}; + $taglist = _format_taglist( \@taglist ); return 1; } sub _format_taglist { my ($tags) = @_; - $tags = '' unless defined $tags; - my @tags = sort { lc $a cmp lc $b } split /\s*,\s*/, $tags; - return '' unless @tags; - return $prefix + return '' unless @$tags; + return $config{prefix} . join(', ', map { qq() } - @tags + @$tags ) - . $suffix; + . $config{suffix}; } 1; @@ -60,16 +65,19 @@ __END__ =head1 NAME storytags - blosxom plugin to format a per-story $storytags::taglist string +and @storytags::taglist array of tags =head1 DESCRIPTION L is a blosxom plugin to format a per-story $storytags::taglist -string. The string is a comma-separated list of the tags defined for the -story, prefixed by $storytags::prefix, and suffixed by $storytags::suffix. -If no tags are defined, then $taglist will be the empty string '' (i.e. no -prefix and suffix are added). - -The default values for $prefix and $suffix are 'Tags: ' and '. ' +string, and a @storytags::taglist array of tags. The $taglist is a +comma-separated list of the tags defined for the story, prefixed by +$config{prefix}, and suffixed by $config{suffix}. If no tags are +defined, then $taglist will be the empty string '' (i.e. no prefix and +suffix are added). @taglist is a simple array of the tags for the story, +and an empty array if none are set. + +The default values for 'prefix' and 'suffix' are 'Tags: ' and '. ' respectively, so a typical $taglist might look like: Tags: dogs, cats, pets.