NAME
Wiki::Toolkit::Plugin::Categoriser - Category management for Wiki::Toolkit.
DESCRIPTION
Uses node metadata to build a model of how nodes are related to each other in terms of categories.
SYNOPSIS
use Wiki::Toolkit;
use Wiki::Toolkit::Plugin::Categoriser;
my $wiki = Wiki::Toolkit->new( ... );
$wiki->write_node( "Red Lion", "nice beer", $checksum,
{ category => [ "Pubs", "Pub Food" ] }
) or die "Can't write node";
$wiki->write_node( "Holborn Station", "busy at peak times", $checksum,
{ category => "Tube Station" }
) or die "Can't write node";
my $categoriser = Wiki::Toolkit::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 = Wiki::Toolkit::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", "mmm food", $checksum, { category => [ "Pubs", "Food", "Category" ] } ) or die "Can't write node"; my @subcats = $categoriser->subcategories( category => "Pubs" ); # will return ( "Pub Food" ) # Or if you prefer CamelCase node names: $wiki->write_node( "CategoryPubFood", "mmm food", $checksum, { category => [ "Pubs", "Food", "Category" ] } ) or die "Can't write node"; my @subcats = $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 @cats = $categoriser->categories( node => "Holborn Station" );
Returns an array of category names in no particular order.
SEE ALSO
AUTHOR
Kake Pugh (kake@earth.li). The Wiki::Toolkit team (http://www.wiki-toolkit.org/)
COPYRIGHT
Copyright (C) 2003-4 Kake Pugh. All Rights Reserved.
Copyright (C) 2006-2009 the Wiki::Toolkit team. All Rights Reserved.
This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.