Boxer

 view release on metacpan or  search on metacpan

lib/Boxer/File/WithSkeleton.pm  view on Meta::CPAN

package Boxer::File::WithSkeleton;

=encoding UTF-8

=cut

use v5.20;
use utf8;
use Role::Commons -all;
use feature 'signatures';
use namespace::autoclean 0.16;

use Path::Tiny;
use Template::Tiny;
use File::ShareDir qw(dist_dir);

use Moo;
use MooX::StrictConstructor;

use Types::Standard qw(Maybe);
use Types::TypeTiny qw(HashLike);
use Types::Path::Tiny qw(Dir File Path);
use Boxer::Types qw(SkelDir Basename);

use strictures 2;
no warnings "experimental::signatures";

=head1 VERSION

Version v1.4.3

=cut

our $VERSION = "v1.4.3";

# permit callers to sloppily pass undefined values
sub BUILDARGS ( $class, %args )
{
	delete @args{ grep !defined( $args{$_} ), keys %args };
	return {%args};
}

has basename => (
	is  => 'ro',
	isa => Basename,
);

has file => (
	is  => 'lazy',
	isa => Basename,

	default => sub ($self) {
		if ( $self->basename ) {
			return $self->basename;
		}
		elsif ( $self->skeleton_suffix ) {
			return $self->skeleton_path->basename( $self->skeleton_suffix );
		}
	},
);

has file_path => (
	is       => 'lazy',
	isa      => Path,
	required => 1,
	default  => sub ($self) {
		if ( $self->file_dir and $self->file ) {
			return $self->file_dir->child( $self->file );
		}
	},
);



( run in 0.504 second using v1.01-cache-2.11-cpan-39bf76dae61 )