NAME
   JavaScript::V8::Handlebars - Compile and execute Handlebars templates
   via the actual JS library

SYNOPSIS
           use JavaScript::V8::Handlebars

           my $hbjs = JavaScript::V8::Handlebars->new;

           print $hbjs->render_string( "Hello {{var}}", { var => "world" } );

           my $template = $hbjs->compile_file( "template.hbs" );
           print $template->({ var => "world" });

METHODS
   For now the majority of these methods work as described in
   <http://handlebarsjs.com/>

   $hbjs->new()
   $hbjs->c()
       Returns the internal JavaScript::V8 object, useful for executing
       javascript code in the context of the module.

   $hbjs->eval($javascript_string)
       Wrapper function for "$hbjs-"c->eval> that checks for errors and
       throws an exception.

   $hbjs->add_to_context_file($javascript_filename)
   $hbjs->add_to_context($javascript_string)
       Shortcut for evaluating javascript intended to add global functions
       and objects to the current environment.

   $hbjs->precompile_file($template_filename)
   $hbjs->precompile($template_string)
       Takes a template and translates it into the javascript code suitable
       for passing to the "template" method.

   $hbjs->compile_file($template_filename)
   $hbjs->compile($template_string)
       Takes a template and returns a subref that takes a hashref
       containing variables as an argument and returns the text of the
       executed template.

   $hbjs->registerHelper
       TBD

   $hbjs->template( $compiled_javascript_string | $compiled_perl_object )
       Takes a precompiled template datastructure and returns a subref
       ready to be executed.

   $hbjs->render_string( $template_string, \%context_vars )
       Wrapper method for compiling and then executing a template passed as
       a string.

   $hbjs->add_template_dir( $directory, [$extension] )
   $hbjs->add_template_file( $filename, [$base_path] )
   $hbjs->add_template( $name, $template_string )
       Takes a template, compiles it and adds it to the internal store of
       cached templates for "execute_template" to use.

   $hbjs->execute_template( $name, \%context_vars )
       Executes a cached template.

   $hbjs->precompiled()
       Returns a string of javascript consisting of all the templates in
       the cache ready for execution by the browser.

   $hbjs->safeString($string)
       Whatever the original Handlebar function does.

   $hbjs->escapeString ($string)
       Whatever the original Handlebar function does.

   $hbjs->registerPartial($string)
       Whatever the original Handlebar function does.

AUTHOR
   Robert Grimes, "<rmzgrimes at gmail.com>"

BUGS
   Please report and bugs or feature requests through the interfaces at
   <https://github.com/rmzg/JavaScript-V8-Handlebars>

SUPPORT
   You can find documentation for this module with the perldoc command.

   perldoc JavaScript::V8::Handlebars

LICENSE AND COPYRIGHT
   Copyright 2015 Robert Grimes.

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

SEE ALSO
   <https://github.com/rmzg/JavaScript-V8-Handlebars>,
   <http://handlebarsjs.com/>