Skip to content

Commit fab1d15

Browse files
committed
Добавлено быстрое создание процессора коллекций из набора параметров
1 parent 9cc2455 commit fab1d15

File tree

4 files changed

+108
-1
lines changed

4 files changed

+108
-1
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
## 0.4.0
22

33
* Добавлен конвейерный метод Развернуть/flatMap
4+
* Добавлено создание процессора коллекций из набора параметров (varargs...)
45

56
## 0.3.1
67

README.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
# fluent
2+
23
[![Build Status](https://travis-ci.org/nixel2007/oscript-fluent.svg?branch=develop)](https://travis-ci.org/nixel2007/oscript-fluent)
34
[![Quality Gate](https://sonar.oscript.ru/api/project_badges/measure?project=oscript-fluent&metric=alert_status)](https://sonar.oscript.ru/dashboard?id=oscript-fluent)
45
[![Maintainability](https://sonar.oscript.ru/api/project_badges/measure?project=oscript-fluent&metric=sqale_rating)](https://sonar.oscript.ru/dashboard?id=oscript-fluent)
@@ -14,6 +15,7 @@
1415
> Структуры и соответствия incoming
1516
1617
Конвейерные методы:
18+
1719
* Первые
1820
* Пропустить
1921
* Различные
@@ -24,6 +26,7 @@
2426
* СортироватьПо
2527

2628
Терминальные методы:
29+
2730
* ПолучитьПервый
2831
* ВМассив
2932
* ВСтроку
@@ -38,12 +41,15 @@
3841
* ВсеНеСоответствуют
3942

4043
Функции сравнения, фильтрации, обработки могут задаваться с помощью:
44+
4145
* Строк
4246
* Описаний оповещения (библиотека [notify](https://github.com/oscript-library/notify))
4347

4448
Библиотека помимо конструктора класса `ПроцессорКоллекций` содержит вспомогательный модуль, включающий:
49+
4550
* построитель процессора коллекций `ИзКоллекции()`
4651
* построитель процессора коллекций `ИзСтроки()`
52+
* построитель процессора коллекций `ИзНабора()`
4753
* `СтандартнаяФункцияСравнения()` - типовой `comparator`, возвращающий результат сравнения как `1`, `0`, `-1`
4854
* `СтандартнаяФункцияОбработки_Сообщить()` - функция сообщения каждого элемента в консоль
4955

@@ -763,6 +769,24 @@
763769
Функция ИзСтроки(Строка, РазделительСтрок = Неопределено, ВключатьПустые = Истина) Экспорт
764770
```
765771

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+
766790
#### СтандартнаяФункцияСравнения
767791

768792
```bsl

src/Модули/ПроцессорыКоллекций.os

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,75 @@
5050

5151
КонецФункции
5252

53+
// Создать ПроцессорКоллекций на основании переданного набора значений.
54+
// Добавляет элемент в ПроцессорКоллекций, если он не равен NULL.
55+
//
56+
// Параметры:
57+
// Элемент1 - Произвольный - Элемент для добавления в ПроцессорКоллекций.
58+
// Элемент2 - Произвольный - Элемент для добавления в ПроцессорКоллекций.
59+
// Элемент3 - Произвольный - Элемент для добавления в ПроцессорКоллекций.
60+
// Элемент4 - Произвольный - Элемент для добавления в ПроцессорКоллекций.
61+
// Элемент5 - Произвольный - Элемент для добавления в ПроцессорКоллекций.
62+
// Элемент6 - Произвольный - Элемент для добавления в ПроцессорКоллекций.
63+
// Элемент7 - Произвольный - Элемент для добавления в ПроцессорКоллекций.
64+
// Элемент8 - Произвольный - Элемент для добавления в ПроцессорКоллекций.
65+
// Элемент8 - Произвольный - Элемент для добавления в ПроцессорКоллекций.
66+
// Элемент9 - Произвольный - Элемент для добавления в ПроцессорКоллекций.
67+
// Элемент10 - Произвольный - Элемент для добавления в ПроцессорКоллекций.
68+
// Элемент11 - Произвольный - Элемент для добавления в ПроцессорКоллекций.
69+
// Элемент12 - Произвольный - Элемент для добавления в ПроцессорКоллекций.
70+
// Элемент13 - Произвольный - Элемент для добавления в ПроцессорКоллекций.
71+
// Элемент14 - Произвольный - Элемент для добавления в ПроцессорКоллекций.
72+
// Элемент15 - Произвольный - Элемент для добавления в ПроцессорКоллекций.
73+
// Элемент16 - Произвольный - Элемент для добавления в ПроцессорКоллекций.
74+
// Элемент17 - Произвольный - Элемент для добавления в ПроцессорКоллекций.
75+
// Элемент18 - Произвольный - Элемент для добавления в ПроцессорКоллекций.
76+
// Элемент18 - Произвольный - Элемент для добавления в ПроцессорКоллекций.
77+
// Элемент19 - Произвольный - Элемент для добавления в ПроцессорКоллекций.
78+
// Элемент20 - Произвольный - Элемент для добавления в ПроцессорКоллекций.
79+
// Элемент21 - Произвольный - Элемент для добавления в ПроцессорКоллекций.
80+
// Элемент22 - Произвольный - Элемент для добавления в ПроцессорКоллекций.
81+
// Элемент23 - Произвольный - Элемент для добавления в ПроцессорКоллекций.
82+
// Элемент24 - Произвольный - Элемент для добавления в ПроцессорКоллекций.
83+
// Элемент25 - Произвольный - Элемент для добавления в ПроцессорКоллекций.
84+
// Элемент26 - Произвольный - Элемент для добавления в ПроцессорКоллекций.
85+
// Элемент27 - Произвольный - Элемент для добавления в ПроцессорКоллекций.
86+
// Элемент28 - Произвольный - Элемент для добавления в ПроцессорКоллекций.
87+
// Элемент28 - Произвольный - Элемент для добавления в ПроцессорКоллекций.
88+
// Элемент29 - Произвольный - Элемент для добавления в ПроцессорКоллекций.
89+
// Элемент30 - Произвольный - Элемент для добавления в ПроцессорКоллекций.
90+
// Элемент31 - Произвольный - Элемент для добавления в ПроцессорКоллекций.
91+
// Элемент32 - Произвольный - Элемент для добавления в ПроцессорКоллекций.
92+
//
93+
// Возвращаемое значение:
94+
// ПроцессорКоллекций - Инстанс класса ПроцессорКоллекций, заполненный переданным набором.
95+
//
96+
Функция ИзНабора(
97+
// BSLLS:NumberOfParams-off
98+
// BSLLS:NumberOfOptionalParams-off
99+
Элемент1 = NULL, Элемент2 = NULL, Элемент3 = NULL, Элемент4 = NULL, Элемент5 = NULL,
100+
Элемент6 = NULL, Элемент7 = NULL, Элемент8 = NULL, Элемент9 = NULL, Элемент10 = NULL,
101+
Элемент11 = NULL, Элемент12 = NULL, Элемент13 = NULL, Элемент14 = NULL, Элемент15 = NULL,
102+
Элемент16 = NULL, Элемент17 = NULL, Элемент18 = NULL, Элемент19 = NULL, Элемент20 = NULL,
103+
Элемент21 = NULL, Элемент22 = NULL, Элемент23 = NULL, Элемент24 = NULL, Элемент25 = NULL,
104+
Элемент26 = NULL, Элемент27 = NULL, Элемент28 = NULL, Элемент29 = NULL, Элемент30 = NULL,
105+
Элемент31 = NULL, Элемент32 = NULL
106+
// BSLLS:NumberOfParams-on
107+
// BSLLS:NumberOfOptionalParams-on
108+
) Экспорт
109+
110+
Коллекция = Новый Массив;
111+
Для сч = 1 По 32 Цикл
112+
ДобавитьНеПустоеЗначениеВКоллекцию(Коллекция, Вычислить("Элемент" + сч));
113+
КонецЦикла;
114+
115+
ПроцессорКоллекций = Новый ПроцессорКоллекций();
116+
ПроцессорКоллекций.УстановитьКоллекцию(Коллекция);
117+
118+
Возврат ПроцессорКоллекций;
119+
120+
КонецФункции
121+
53122
// Стандартная функция сравнения.
54123
// Сравнивает значения элементов коллекции через операторы ">", "<" и "=".
55124
//
@@ -75,3 +144,9 @@
75144
ФункцияОбработки = Новый ОписаниеОповещения("ФункцияОбработки_Сообщить", ПроцессорыКоллекцийСлужебный);
76145
Возврат ФункцияОбработки;
77146
КонецФункции
147+
148+
Процедура ДобавитьНеПустоеЗначениеВКоллекцию(Коллекция, Значение)
149+
Если Значение <> NULL Тогда
150+
Коллекция.Добавить(Значение);
151+
КонецЕсли;
152+
КонецПроцедуры

tests/Инициализация.os

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
ВсеТесты.Добавить("ТестДолжен_ПроинициализироватьПроцессорКоллекций");
1010
ВсеТесты.Добавить("ТестДолжен_ПроинициализироватьПроцессорКоллекцийЧерезПомощник");
1111
ВсеТесты.Добавить("ТестДолжен_ПроинициализироватьПроцессорКоллекцийИзСтрокиЧерезПомощник");
12+
ВсеТесты.Добавить("ТестДолжен_ПроинициализироватьПроцессорКоллекцийИзНабораЧерезПомощник");
1213

1314

1415
Возврат ВсеТесты;
@@ -26,4 +27,10 @@
2627
Процедура ТестДолжен_ПроинициализироватьПроцессорКоллекцийИзСтрокиЧерезПомощник() Экспорт
2728
ПроцессорКоллекций = ПроцессорыКоллекций.ИзСтроки("");
2829
Ожидаем.Что(ПроцессорКоллекций).ИмеетТип("ПроцессорКоллекций");
29-
КонецПроцедуры
30+
КонецПроцедуры
31+
32+
Процедура ТестДолжен_ПроинициализироватьПроцессорКоллекцийИзНабораЧерезПомощник() Экспорт
33+
ПроцессорКоллекций = ПроцессорыКоллекций.ИзНабора(1, 2, 3);
34+
Ожидаем.Что(ПроцессорКоллекций).ИмеетТип("ПроцессорКоллекций");
35+
Ожидаем.Что(ПроцессорКоллекций.Количество()).Равно(3);
36+
КонецПроцедуры

0 commit comments

Comments
 (0)