# Soulver X Series

## Что такое Soulver X Series?

В 2024 году мы начали многолетний проект НИОКР, миссия которого заключается в следующем:

* Изучение крутых новых идей для Soulver
* Поиск новых форм и новых рабочих процессов
* Смелое движение туда, куда никогда не доходил блокнотный калькулятор 🖖

Мы планируем выпускать новую основную версию серии X каждый год.

### Спонсорство Soulver X Series

Если вы давний пользователь (или большой фанат Soulver) и воодушевлены этой работой, вы можете рассмотреть возможность [спонсирования нашей миссии на GitHub](https://soulver.app/sponsor).

Кроме того, в качестве спонсора вы получите доступ к последнему прототипу серии X (X3, X4 и т. д.) с функциями, невиданными ранее в области блокнотных калькуляторов.

Наша (очень) небольшая команда была бы признательна за поддержку, и мы смогли бы направить больше ресурсов на такие передовые исследования и разработки блокнотных калькуляторов.

## Soulver X2 (2025)

### Подлисты (Subsheets)

* Подлист — это отдельный лист, который существует внутри одного токена.
  * Создайте подлист с помощью кнопки + в панели вкладок.
  * Дважды щелкните по фиолетовому токену, чтобы открыть редактор подлиста.
* Подлисты могут ссылаться на переменные из родительского листа (при условии, что переменные объявлены выше строки подлиста).

### Токены-ползунки с диапазонами (Slider Tokens with Ranges)

* Токен-ползунок позволяет указать диапазон для прокручиваемого ползунка
  * Создайте ползунок с помощью кнопки + в панели вкладок.
  * Дважды щелкните по зеленому токену, чтобы открыть всплывающее окно ползунка.

### Разделительные линии (Divider Lines)

* Напечатайте дефис (-) три раза, чтобы вставить разделительную линию.
* Используйте разделительные линии для создания большей визуальнойseparation между различными частями вашего листа.

## Soulver X1 (2024)

X1 включает реализации самых востребованных функций Soulver, включая:

* [Поддержку пользовательских функций](https://soulver.app/feedback) (*включая* *функции естественного языка*)
* [Обмен переменными между листами](https://soulver.app/feedback) (*через новый лист "заголовок"*)
* [Подключение к Web API](https://soulver.app/feedback) (*просто вставить и пара кликов*)

### Вкладки (Tabs)

<figure><img src="/files/8pGWg5pcJUH1P0SjeDF4" alt=""><figcaption><p>Несколько вкладок в Soulver X1</p></figcaption></figure>

Документы в Soulver X1 начинаются с одной вкладки, и вы можете добавить больше, нажав кнопку + справа в панели вкладок.

**Переименование вкладок**

Дважды щелкните по заголовку вкладки, чтобы дать ей альтернативное имя. Альтернативно, нажмите Control+клик на вкладку и выберите «Переименовать».

**Удаление вкладок**

Наведите курсор на вкладку и нажмите кнопку x, чтобы удалить. Альтернативно, нажмите Control+клик на вкладку и выберите «Удалить».

{% hint style="warning" %}
Вкладки — это функция в процессе разработки.

Вы пока не можете изменять порядок вкладок, и добавление слишком большого количества вкладок в один документ работает некорректно.
{% endhint %}

### Лист заголовка (The header sheet)

Заголовок — это специальный лист для определения переменных, единиц, функций и веб-значений, которые могут использоваться во всех вкладках вашего документа.

<figure><img src="/files/mQtVbpaukYW6wJ2yhsDp" alt="" width="375"><figcaption></figcaption></figure>

### **Переменные между вкладками**

Объявляйте переменные для вашего документа в заголовке так же, как вы объявляли бы локальные переменные.

Например:

```
my variable = 123
```

`my variable` будет доступен во всех ваших листах

{% hint style="info" %}
Ваши вкладки могут ссылаться только на переменные, но не могут изменять их определение таким образом, чтобы это повлияло на другие листы в документе.
{% endhint %}

### **Эквивалентные единицы (Equivalence units)**

Эквивалентная единица определяется на основе существующей единицы.

Определите новую эквивалентную единицу в заголовке, используя (например):

```
1 watermelon = 10 lb
```

<figure><img src="/files/LMhUtX9JAshJM4L2s9OI" alt=""><figcaption><p>Объявление новой единицы массы в Soulver X1</p></figcaption></figure>

Теперь `watermelon` может использоваться как единица массы во всех ваших вкладках.

<figure><img src="/files/MBBMST7wwTBnZYbpr6se" alt=""><figcaption><p>Использование пользовательской эквивалентной единицы в Soulver X1</p></figcaption></figure>

{% hint style="info" %}
Soulver X1 автоматически переводит ваше новое название единицы во множественное число (на английском языке).

Таким образом, в этом примере как "watermelons", так и "watermelon" будут распознаны как допустимое название единицы, даже если определение было "watermelon".
{% endhint %}

### **Общие единицы (Generic units)**

Эквивалентная единица — это совершенно новый тип единицы, который не определяется на основе существующей единицы.

Определите новую общую единицу в заголовке, используя (например):

```
operation = new unit
```

<figure><img src="/files/y9TclnEwn6oXpz7DxTtc" alt=""><figcaption><p>Объявление общего типа единицы в Soulver X1</p></figcaption></figure>

Единицу `operation` теперь можно использовать во всех ваших вкладках (включая в расчетах ставок):

<figure><img src="/files/EvqsYVp9rfTjoSNwfom7" alt=""><figcaption><p>Использование общей единицы в Soulver X1</p></figcaption></figure>

### **Пользовательские функции (Custom functions)**

**Введение**

Функция — это удобная фраза, которая принимает входные данные и возвращает выходные. В Soulver X1 вы можете использовать (почти) любой синтаксис для функции, включая:

C-стиль: `doSomething(123)`

Swift-стиль: `doSomething(with: 123)`

Естественный язык: `do something with 123`

**Создание новой пользовательской функции (в заголовке)**

* Нажмите `Define New` > `Function`

**Выбор имени функции:**

<figure><img src="/files/riTXUZg9ZMaGvrrk85mJ" alt=""><figcaption><p>Объявление новой функции в Soulver X1</p></figcaption></figure>

* Определите вашу функцию, используя пример того, как вы могли бы использовать эту функцию на практике.
* Выберите любые параметры (при условии, что они соответствуют "типу" параметра, который вы ожидаете для своей реализации, например, деньги, время, обычные десятичные числа и т. д.).

**Реализация вашей функции:**

<figure><img src="/files/4hTFGqgP0dsueEOMGHkr" alt=""><figcaption><p>Написание функции для расчета суммы налога с продаж на определенную сумму</p></figcaption></figure>

* Реализуйте функцию на выделенном листе Soulver. Любые параметры будут внедрены в виде желтых токенов.
* Наведите курсор на токен параметра, чтобы увидеть, на какой параметр он ссылается в объявлении.
* Последняя строка листа реализации будет возвращена как конечное значение функции.

**Использование вашей функции**

<figure><img src="/files/UpDgLKBOzFoInxi9dQ9o" alt=""><figcaption></figcaption></figure>

Используйте вашу функцию с другими входными значениями во всех ваших листах

### **Веб-значения (подключение к JSON API)**

#### **Создание нового веб-значения (в заголовке)**

* Нажмите `Define New` > `Web Value`

#### **Подключение к определенной точке данных в потоке данных JSON**

<figure><img src="/files/q34Y8Chud2FrmlAhjTSX" alt=""><figcaption><p>Подключение к удаленному потоку данных в Soulver X1</p></figcaption></figure>

* Вставьте URL потока данных JSON, а затем просто нажмите на точку данных, к которой вы хотите подключиться.

#### **Использование веб-значения**

* Вашему веб-значению будет присвоено имя переменной (по умолчанию, соответствующее его описанию в потоке JSON)
* Вы можете изменить имя переменной на любое другое.

#### **Обновление веб-значения**

* Ваше веб-значение будет автоматически обновляться в фоновом режиме с частотой, которую вы указали при настройке.

#### **Редактирование веб-значения**

* Дважды щелкните по желтому токену веб-значения в заголовке, чтобы указать другую точку данных или изменить частоту обновления.

## Тип файла Soulver X Series

{% hint style="warning" %}
Приложения серии Soulver X используют другой тип документа (.slvrx) по сравнению с Soulver.

Это сделано для поддержки новых функций, которые мы создаем и с которыми экспериментируем.

Файлы Soulver X (.slvrx) не могут быть отредактированы в Soulver 3 для Mac, iOS и iPad.
{% endhint %}


---

# 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://documentation.soulver.app/ru/eksperimentalnye/x.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.
