NAME

Path::FindDev::Object - Object oriented guts to FindDev

VERSION

version 0.3.1

SYNOPSIS

require Path::FindDev::Object;
my $finder = Path::FindDev::Object->new();
my $dev = $finder->find_dev($path);

DESCRIPTION

This module implements the innards of Path::FindDev, and is only recommended for use if the Exporter API is insufficient for your needs.

METHODS

has_set

Determines if the set attribute exists

has_uplevel_max

Determines if the uplevel_max attribute is provided.

find_dev

Find a parent at, or above $OtherPath that resembles a devel directory.

my $path = $object->find_dev( $OtherPath );

ATTRIBUTES

set

(optional)

The Path::IsDev::HeuristicSet subclass for your desired Heuristics.

os_root

A Path::Tiny object for File::Spec->rootdir

uplevel_max

If provided, limits the number of uplevel iterations done.

( that is, limits the number of times it will step up the hierarchy )

nest_retry

The the number of dev directories to ignore in the hierarchy.

This is provided in the event you have a dev directory within a dev directory, and you wish to resolve an outer directory instead of an inner one.

By default, this is 0, or "stop at the first dev directory"

isdev

The Path::IsDev object that checks nodes for dev-ishness.

PRIVATE METHODS

_instance_id

An opportunistic sequence number for help with debug messages.

Note: This is not guaranteed to be unique per instance, only guaranteed to be constant within the life of the object.

Based on refaddr, and giving out new ids when new refaddr's are seen.

my $id = $object->_instance_id;

BUILD

BUILD is an implementation detail of Moo/Moose.

This module hooks BUILD to give a self report of the object to *STDERR after ->new when under $DEBUG

_debug

The debugger callback.

export PATH_FINDDEV_DEBUG=1

to get debug info.

$object->_debug($message);

_error

The error reporting callback.

$object->_error($message);

_step

Inner code path of tree walking.

my ($dev_levels, $uplevels ) = (0,0);

my $result = $object->_step( path($somepath), \$dev_levels, \$uplevels );

$result->{type} eq 'stop'   # if flow control should end
$result->{type} eq 'next'   # if flow control should ascend to parent
$result->{type} eq 'found'  # if flow control has found the "final" dev directory

AUTHOR

Kent Fredric <kentfredric@gmail.com>

COPYRIGHT AND LICENSE

This software is copyright (c) 2013 by Kent Fredric <kentfredric@gmail.com>.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.