Evaluating JavaScript

Evaluating JavaScript — Creating and interpreting scripts

Synopsis

#include <seed/seed.h>

                    SeedScript;
SeedScript *        seed_make_script                    (SeedContext ctx,
                                                         const gchar *js,
                                                         const gchar *source_url,
                                                         gint line_number);
SeedValue           seed_evaluate                       (SeedContext ctx,
                                                         SeedScript *s,
                                                         SeedObject this_object);
SeedValue           seed_simple_evaluate                (SeedContext ctx,
                                                         gchar *source,
                                                         SeedException *exception);
SeedScript *        seed_script_new_from_file           (SeedContext ctx,
                                                         gchar *file);
SeedException       seed_script_exception               (SeedScript *s);
void                seed_script_destroy                 (SeedScript *s);

Description

Seed relies on WebKit's JavaScriptCore interpreter to actually evaluate snippets of JavaScript; however, it provides a handful of useful wrapper functions to quickly create and evaluate scripts. seed_make_script() and seed_evaluate() are the workhorse functions; these allow you to control every detail of the created script and its evaluation environment (including customizing the "this" object during evaluation, and setting a starting line number and filename from which the script originates). seed_simple_evaluate() provides an interface to execute a string of JavaScript without previously creating a SeedScript, and, while requiring less supporting code, is less flexible.

Example 7. Create and evaluate a string of JavaScript with seed_make_script()

SeedEngine * eng;
 
...
 
SeedScript * script;
/* Create a simple SeedScript */
script = seed_make_script(eng->context, "print('Hello, world!')", NULL, 0);
 
/* Evaluate the SeedScript in the default context */
seed_evaluate(eng->context, script, 0);
 
...


Example 8. Create and evaluate a string of JavaScript with seed_simple_evaluate()

SeedEngine * eng;
 
...
 
/* Evaluate a simple JavaScript snippet in the default context */
seed_simple_evaluate(eng->context, "print('Hello, world!')", NULL);
 
...


Details

SeedScript

typedef struct {
  JSStringRef script;
  JSValueRef exception;

  JSStringRef source_url;
  gint line_number;
} SeedScript;


seed_make_script ()

SeedScript *        seed_make_script                    (SeedContext ctx,
                                                         const gchar *js,
                                                         const gchar *source_url,
                                                         gint line_number);

Creates a new SeedScript instance with js as the contents, then checks for proper syntax.

Note: seed_make_script() does not handle the shebang line, and will return a parse error if one is included in js.

ctx :

A SeedContext.

js :

A string representing the contents of the script.

source_url :

The filename of the script, for reference in errors, or NULL.

line_number :

The line number of the beginning of the script, for reference in error messages, or NULL.

Returns :

The newly created SeedScript.

seed_evaluate ()

SeedValue           seed_evaluate                       (SeedContext ctx,
                                                         SeedScript *s,
                                                         SeedObject this_object);

Evaluates a SeedScript with this as the global "this" object.

ctx :

A SeedContext.

s :

A SeedScript to evaluate.

Returns :

The SeedValue returned by evaluating the script.

seed_simple_evaluate ()

SeedValue           seed_simple_evaluate                (SeedContext ctx,
                                                         gchar *source,
                                                         SeedException *exception);

Evaluates a string of JavaScript in ctx; if an exception is raised in the context of the script, it will be placed in exception.

ctx :

A SeedContext.

source :

A string representing the JavaScript to evaluate.

exception :

A SeedException pointer to store an exception in.

Returns :

The SeedValue returned by evaluating the script.

seed_script_new_from_file ()

SeedScript *        seed_script_new_from_file           (SeedContext ctx,
                                                         gchar *file);

Uses seed_make_script() to create a SeedScript from the contents of file.

ctx :

A SeedContext.

file :

The filename of the script to load.

Returns :

The newly created SeedScript.

seed_script_exception ()

SeedException       seed_script_exception               (SeedScript *s);

Retrieves the exception (if any) raised during the evaluation of s.

s :

A SeedScript.

Returns :

A SeedException representing the exception of s.

seed_script_destroy ()

void                seed_script_destroy                 (SeedScript *s);