# PaperScript

## Static Methods

* `PaperScript.compile(code[, options])`

  Compiles PaperScript code into JavaScript code.

  * Options:
  * `options.url: String` — the url of the source, for source-map generation
  * `options.source: String` — the source to be used for the source- mapping, in case the code that’s passed in has already been mingled.
  * Parameters:
  * `code:` `String` — the PaperScript code
  * `options:` `Object` — the compilation options — optional
  * Returns:
  * `Object` — an object holding the compiled PaperScript translated into JavaScript code along with source-maps and other information.
* `PaperScript.execute(code, scope[, options])`

  Compiles the PaperScript code into a compiled function and executes it. The compiled function receives all properties of the passed `PaperScope` as arguments, to emulate a global scope with unaffected performance. It also installs global view and tool handlers automatically on the respective objects.

  * Options:
  * `options.url: String` — the url of the source, for source-map generation
  * `options.source: String` — the source to be used for the source- mapping, in case the code that’s passed in has already been mingled.
  * Parameters:
  * `code:` `String` — the PaperScript code
  * `scope:` `PaperScope` — the scope for which the code is executed
  * `options:` `Object` — the compilation options — optional
  * Returns:
  * `Object` — the exports defined in the executed code
* `PaperScript.load([script])`

  Loads, compiles and executes PaperScript code in the HTML document. Note that this method is executed automatically for all scripts in the document through a window load event. You can optionally call it earlier (e.g. from a DOM ready event), or you can mark scripts to be ignored by setting the attribute `ignore="true"` or `data-paper-ignore="true"`, and call the `PaperScript.load(script)` method for each script separately when needed.

  * Parameters:
  * `script:` `HTMLScriptElement` — the script to load. If none is provided, all scripts of the HTML document are iterated over and loaded — optional, default: `null`
  * Returns:
  * `PaperScope` — the scope produced for the passed `script`, or `undefined` of multiple scripts area loaded


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://paperjs.typogram.co/javascript/paperscript.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
