Data::Object::Space
Data-Object Space Class
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
This package provides methods for parsing and manipulating package namespaces.
This package uses type constraints defined by:
Data::Object::Library
This package implements the following methods.
append(Str $arg1) : Object
The append method modifies the object by appending to the package namespace parts.
# given $space (Foo::Bar) $space->append('baz'); "$space" # Foo::Bar::Baz
array(Str $arg1) : Any
The array method returns the value for the given package array variable name.
# given Foo/Bar $space->array('EXPORT'); # (,...)
arrays() : ArrayRef
The arrays method searches the package namespace for arrays and returns their names.
# given Foo/Bar $space->arrays(); # [,...]
base() : Str
The base method returns the last segment of the package namespace parts.
# given $space (Foo::Bar) $space->base(); # Bar
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.
# given $space (Foo::Bar) $space->bless(); # bless({}, 'Foo::Bar')
build(Any @args) : Object
The build method attempts to call new on the package namespace and if successful returns the resulting object.
new
# given $space (Foo::Bar) $space->build(@args); # bless(..., 'Foo::Bar')
call(Any @args) : Any
The call method attempts to call the given subroutine on the package namespace and if successful returns the resulting value.
# given $space (Foo::Bar) $space->call(@args); # ...
child(Str $arg1) : Object
The child method returns a new Data::Object::Space object for the child package namespace.
# given $space (Foo::Bar) $space->child('baz'); # Foo::Bar::Baz
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).
%INC
@INC
# given $space (Foo::Bar) $space->children(); # ['Foo::Bar::Baz', ...]
cop(Any @args) : CodeRef
The cop method attempts to curry the given subroutine on the package namespace and if successful returns a closure.
# given $space (Foo::Bar) $space->cop(@args); # ...
file(Str $arg1 = '%s') : Str
The file method returns a file string for the package namespace. This method optionally takes a format string.
# given $space (Foo::Bar) $space->file(); # Foo/Bar.pm $space->file('lib/%s'); # lib/Foo/Bar.pm
functions() : ArrayRef
The functions method searches the package namespace for functions and returns their names.
# given Foo/Bar $space->functions(); # [,...]
hash(Str $arg1) : Any
The hashes method returns the value for the given package hash variable name.
# given Foo/Bar $space->hash('EXPORT_TAGS'); # (,...)
hashes() : ArrayRef
The hashes method searches the package namespace for hashes and returns their names.
# given Foo/Bar $space->hashes(); # [,...]
id() : Str
The id method returns the fully-qualified package name as a label.
# given $space (Foo::Bar) $space->id; # Foo_Bar
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.
croak
# given $space (Foo::Bar) $space->load(); # throws exception, unless Foo::Bar is loadable
methods() : ArrayRef
The methods method searches the package namespace for methods and returns their names.
# given Foo/Bar $space->methods(); # [,...]
name() : Str
The name method returns the fully-qualified package name.
# given $space (Foo::Bar) $space->name; # Foo::Bar
parent() : Str
The parent method returns a new Data::Object::Space object for the parent package namespace.
# given $space (Foo::Bar) $space->parent(); # Foo
parse(Str $arg1) : ArrayRef
The parse method parses the string argument and returns an arrayref of package namespace segments (parts) suitable for object construction.
# 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() : ArrayRef
The parts method returns an arrayref of package namespace segments (parts).
# given $space (Foo::Bar) $space->parts(); # ['Foo', 'Bar']
path(Str $arg1) : Str
The path method returns a path string for the package namespace. This method optionally takes a format string.
# given $space (Foo::Bar) $space->path(); # Foo/Bar $space->path('lib/%s'); # lib/Foo/Bar
prepend(Str $arg1) : Object
The prepend method modifies the object by prepending to the package namespace parts.
# given $space (Foo::Bar) $space->prepend('via'); "$space" # Via::Foo::Bar
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.
root
parts
# given $space (root => 'Foo', parts => 'Bar') $space->root(); # ['Foo']
routine(Str $arg1) : CodeRef
The routine method returns the subroutine reference for the given subroutine name.
# given Foo/Bar $space->routine('import'); # ...
routines() : ArrayRef
The routines method searches the package namespace for routines and returns their names.
# given Foo/Bar $space->routines(); # [,...]
scalar(Str $arg1) : Any
The scalar method returns the value for the given package scalar variable name.
# given Foo/Bar $space->scalar('VERSION'); # 0.01
scalars() : ArrayRef
The scalars method searches the package namespace for scalars and returns their names.
# given Foo/Bar $space->scalars(); # [,...]
sibling(Str $arg1) : Object
The sibling method returns a new Data::Object::Space object for the sibling package namespace.
# given $space (Foo::Bar) $space->sibling('Baz'); # Foo::Baz
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).
# given $space (Foo::Bar) $space->siblings(); # ['Foo::Baz', ...]
type() : Str
The type method returns the parsed filetype and defaults to pm. This value is used when calling the file method.
pm
file
# given $space (Foo/Bar.pod) $space->type(); # pod
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.
# given $space (Foo::Bar) $space->used(); # undef, unless Foo::Bar is in %INC
variables() : ArrayRef
The variables method searches the package namespace for variables and returns their names.
# given Foo/Bar $space->variables(); # [,...]
Al Newkirk, +309
+309
Anthony Brummett, +10
+10
Adam Hopkins, +2
+2
José Joaquín Atria, +1
+1
Al Newkirk, awncorp@cpan.org
awncorp@cpan.org
Copyright (C) 2011-2019, Al Newkirk, et al.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
Wiki
Project
Initiatives
Milestones
Contributing
Issues
To get the most out of this distribution, consider reading the following:
Do
Data::Object
Data::Object::Class
Data::Object::ClassHas
Data::Object::Role
Data::Object::RoleHas
To install Do, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Do
CPAN shell
perl -MCPAN -e shell install Do
For more information on module installation, please visit the detailed CPAN module installation guide.