The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

EJS::Template::JSAdapter - JavaScript engine adapter for EJS::Template

Variables

@SUPPORTED_ENGINES

Supported JavaScript engine classes

Methods

create

Instantiates a JavaScript engine adapter object.

    my $engine = EJS::Template::JSAdapter->create();

If no argument is passed, an engine is selected from the available ones.

An explicit engine can also be specified. E.g.

    my $je_engine = EJS::Template::JSAdapter->create('JE');
    my $v8_engine = EJS::Template::JSAdapter->create('JavaScript::V8');

new

Creates an adapter object.

This method should be overridden, and a property named 'context' is expected to be set up.

    package Some::Extended::JSAdapter;
    use base 'EJS::Template::JSAdapter';
    
    sub new {
        my ($class) = @_;
        my $context = Some::Underlying::JavaScript::Context->new();
        return bless {context => $context}, $class;
    }

context

Retrieves the underlying context object.

bind

Binds variable mapping to JavaScript objects.

This method should be overridden in a way that it can be invoked like this:

    $engine->bind({
        varname1 => $object1,
        funcname2 => sub {...},
        ...
    });

eval

Evaluates a JavaScript code.

This method should be overridden in a way that it can be invoked like this:

    $engine->eval('print("ok\n")');

SEE ALSO