Wiki::Toolkit::Plugin::Categoriser(3pm)

Wiki::Toolkit::Plugin::Categoriser3pm

Category management for wiki::toolkit.

Usage

  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" );

Overview

Uses node metadata to build a model of how nodes are related to each other in terms of categories.

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 as "pubs". 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 category "Bar", write a node called any one of "Foo", "Category Foo", or "CategoryFoo" with metadata indicating that it's in categories "Bar" and "Category".

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.

Releases

10 releases since Debian 4.0 (Etch); the text changed 3 times.

  1. 4.0
  2. 5.0
  3. 6.0–10
  4. 11–13

Author

Kake Pugh ([email protected]). The Wiki::Toolkit team (http://www.wiki-toolkit.org/)

From libwiki-toolkit-plugin-categoriser-perl 0.08-2 in Debian 13 (Trixie). Parsed by carta from the page's man source.