#
# This file is part of File-HomeDir-PathClass
#
# This software is copyright (c) 2010 by Jerome Quelin.
#
# This is free software; you can redistribute it and/or modify it under
# the same terms as the Perl 5 programming language system itself.
#
use 5.010;
use strict;
use warnings;

package File::HomeDir::PathClass;
BEGIN {
  $File::HomeDir::PathClass::VERSION = '1.112060';
}
# ABSTRACT: File::HomeDir returning Path::Class objects

use File::HomeDir 0.93 ();
use Path::Class;
use Sub::Exporter -setup => {
    exports => [ @File::HomeDir::EXPORT_OK ],
    #groups => {    },
};


# wrap all file::homedir relevant methods
foreach my $sub ( @File::HomeDir::EXPORT_OK ) {
    no strict 'refs';   ## no critic
    # create a new sub...
    *{ $sub } = sub {
        shift if defined($_[0]) && $_[0] eq __PACKAGE__;
        # ... that just pass through to file::homedir method...
        my $result = *{"File::HomeDir::$sub"}->(@_);
        # ... and wrap the result as a path::class object
        return dir( $result );
    };
}

1;


=pod

=head1 NAME

File::HomeDir::PathClass - File::HomeDir returning Path::Class objects

=head1 VERSION

version 1.112060

=head1 SYNOPSIS

    use File::HomeDir::PathClass '-all';
    my $home = home();
    # $home is a Path::Class object now

    # - or -

    use File::HomeDir::PathClass;
    my $home = File::HomeDir::PathClass->home;
    # $home is a Path::Class object now

=head1 DESCRIPTION

This module is just a wrapper around L<File::HomeDir> methods,
transforming their return value to L<Path::Class> objects. This allows
for easier usage of the value.

Refer to L<File::HomeDir#METHODS> for a list of which functions are
supported.

C<File::HomeDir::PathClass> supports both original L<File::HomeDir> interfaces.

=head2 Procedural mode

All functions are exportable. Nothing is exported by default, though.
One has to list which function(s) she wants to import.

Some groups are defined for your convenience:

=over 4

=item * C<all> - all available functions.

=back

Note that this module is exporting subs via L<Sub::Exporter>, so groups
are available either as C<:group> or C<-group>. One can also play any
trick supported by L<Sub::Exporter>, check its documentation for further
information.

=head2 Class method mode

Otherwise, functions are available as class methods, called as:

    File::HomeDir::PathClass->method();

In this case, one doesn't need to import anything during module use-age.

=for Pod::Coverage home my_.* users_.*

=head1 SEE ALSO

Find other relevant information in L<File::HomeDir> and L<Path::Class>.

You can also look for information on this module at:

=over 4

=item * AnnoCPAN: Annotated CPAN documentation

L<http://annocpan.org/dist/File-HomeDir-PathClass>

=item * CPAN Ratings

L<http://cpanratings.perl.org/d/File-HomeDir-PathClass>

=item * Open bugs

L<http://rt.cpan.org/NoAuth/Bugs.html?Dist=File-HomeDir-PathClass>

=item * Git repository

L<http://github.com/jquelin/file-homedir-pathclass.git>.

=back

=head1 AUTHOR

Jerome Quelin

=head1 COPYRIGHT AND LICENSE

This software is copyright (c) 2010 by Jerome Quelin.

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

=cut


__END__