package Module::New::Template;

use strict;
use warnings;
use Text::MicroTemplate ();

# XXX: I'm still wondering if I should use Mojo::Template here...
my $ENGINE = Text::MicroTemplate->new(
  expression_mark => '=',
  line_start      => '%',
  tag_start       => '<%',
  tag_end         => '%>',
);

sub render {
  my ($self, $template) = @_;

  $template = '% my $c = shift;'."\n".$template;
  $ENGINE->parse($template)->build->(Module::New->context)->as_string;
}

1;

__END__

=head1 NAME

Module::New::Template

=head1 SYNOPSIS

  my $text = Module::New::Template->render('<% $c->module %>');

=head1 DESCRIPTION

As of 0.02, L<Module::New> uses a L<Mojo::Template>-like template engine. See L<Mojo::Template> for how to write templates.

=head1 METHOD

=head2 render

takes a template, and returns a rendered text. Note that C<$c> represents the Module::New context (which is passed to the template internally).

=head1 AUTHOR

Kenichi Ishigaki, E<lt>ishigaki@cpan.orgE<gt>

=head1 COPYRIGHT AND LICENSE

Copyright (C) 2009 by Kenichi Ishigaki.

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

=cut