# Blosxom Plugin: storytags
# Author(s): Gavin Carr <gavin@openfusion.com.au>
-# Version: 0.001000
+# Version: 0.002000
# Documentation: See the bottom of this file or type: perldoc storytags
# Requires: tags
# Follows: tags
# 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($taglist @taglist);
# --- Configuration variables -----
my $suffix = '. ';
# ---------------------------------
+# __END_CONFIG__
$taglist = '';
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 '' unless @$tags;
return $prefix
. join(', ',
map { qq(<a href="$blosxom::url/tags/$_" rel="tag">$_</a>) }
- @tags
+ @$tags
)
. $suffix;
}
=head1 NAME
storytags - blosxom plugin to format a per-story $storytags::taglist string
+and @storytags::taglist array of tags
=head1 DESCRIPTION
L<storytags> 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).
+string, and a @storytags::taglist array of tags. The $taglist 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). @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: