|
1 | 1 | # fluent |
| 2 | + |
2 | 3 | [](https://travis-ci.org/nixel2007/oscript-fluent) |
3 | | -[](https://sonar.silverbulleters.org/dashboard/index/oscript-fluent) |
4 | | -[](https://sonar.silverbulleters.org/dashboard/index/oscript-fluent) |
5 | | -[](https://sonar.silverbulleters.org/dashboard/index/oscript-fluent) |
| 4 | +[](https://sonar.oscript.ru/dashboard?id=oscript-fluent) |
| 5 | +[](https://sonar.oscript.ru/dashboard?id=oscript-fluent) |
| 6 | +[](https://sonar.oscript.ru/dashboard?id=oscript-fluent) |
6 | 7 |
|
7 | 8 | Библиотека быстрой обработки коллекций. |
8 | 9 |
|
|
14 | 15 | > Структуры и соответствия incoming |
15 | 16 |
|
16 | 17 | Конвейерные методы: |
| 18 | + |
17 | 19 | * Первые |
18 | 20 | * Пропустить |
19 | 21 | * Различные |
20 | 22 | * Обработать |
| 23 | +* Развернуть |
21 | 24 | * Фильтровать |
22 | 25 | * Сортировать |
| 26 | +* СортироватьПо |
23 | 27 |
|
24 | 28 | Терминальные методы: |
| 29 | + |
25 | 30 | * ПолучитьПервый |
26 | 31 | * ВМассив |
27 | 32 | * ВСтроку |
|
36 | 41 | * ВсеНеСоответствуют |
37 | 42 |
|
38 | 43 | Функции сравнения, фильтрации, обработки могут задаваться с помощью: |
| 44 | + |
39 | 45 | * Строк |
40 | 46 | * Описаний оповещения (библиотека [notify](https://github.com/oscript-library/notify)) |
41 | 47 |
|
42 | 48 | Библиотека помимо конструктора класса `ПроцессорКоллекций` содержит вспомогательный модуль, включающий: |
| 49 | + |
43 | 50 | * построитель процессора коллекций `ИзКоллекции()` |
44 | 51 | * построитель процессора коллекций `ИзСтроки()` |
| 52 | +* построитель процессора коллекций `ИзНабора()` |
45 | 53 | * `СтандартнаяФункцияСравнения()` - типовой `comparator`, возвращающий результат сравнения как `1`, `0`, `-1` |
46 | 54 | * `СтандартнаяФункцияОбработки_Сообщить()` - функция сообщения каждого элемента в консоль |
47 | 55 |
|
|
253 | 261 | Функция Обработать(Знач ФункцияОбработки, Знач ДополнительныеПараметры = Неопределено) Экспорт |
254 | 262 | ``` |
255 | 263 |
|
| 264 | +#### Развернуть |
| 265 | + |
| 266 | +```bsl |
| 267 | +// Развернуть каждый элемент коллекции в процессор коллекций. |
| 268 | +// Позволяет расширить имеющуюся коллекцию. |
| 269 | +// Например, разворачивание массива массивов сделает новый массив, содерщщий все элементы всех массивов. |
| 270 | +// Конвейерный метод. |
| 271 | +// |
| 272 | +// Параметры: |
| 273 | +// ФункцияРазворачивания - Строка, ОписаниеОповещения - функция разворачивания. |
| 274 | +// В случае передачи Строки формируется служебное описание оповещения, в контексте которого заданы переменные |
| 275 | +// "Результат", "ДополнительныеПараметры", "Элемент". |
| 276 | +// В случае передачи ОписанияОповещения обработчик данного описания должен содержать два параметра |
| 277 | +// (имена произвольные): |
| 278 | +// Результат - ПроцессорКоллекций - Переменная, в которую должен быть |
| 279 | +// помещен результат работы функции в виде ПроцессораКоллекций. |
| 280 | +// ДополнительныеПараметры - Структура - Структура параметров, передаваемая функции разворачивания. |
| 281 | +// |
| 282 | +// ДополнительныеПараметры - Структура - Структура дополнительных параметров, передаваемая функции разворачивания. |
| 283 | +// Служит для передачи дополнительных данных из прикладного кода в функцию разворачивания. |
| 284 | +// По умолчанию содержит одно значение - Элемент. |
| 285 | +// |
| 286 | +// Возвращаемое значение: |
| 287 | +// ПроцессорКоллекций - Инстанс класса "ПроцессорКоллекций". |
| 288 | +// |
| 289 | +// Примеры: |
| 290 | +// 1: |
| 291 | +// ПроцессорКоллекций.Развернуть("Результат = ПроцессорыКоллекций.ИзСтроки(Элемент);"); |
| 292 | +// |
| 293 | +// 2: |
| 294 | +// Процедура МояФункцияРазворачивания(Результат, ДополнительныеПараметры) Экспорт |
| 295 | +// Результат = ПроцессорыКоллекций.ИзСтроки(ДополнительныеПараметры.Элемент); |
| 296 | +// КонецПроцедуры |
| 297 | +// |
| 298 | +// ФункцияРазворачивания = Новый ОписаниеОповещения("МояФункцияРазворачивания", ЭтотОбъект); |
| 299 | +// ПроцессорКоллекций.Развернуть(ФункцияРазворачивания); |
| 300 | +// |
| 301 | +Функция Развернуть(Знач ФункцияРазворачивания, Знач ДополнительныеПараметры = Неопределено) Экспорт |
| 302 | +``` |
| 303 | + |
256 | 304 | #### Фильтровать |
257 | 305 |
|
258 | 306 | ```bsl |
|
329 | 377 | Функция Сортировать(Знач ФункцияСравнения = Неопределено, Знач ДополнительныеПараметры = Неопределено) Экспорт |
330 | 378 | ``` |
331 | 379 |
|
| 380 | +#### СортироватьПо |
| 381 | + |
| 382 | +```bsl |
| 383 | +// Сортировать элементы коллекции по выбранному полю. |
| 384 | +// Конвейерный метод. |
| 385 | +// |
| 386 | +// Параметры: |
| 387 | +// ИмяПоля - Строка - Имя поля элемента коллекции, по которому необходимо осуществлять сортировку. |
| 388 | +// |
| 389 | +// ФункцияСравнения - Строка, ОписаниеОповещения - Функция сравнения. |
| 390 | +// В случае передачи Строки формируется служебное описание оповещения, в контексте которого заданы переменные |
| 391 | +// "Результат", "ДополнительныеПараметры", "Элемент1", "Элемент2". |
| 392 | +// В случае передачи ОписанияОповещения обработчик данного описания должен содержать два параметра |
| 393 | +// (имена произвольные): |
| 394 | +// "Результат" - Булево - Переменная, в которой возвращается значение работы функции. |
| 395 | +// "ДополнительныеПараметры" - Структура - Структура параметров, передаваемая функции. |
| 396 | +// Если параметр не передан, выполняется стандартная функция сравнения: |
| 397 | +// см. ПроцессорыКоллекций.СтандартнаяФункцияСравнения() |
| 398 | +// |
| 399 | +// ДополнительныеПараметры - Структура - Структура дополнительных параметров, передаваемая функции сравнения. |
| 400 | +// Служит для передачи дополнительных данных из прикладного кода в функцию сравнения. |
| 401 | +// По умолчанию содержит два значения - Элемент1 и Элемент2. |
| 402 | +// |
| 403 | +// Возвращаемое значение: |
| 404 | +// ПроцессорКоллекций - Инстанс класса "ПроцессорКоллекций". |
| 405 | +// |
| 406 | +// Примеры: |
| 407 | +// 1: |
| 408 | +// ПроцессорКоллекций.СортироватьПо("НомерСтроки", "Результат = Элемент1 > Элемент2"); |
| 409 | +// |
| 410 | +// 2: |
| 411 | +// Процедура МояФункцияСравнения(Результат, ДополнительныеПараметры) Экспорт |
| 412 | +// Результат = ДополнительныеПараметры.Элемент1 > ДополнительныеПараметры.Элемент2; |
| 413 | +// КонецПроцедуры |
| 414 | +// |
| 415 | +// ФункцияСравнения = Новый ОписаниеОповещения("МояФункцияСравнения", ЭтотОбъект); |
| 416 | +// ПроцессорКоллекций.СортироватьПо("НомерСтроки", ФункцияСравнения); |
| 417 | +// |
| 418 | +Функция СортироватьПо(Знач ИмяПоля, Знач ФункцияСравнения = Неопределено, Знач ДополнительныеПараметры = Неопределено) Экспорт |
| 419 | +``` |
| 420 | + |
332 | 421 | > Терминальные методы |
333 | 422 |
|
334 | 423 | #### ПолучитьПервый |
|
680 | 769 | Функция ИзСтроки(Строка, РазделительСтрок = Неопределено, ВключатьПустые = Истина) Экспорт |
681 | 770 | ``` |
682 | 771 |
|
| 772 | +#### ИзНабора |
| 773 | + |
| 774 | +```bsl |
| 775 | +// Создать ПроцессорКоллекций на основании переданного набора значений. |
| 776 | +// Добавляет элемент в ПроцессорКоллекций, если он не равен NULL. |
| 777 | +// |
| 778 | +// Параметры: |
| 779 | +// Элемент1 - Произвольный - Элемент для добавления в ПроцессорКоллекций. |
| 780 | +// Элемент2 - Произвольный - Элемент для добавления в ПроцессорКоллекций. |
| 781 | +// Элемент3 - Произвольный - Элемент для добавления в ПроцессорКоллекций. |
| 782 | +// ... Всего 32 параметра ... |
| 783 | +// |
| 784 | +// Возвращаемое значение: |
| 785 | +// ПроцессорКоллекций - Инстанс класса ПроцессорКоллекций, заполненный переданным набором. |
| 786 | +// |
| 787 | +Функция ИзНабора(Элемент1 = NULL, Элемент2 = NULL, Элемент3 = NULL, ...) Экспорт |
| 788 | +``` |
| 789 | + |
683 | 790 | #### СтандартнаяФункцияСравнения |
684 | 791 |
|
685 | 792 | ```bsl |
|
0 commit comments