# Interface JexlScript

public interface JexlScript
A JEXL Script.

A script is some valid JEXL syntax to be executed with a given set of `JexlContext` variables.

A script is a group of statements, separated by semicolons.

The statements can be `blocks` (curly braces containing code), Control statements such as `if` and `while` as well as expressions and assignment statements.

Do not create classes that implement this interface; delegate or compose instead.

Since:
  1.1

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Callable<Object>`
  `callable(JexlContext context)`
  Creates a Callable from this script.
  `Callable<Object>`
  `callable(JexlContext context, Object... args)`
  Creates a Callable from this script.
  `JexlScript`
  `curry(Object... args)`
  Curries this script, returning a script with bound arguments.
  `Object`
  `execute(JexlContext context)`
  Executes the script with the variables contained in the supplied `JexlContext`.
  `Object`
  `execute(JexlContext context, Object... args)`
  Executes the script with the variables contained in the supplied `JexlContext` and a set of arguments corresponding to the parameters used during parsing.
  `String[]`
  `getLocalVariables()`
  Gets this script local variables.
  `String[]`
  `getParameters()`
  Gets this script parameters.
  `String`
  `getParsedText()`
  Recreates the source text of this expression from the internal syntactic tree.
  `String`
  `getParsedText(int indent)`
  Recreates the source text of this expression from the internal syntactic tree.
  `Map<String,Object>`
  `getPragmas()`
  Gets this script pragmas.
  `String`
  `getSourceText()`
  Returns the source text of this expression.
  `String[]`
  `getUnboundParameters()`
  Gets this script unbound parameters.
  `Set<List<String>>`
  `getVariables()`
  Gets this script variables.

- ## Method Details

  - ### callable

    Callable<Object> callable(JexlContext context)
    Creates a Callable from this script.

    This allows to submit it to an executor pool and provides support for asynchronous calls.

    The interpreter will handle interruption/cancellation gracefully if needed.

    Parameters:
      `context` - the context
    Returns:
      the callable
    Since:
      2.1

  - ### callable

    Callable<Object> callable(JexlContext context, Object... args)
    Creates a Callable from this script.

    This allows to submit it to an executor pool and provides support for asynchronous calls.

    The interpreter will handle interruption/cancellation gracefully if needed.

    Parameters:
      `context` - the context
      `args` - the script arguments
    Returns:
      the callable
    Since:
      2.1

  - ### curry

    JexlScript curry(Object... args)
    Curries this script, returning a script with bound arguments.

    If this script does not declare parameters or if all of them are already bound, no error is generated and this script is returned.

    Parameters:
      `args` - the arguments to bind
    Returns:
      the curried script or this script if no binding can occur

  - ### execute

    Object execute(JexlContext context)
    Executes the script with the variables contained in the supplied `JexlContext`.
    Parameters:
      `context` - A JexlContext containing variables.
    Returns:
      The result of this script, usually the result of the last statement.

  - ### execute

    Object execute(JexlContext context, Object... args)
    Executes the script with the variables contained in the supplied `JexlContext` and a set of arguments corresponding to the parameters used during parsing.
    Parameters:
      `context` - A JexlContext containing variables.
      `args` - the arguments
    Returns:
      The result of this script, usually the result of the last statement.
    Since:
      2.1

  - ### getLocalVariables

    String[] getLocalVariables()
    Gets this script local variables.
    Returns:
      the local variables or null
    Since:
      2.1

  - ### getParameters

    String[] getParameters()
    Gets this script parameters.
    Returns:
      the parameters or null
    Since:
      2.1

  - ### getParsedText

    String getParsedText()
    Recreates the source text of this expression from the internal syntactic tree.
    Returns:
      the source text

  - ### getParsedText

    String getParsedText(int indent)
    Recreates the source text of this expression from the internal syntactic tree.
    Parameters:
      `indent` - the number of spaces for indentation, 0 meaning no indentation
    Returns:
      the source text

  - ### getPragmas

    Map<String,Object> getPragmas()
    Gets this script pragmas.
    Returns:
      the (non null, may be empty) pragmas map

  - ### getSourceText

    String getSourceText()
    Returns the source text of this expression.
    Returns:
      the source text

  - ### getUnboundParameters

    String[] getUnboundParameters()
    Gets this script unbound parameters.

    Parameters that haven't been bound by a previous call to curry().

    Returns:
      the parameters or null
    Since:
      3.2

  - ### getVariables

    Set<List<String>> getVariables()
    Gets this script variables.

    Note that since variables can be in an ant-ish form (ie foo.bar.quux), each variable is returned as a list of strings where each entry is a fragment of the variable ({"foo", "bar", "quux"} in the example.

    Returns:
      the variables or null
    Since:
      2.1