logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Wiki::Toolkit::Plugin::Categoriser - Category management for Wiki::Toolkit.

Author

       Kake Pugh (kake@earth.li).  The Wiki::Toolkit team (http://www.wiki-toolkit.org/)

Description

       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.

Name

       Wiki::Toolkit::Plugin::Categoriser - Category management for Wiki::Toolkit.

See Also

       •   Wiki::Toolkit

       •   Wiki::Toolkit::Plugin

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

See Also