NAME

Articulate::Construction::LocationBased - Create an item based on its location

ATTRIBUTES

types

This should be a hashref mapping types to class names to be used in constructors, where a type in this case is the penultimate endpoint of locations with an even number of parts

So:

article: Articulate::Item::Article

...would result in /article/foo or zone/public/article/foo becoming Articulate::Item::Articles but not article, zone/article, or zone/public/article.

METHODS

construct

$self->construct( {
  location => 'zone/public/article/hello-world',
  meta     => { ... }
  content  => " ... "
} );

Attempts to construct the item. Determines the desired class based on the mapping in the types attribute, then calls $class->new($args) on the class. Returns undef if no appropriate class found.

In the above example, $self->types->{article} would be consulted.

If the location is root or not a multiple of 2 (e.g. zone/public is even and a zone but zone/public/article is odd), returns undef.