NAME
CGI::Wiki::Plugin::Categoriser - Category management for CGI::Wiki.
DESCRIPTION
Uses node metadata to build a model of how nodes are related to each other in terms of categories.
SYNOPSIS
use CGI::Wiki;
use CGI::Wiki::Plugin::Categoriser;
my $wiki = CGI::Wiki->new( ... );
$wiki->write_node( "Red Lion", "nice beer", $checksum,
{ category => [ "Pubs", "Pub Food" ] } );
$wiki->write_node( "Holborn Station", "busy at peak times", $checksum,
{ category => "Tube Station" } );
my $categoriser = CGI::Wiki::Plugin::Categoriser->new;
$wiki->register_plugin( plugin => $categoriser );
my $isa_pub = $categoriser->in_category( category => "Pubs",
node => "Red Lion" );
my @categories = $categoriser->categories( node => "Holborn Station" );
METHODS
- new
-
my $categoriser = CGI::Wiki::Plugin::Categoriser->new; $wiki->register_plugin( plugin => $categoriser );
- in_category
-
my $isa_pub = $categoriser->in_category( category => "Pubs", node => "Red Lion" );
Returns true if the node is in the category, and false otherwise. Note that this is case-insensitive, so
Pubs
is the same category aspubs
. I might do something to make it plural-insensitive at some point too. - subcategories
-
$wiki->write_node( "Category Pub Food", "pubs that serve food", $checksum, { category => [ "Pubs", "Food", "Category" ] } ); my @subcategories = $categoriser->subcategories( category => "Pubs" ); # will return ( "Pub Food" ) # Or if you prefer CamelCase node names: $wiki->write_node( "CategoryPubFood", "pubs that serve food", $checksum, { category => [ "Pubs", "Food", "Category" ] } ); my @subcategories = $categoriser->subcategories( category => "Pubs" ); # will return ( "PubFood" )
To add a subcategory
Foo
to a given categoryBar
, write a node called any one ofFoo
,Category Foo
, orCategoryFoo
with metadata indicating that it's in categoriesBar
andCategory
.Yes, this pays specific attention to the Wiki convention of defining categories by prefacing the category name with
Category
and creating a node by that name. If different behaviour is required we should probably implement it using an optional argument in the constructor. - categories
-
my @categories = $categoriser->categories( node => "Holborn Station" );
Returns an array of category names in no particular order.
SEE ALSO
AUTHOR
Kake Pugh (kake@earth.li).
COPYRIGHT
Copyright (C) 2003 Kake Pugh. All Rights Reserved.
This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
TODO
Improve subcategories, do category hierarchy.
1 POD Error
The following errors were encountered while parsing the POD:
- Around line 138:
You forgot a '=back' before '=head1'