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;
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.