use Moose;
use MooseX::Types::Path::Class;
+use Path::Class;
use Template;
use YAML::XS 'LoadFile';
+
use Moose::Website::I18N;
+use Moose::Website::Resource::Templates;
+use Moose::Website::Resource::WebFiles;
our $VERSION = '0.01';
our $AUTHORITY = 'cpan:STEVAN';
with 'MooseX::Getopt';
-has 'page_file' => (
- is => 'ro',
- isa => 'Path::Class::File',
- coerce => 1,
- required => 1,
-);
-
has 'outdir' => (
is => 'ro',
isa => 'Path::Class::Dir',
required => 1,
);
-has 'template_root' => (
+has 'locale' => (
+ is => 'ro',
+ isa => 'Str',
+ default => sub { 'en' },
+);
+
+has 'page_file' => (
is => 'ro',
- isa => 'Path::Class::Dir',
+ isa => 'Path::Class::File',
coerce => 1,
- required => 1,
+ default => sub {
+ file(__FILE__)->parent->parent->parent->file('data', 'pages.yml')
+ }
);
-has 'template_config' => (
+# ....
+
+has 'template_resource' => (
+ traits => [ 'NoGetopt' ],
is => 'ro',
- isa => 'HashRef',
+ isa => 'Moose::Website::Resource::Templates',
lazy => 1,
- default => sub { +{} },
+ default => sub {
+ Moose::Website::Resource::Templates->new
+ },
+ handles => {
+ 'template_root' => 'dir'
+ }
);
-has 'locale' => (
+has 'web_file_resource' => (
+ traits => [ 'NoGetopt' ],
is => 'ro',
- isa => 'Str',
- default => sub { 'en' },
+ isa => 'Moose::Website::Resource::WebFiles',
+ lazy => 1,
+ default => sub {
+ Moose::Website::Resource::WebFiles->new
+ },
);
-# ....
-
has 'i18n' => (
+ traits => [ 'NoGetopt' ],
is => 'ro',
isa => 'Object',
lazy => 1,
}
);
+has 'template_config' => (
+ traits => [ 'NoGetopt' ],
+ is => 'ro',
+ isa => 'HashRef',
+ lazy => 1,
+ default => sub { +{
+ ENCODING => 'UTF-8',
+ } },
+);
+
sub log { shift; warn @_, "\n" }
sub run {
my $self = shift;
foreach my $page ( @{ $self->pages } ) {
+
+ my $outfile = $self->outdir->file( $page->{outfile} )->stringify;
+
+ $self->log( "Writing page " . $page->{name} . " to $outfile using template " . $page->{template} );
+
$self->tt->process(
$page->{template},
$self->build_template_params( current_page => $page ),
- $self->outdir->file( $page->{outfile} )->stringify
+ $outfile,
+ { binmode => ':encoding(UTF-8)' },
) || confess $self->tt->error;
}
+
+ $self->log( "Copying web resources to " . $self->outdir );
+ $self->web_file_resource->copy( to => $self->outdir );
}
sub build_template_params {
my ($self, %params) = @_;
- $params{ pages } = $self->pages;
- $params{ loc } = sub { $self->i18n->loc( @_ ) };
+ $params{ pages } = $self->pages;
+ $params{ loc } = sub { $self->i18n->loc( @_ ) };
+ $params{ locale } = $self->locale;
\%params;
}