App-AutoCRUD
view release on metacpan or search on metacpan
lib/App/AutoCRUD.pm view on Meta::CPAN
package App::AutoCRUD;
use 5.010;
use strict;
use warnings;
use Moose;
use MooseX::NonMoose;
extends 'Plack::Component';
use Plack::Request;
use Plack::Util;
use Carp;
use Scalar::Does qw/does/;
use Clone qw/clone/;
use Try::Tiny;
use YAML::Any qw/Dump/;
use Data::Reach qw/reach/;
use namespace::clean -except => 'meta';
our $VERSION = '0.15';
has 'config' => (is => 'bare', isa => 'HashRef', required => 1);
has 'dir' => (is => 'ro', isa => 'Str',
builder => '_dir', lazy => 1);
has 'name' => (is => 'ro', isa => 'Str',
builder => '_name', lazy => 1);
has 'title' => (is => 'ro', isa => 'Str',
builder => '_title', lazy => 1);
has 'datasources' => (is => 'ro',
isa => 'HashRef',
builder => '_datasources', lazy => 1);
has 'share_paths' => (is => 'ro',
isa => 'ArrayRef',
builder => '_share_paths', lazy => 1, auto_deref => 1);
has 'readonly' => (is => 'ro', isa => 'Bool',
builder => '_readonly', lazy => 1);
#======================================================================
# LAZY ATTRIBUTE CONSTRUCTORS
#======================================================================
sub _dir {
my $self = shift;
return $self->config('dir') || '.';
}
sub _name {
my $self = shift;
return $self->config(qw/app name/) || 'ANONYMOUS_AutoCRUD';
}
sub _title {
my $self = shift;
return $self->config(qw/app title/) || 'Welcome to the wonders of AutoCRUD';
}
sub _readonly {
my $self = shift;
return $self->config(qw/app readonly/);
}
sub _datasources {
my $self = shift;
my $source_class = $self->find_class('DataSource');
my $config_sources = $self->config('datasources');
return {map {($_ => $source_class->new(name => $_, app => $self))}
sort keys %$config_sources};
}
( run in 2.910 seconds using v1.01-cache-2.11-cpan-f56aa216473 )