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
Pubsis 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
Footo a given categoryBar, write a node called any one ofFoo,Category Foo, orCategoryFoowith metadata indicating that it's in categoriesBarandCategory.Yes, this pays specific attention to the Wiki convention of defining categories by prefacing the category name with
Categoryand 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'