NAME
Articulate::LocationSpecification - represent a specification
DESCRIPTION
new_location_specification ['zone', '*', 'article', 'hello-world']
new_location_specification '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
new_location_specification
new_location_specification
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
new_location_specification('/zone/*')->matches(new_location('/zone/public')) # true
new_location_specification('/zone/*')->matches(new_location('/')) # false
new_location_specification('/zone/*')->matches(new_location('/zone/public/article/hello-world')) # false
Determines if the location given as the first argument matches the locspec.
matches_ancestor_of
new_location_specification('/zone/*')->matches_ancestor_of(new_location('/zone/public')) # true
new_location_specification('/zone/*')->matches_ancestor_of(new_location('/')) # false
new_location_specification('/zone/*')->matches_ancestor_of(new_location('/zone/public/article/hello-world')) # true
Determines if the location given as the first argument - or any ancestor thereof - matches the new_location_specification.
matches_descendant_of
new_location_specification('/zone/*')->matches_descendant_of(new_location('/zone/public')) # true
new_location_specification('/zone/*')->matches_descendant_of(new_location('/')) # true
new_location_specification('/zone/*')->matches_descendant_of(new_location('/zone/public/article/hello-world')) # false
Determines if the location given as the first argument - or any descendant thereof - matches the new_location_specification.