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/>

