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::Article
s 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
.