# Export extensions

This type of extension allows us to retrieve an *exportable version* of a given meta-model object. Like other extensions, specifications retrieved from this endpoint will enlarge the list of options available on the IDE.

## Specification

An export extension must be like this:

```json
{
	"type": "export",
	"elementType": "string",
	"label": "string",
	"description": "string",
	"get": "string",
	"defaultFilename": "boolean",
	"section": "string"
}
```

Where:

* `type` as these are export extensions this property is `export`.
* `get` a string specifying the way the export content will be obtained (see below).
* `defaultFilename` (optional) the default file name.

The rest of the basic properties are described [here](https://webside.gitbook.io/webside/api/get#specification).

## Example

Lets suppose we want to add a "File out" option to classes and that we count on a URI for that (`/classes/{classname}/exports/chunks` for instance).\
We could specify our extension like this:

```json
{
	"type": "export",
	"elementType": "class",
	"label": "File out",
	"get": "/classes/{element.name}/exports/chunks",
	"defaultFilename": "{element.name}.ch"
}
```

## Get mechanism

As mentioned above, `get` specifies the way the IDE will get the actual contents to be exported. This could be an URI (if it begins with `/`) or an attribute of the target element.

In both cases, the value might contain `{element.xxxx}` expressions, where `element` represents the meta-model object for which the export is requested (most likely the object selected in IDE), and `xxxx` is an valid attribute for such element. This expression will be replaced by the actual value element's attribute.\
In the example, assuming the action was triggered from the class `MyClass`, the contents will be retrieved from the URI `/classes/MyClass/exports/chunks`.

Valid attributes can be extracted from the corresponding endpoints in the documentation ([pacakges](https://webside.gitbook.io/webside/api/code/packages/get), [classes](https://webside.gitbook.io/webside/api/code/classes/get), [variables](https://webside.gitbook.io/webside/api/code/classes/get-3), [categories](https://webside.gitbook.io/webside/api/code/classes/get-2), [methods](https://webside.gitbook.io/webside/api/code/methods/get)).

### Default file name

As in the case of `get` property, `defaultFilename` is a string that can contain zero or more expression of the form `{element.xxxx}` that will be replaced by their actual value.

In our example, the default file name will be `MyClass.ch`.

Assuming the payload of requesting `/classes/MyClass/exports/chunks` is the follwing:

```
Object subclass: #MyClass
	instanceVariableNames: ''
	classVariableNames: ''
	package: 'MyPackage'!

!MyClass methodsFor: 'as yet unclassified' stamp: 'guille 3/31/2024 16:34'!
myMethod
  ^1! !
```

A file dialog will be opened and once the user confirms a file name, such contents will be saved.


---

# 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://webside.gitbook.io/webside/api/extensions/exports.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.
