📦 Core Module v1.1

A1sDS — Структуры

Мощная работа с конфигурациями и данными. Pick/Omit, Merge, Path Helpers и DeepCopy для чистоты кода.

30+
Методов
1
Зависимостей
0
Внешних
100%
Fluent
🚀 Быстрый старт

Два подхода

Выберите подход, который лучше подходит для вашей задачи

FluentPipeline.bsl
// ✨ Fluent API — собираем структуру по частям

// Базовая конфигурация + переопределение пользователя
Конфиг = A1sDS.On(Дефолты)
    .Set("apiKey", ПолучитьКлюч())
    .Set("timeout", 60)
    .Value();

// Очистка данных для API (безопасный код)
ДляAPI = A1sDS.On(СырыеДанные)
    .Omit("Пароль", "Токен")
    .Rename(A1sDS.Of("ИНН", "tax_id"))
    .Value();

// Массовая трансформация значений
СНадбавкой = A1sDS.On(БазовыеЦены)
    .Transform("Цена", "v * 1.2")
    .Value();
StaticAPI.bsl
// 📦 Static API — Утилиты и Создание

// Создание из пар (удобно!)
Конфиг = A1sDS.Of(
    "host", "localhost",
    "port", 8080,
    "ssl", Истина
);

// Парсинг Query String
GET = A1sDS.OfQueryString("name=John&age=30&city=Moscow");
// GET["name"] -> "John"

// Pick / Omit (Фильтрация)
Публичные = A1sDS.OfPick(Полная, "id,name"); 
Безопасные = A1sDS.OfOmit(Полная, "password");

// Merge (Слияние)
Итого = A1sDS.Merge(Дефолты, Пользователь);
// Последний аргумент перезаписывает ключи
Задача ❌ Было (Классика) ✅ Стало (A1sDS)
Создание структуры Структура = Новый Структура;
Структура.Вставить("Ключ1", Знач1);
...
Структура = A1sDS.Of("Ключ1", Знач1, "Ключ2", Знач2);
Удаление полей // Нужен цикл или ручное удаление Результат = A1sDS.OfOmit(Исх, "Секрет", "ВнутреннийID");
Слияние // Нужен цикл и перебор полей Результат = A1sDS.Merge(База, Переопределения);
✨ Возможности

Почему A1sDS?

🔧

Pick & Omit

Мгновенное создание "срезов" структуры для UI или безопасной отправки на API.

🥣

Merge

Умное слияние структур. Применение дефолтов без перезаписи пользовательских данных.

🛣️

Path Helpers

Работа с вложенными структурами через строковый путь ("ui.theme.dark"). Автосоздание узлов.

📝

Parsers

Парсинг Query String (URL) и простых строк "Ключ=Значение" в одну структуру.

🔀

Rename

Массовое переименование ключей структуры (например, для адаптации под внешний API).

📋

DeepCopy

Полное глубокое копирование структуры, безопасное для вложенных значений.

🧠 Deep Dive

Path Helpers & Configs

Продвинутая работа с конфигурациями.

PathHelpers.bsl
// ═══════════════════════════════════════════════════════════
// СЦЕНАРИЙ: Работа с сложной конфигурацией (Nested Structures)
// ═══════════════════════════════════════════════════════════

// Инициализируем пустую структуру настроек
Настройки = Новый Структура;

// ✅ GetOrInsertPath — Автоматически создает промежуточные узлы!
// Нужна ui.theme.dark? Структура создаст сама.

A1sDS.GetOrInsertPath(Настройки, "ui.theme.dark", Истина);
A1sDS.GetOrInsertPath(Настройки, "ui.theme.fontSize", 14);
A1sDS.GetOrInsertPath(Настройки, "api.timeout", 30);

// Результат: Структура с полной иерархией, созданная одной функцией
// Настройки.ui.theme.dark -> Истина
// Настройки.api.timeout   -> 30
🔗 Fluent API

A1sDP_DS — Методы цепочек

Точка входа: A1sDS.On()

🔧 Трансформаторы (возвращают ЭтотОбъект)

Метод Описание
.Set(K, V) Установить значение ключа.
.SetIf(K, V, Condition) Установить значение по условию.
.SetMany(Struct) Массовая установка из структуры.
.Remove(K) Удалить ключ.
.Pick(Keys) Оставить только указанные ключи.
.Omit(Keys) Исключить указанные ключи.
.Merge(Struct) Слить со структурой (переписывает).
.Defaults(Struct) Слить, но НЕ переписывать существующие.
.Rename(Map) Переименовать ключи (map: {Old: New}).
.Transform(K, Expr) Изменить значение ключа (v*2).
.DeepCopy() Глубокая копия структуры.

✅ Терминаторы (возвращают результат)

Метод Возвращает Описание
.Value() Structure Результирующая структура.
.ToFixed() FixedStructure Фиксированная структура.
.Get(K, Default) Variant Получить значение (или Default).
.Keys() Array Массив ключей.
.Values() Array Массив значений.
.ToPairs() Array Массив структур {Ключ, Значение}.
.Count() Number Количество свойств.
.HasKey(K) Boolean Проверка наличия ключа.
.IsEmpty() Boolean Проверка на пустоту.
.ToString() String Строковое представление.
.ToJSON() String JSON-представление.
📦 Static API

A1sDS — Статические функции

🔹 Создание и Parsers

Функция Описание
Of(K, V, ...) Создает структуру из пар.
OfString(Str) Парсит "K=V" строку.
OfQueryString(QS) Парсит URL параметры.
OfKeysAndValues(Keys, Values) Из массивов.
Pair(K, V) Создает пару.
OfPairs(Array) Из массива пар.

🔹 Filter & Transform

Функция Описание
OfPick(Struct, Keys) Новая структура только с этими ключами.
OfOmit(Struct, Keys) Новая структура без этих ключей.
OfRename(Struct, Map) Переименовывает ключи по карте.
OfDefaults(Struct, Defaults) Применяет дефолты (не затирая существующие).

🔹 Set Operations

Функция Описание
Merge(Base, ...) Слияние (последние имеют приоритет).
Union(...) Уникальные ключи.
Intersection(...) Ключи, присутствующие во всех.
Difference(...) Разность ключей.

🔹 Path & Utils

Функция Описание
GetOrInsert(Struct, K, V) Возвращает или вставляет дефолт.
GetOrInsertPath(Struct, Path, V) Путь "ui.theme" (авто-создание).
DeepCopy(Struct) Полное глубокое копирование.
HasKey(Struct, K) Проверка наличия.
GetKeys(Struct) Массив ключей.
GetValues(Struct) Массив значений.
ToPairs(Struct) Массив структур {Ключ, Значение}.
IsEmpty(Struct) Проверка на пустоту.