NAME

Articulate::LocationSpecification - represent a specification

DESCRIPTION

locspec ['zone', '*', 'article', 'hello-world']
locspec 'zone/*/article/hello-world' # same thing

An object class which represents a specification - like a 'pattern' or 'glob', and provides methods so that it can be compared with locations. It is similar to Articulate::Location, and stringifies to the 'file path' representation.

The main use of this is to determine whether a user has access to a resource based on rules (e.g. Articulate::Authorisation::LocationBased).

FUNCTIONS

locspec

locspec is a constructor. It takes either a string (in the form of a path) or an arrayref. Either will be stored as an arrayref in the path attribute.

ATTRIBUTE

path

An arrayref representing the path to the location specification. This is used for overloaded array dereferencing.

METHODS

location

$locspec->location->location # same as $locspec

This method always returns the object itself.

to_file_path

Joins the contents of path on / and returns the result. This is used for overloaded stringification.

matches

locspec('/zone/*')->matches(loc('/zone/public')) # true
locspec('/zone/*')->matches(loc('/')) # false
locspec('/zone/*')->matches(loc('/zone/public/article/hello-world')) # false

Determines if the location given as the first argument matches the locspec.

matches_ancestor_of

locspec('/zone/*')->matches_ancestor_of(loc('/zone/public')) # true
locspec('/zone/*')->matches_ancestor_of(loc('/')) # false
locspec('/zone/*')->matches_ancestor_of(loc('/zone/public/article/hello-world')) # true

Determines if the location given as the first argument - or any ancestor thereof - matches the locspec.

matches_descendant_of

locspec('/zone/*')->matches_descendant_of(loc('/zone/public')) # true
locspec('/zone/*')->matches_descendant_of(loc('/')) # true
locspec('/zone/*')->matches_descendant_of(loc('/zone/public/article/hello-world')) # false

Determines if the location given as the first argument - or any descendant thereof - matches the locspec.

SEE ALSO