NAME
Data::Object::Space
ABSTRACT
Data-Object Space Class
SYNOPSIS
use Data::Object::Space;
my $space = Data::Object::Space->new('data/object');
"$space"
# Data::Object
$space->name;
# Data::Object
$space->path;
# Data/Object
$space->file;
# Data/Object.pm
$space->children;
# ['Data/Object/Array.pm', ...]
$space->siblings;
# ['Data/Dumper.pm', ...]
$space->load;
# Data::Object
DESCRIPTION
This package provides methods for parsing and manipulating package namespaces.
LIBRARIES
This package uses type constraints defined by:
METHODS
This package implements the following methods.
append
append(Str $arg1) : Object
The append method modifies the object by appending to the package namespace parts.
array
array(Str $arg1) : Any
The array method returns the value for the given package array variable name.
arrays
arrays() : ArrayRef
The arrays method searches the package namespace for arrays and returns their names.
base
base() : Str
The base method returns the last segment of the package namespace parts.
bless
bless(Any $arg1 = {}) : Object
The bless method blesses the given value into the package namespace and returns an object. If no value is given, an empty hashref is used.
build
build(Any @args) : Object
The build method attempts to call new
on the package namespace and if successful returns the resulting object.
call
call(Any @args) : Any
The call method attempts to call the given subroutine on the package namespace and if successful returns the resulting value.
child
child(Str $arg1) : Object
The child method returns a new Data::Object::Space object for the child package namespace.
children
children() : ArrayRef
The children method searches %INC
and @INC
and retuns a list of Data::Object::Space objects for each child namespace found (one level deep).
cop
cop(Any @args) : CodeRef
The cop method attempts to curry the given subroutine on the package namespace and if successful returns a closure.
file
file(Str $arg1 = '%s') : Str
The file method returns a file string for the package namespace. This method optionally takes a format string.
- file example
-
# given $space (Foo::Bar) $space->file(); # Foo/Bar.pm $space->file('lib/%s'); # lib/Foo/Bar.pm
functions
functions() : ArrayRef
The functions method searches the package namespace for functions and returns their names.
hash
hash(Str $arg1) : Any
The hashes method returns the value for the given package hash variable name.
hashes
hashes() : ArrayRef
The hashes method searches the package namespace for hashes and returns their names.
id
id() : Str
The id method returns the fully-qualified package name as a label.
load
load() : Str
The load method check whether the package namespace is already loaded and if not attempts to load the package. If the package is not loaded and is not loadable, this method will throw an exception using croak
. If the package is loadable, this method returns truthy with the package name.
- load example
-
# given $space (Foo::Bar) $space->load(); # throws exception, unless Foo::Bar is loadable
methods
methods() : ArrayRef
The methods method searches the package namespace for methods and returns their names.
name
name() : Str
The name method returns the fully-qualified package name.
parent
parent() : Str
The parent method returns a new Data::Object::Space object for the parent package namespace.
parse
parse(Str $arg1) : ArrayRef
The parse method parses the string argument and returns an arrayref of package namespace segments (parts) suitable for object construction.
- parse example
-
# given Foo::Bar $space->parse('Foo::Bar'); # ['Foo', 'Bar'] $space->parse('Foo/Bar'); # ['Foo', 'Bar'] $space->parse('Foo\Bar'); # ['Foo', 'Bar'] $space->parse('foo-bar'); # ['FooBar'] $space->parse('foo_bar'); # ['FooBar']
parts
parts() : ArrayRef
The parts method returns an arrayref of package namespace segments (parts).
path
path(Str $arg1) : Str
The path method returns a path string for the package namespace. This method optionally takes a format string.
- path example
-
# given $space (Foo::Bar) $space->path(); # Foo/Bar $space->path('lib/%s'); # lib/Foo/Bar
prepend
prepend(Str $arg1) : Object
The prepend method modifies the object by prepending to the package namespace parts.
root
root() : Str
The root method returns the root package namespace segments (parts). Sometimes separating the root
from the parts
helps identify how subsequent child objects were derived.
routine
routine(Str $arg1) : CodeRef
The routine method returns the subroutine reference for the given subroutine name.
routines
routines() : ArrayRef
The routines method searches the package namespace for routines and returns their names.
scalar
scalar(Str $arg1) : Any
The scalar method returns the value for the given package scalar variable name.
scalars
scalars() : ArrayRef
The scalars method searches the package namespace for scalars and returns their names.
sibling
sibling(Str $arg1) : Object
The sibling method returns a new Data::Object::Space object for the sibling package namespace.
siblings
siblings() : ArrayRef
The siblings method searches %INC
and @INC
and retuns a list of Data::Object::Space objects for each sibling namespace found (one level deep).
type
type() : Str
The type method returns the parsed filetype and defaults to pm
. This value is used when calling the file
method.
used
used() : ArrayRef | Undef
The used method searches %INC
for the package namespace and if found returns the filepath and complete filepath for the loaded package, otherwise returns undef.
variables
variables() : ArrayRef
The variables method searches the package namespace for variables and returns their names.
CREDITS
Al Newkirk, +319
Anthony Brummett, +10
Adam Hopkins, +2
José Joaquín Atria, +1
AUTHOR
Al Newkirk, awncorp@cpan.org
LICENSE
Copyright (C) 2011-2019, Al Newkirk, et al.
This is free software; you can redistribute it and/or modify it under the terms of the The Apache License, Version 2.0, as elucidated here, https://github.com/iamalnewkirk/do/blob/master/LICENSE.
PROJECT
SEE ALSO
To get the most out of this distribution, consider reading the following: