App-TemplateServer
view release on metacpan or search on metacpan
lib/App/TemplateServer.pm view on Meta::CPAN
package App::TemplateServer;
use 5.010;
use feature ':5.10';
use Moose;
use Moose::Util::TypeConstraints;
use MooseX::Types::Path::Class qw(File);
use HTTP::Daemon;
use HTTP::Headers;
use HTTP::Request;
use HTTP::Response;
use App::TemplateServer::Types;
use App::TemplateServer::Provider::TT;
use App::TemplateServer::Page::Index;
use App::TemplateServer::Context;
use Package::FromData;
use Method::Signatures;
use URI::Escape;
use YAML::Syck qw(LoadFile);
our $VERSION = '0.04';
our $AUTHORITY = 'cpan:JROCKWAY';
with 'MooseX::Getopt';
has 'port' => (
is => 'ro',
isa => 'Port',
default => '4000',
);
has 'docroot' => (
is => 'ro',
isa => 'ArrayRef[Str]',
default => sub { [$ENV{PWD}] },
coerce => 1,
lazy => 1,
);
has 'datafile' => ( # mocked data for the templates to use
isa => File,
is => 'ro',
coerce => 1,
required => 0,
);
has '_raw_data' => (
isa => 'HashRef',
is => 'ro',
default => sub { eval { LoadFile($_[0]->datafile) } || {} },
lazy => 1,
);
has '_data' => (
isa => 'HashRef',
is => 'ro',
default => sub {
my $self = shift;
my $raw_data = $self->_raw_data;
my $package_def = delete $raw_data->{packages};
create_package_from_data($package_def) if $package_def;
my $to_instantiate = delete $raw_data->{instantiate};
foreach my $var (keys %{$to_instantiate||{}}){
my $class = $to_instantiate->{$var};
given(ref $class){
when('HASH'){
my ($package, $method) = %$class;
( run in 0.562 second using v1.01-cache-2.11-cpan-7fcb06a456a )