Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@

*.ospx
coverage/
build/
.sonar/
.sonarlint/
.vscode
12 changes: 12 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,15 @@
## 0.6.0
* Добавлена поддержка Действие для функционального интерфейса
* Добавлена поддержка лямбда выражений библиотеки lambdas
* Ядро переписано с `notify` на собственную абстракцию `ШагКонвейера`
* Шаги конвейера разделены на барьерные и не барьерные операции

> DEPRECATION NOTICE:

* Отказ от использования notify, в пользу Действие
* Синтаксис лямбда выражений заменён на использование lambdas
* ОписаниеОповещений и старый синтаксис лямбда выражений поддерживаются в рамках обратной совместимости, однако при их использовании будут предупреждения в логе, пожалуйста замените все места использования устаревшей функциональности

## 0.5.0

* Добавлена возможность отладки временных сценариев путем создания временных файлов под текст сценария.
Expand Down
644 changes: 356 additions & 288 deletions README.md

Large diffs are not rendered by default.

76 changes: 54 additions & 22 deletions examples/github.os
Original file line number Diff line number Diff line change
@@ -1,32 +1,49 @@
#Использовать ".."
#Использовать notify

Перем Таблица;

Процедура ДобавитьСтрокуВТаблицу(Имя, Фолловеры, Местоположение, Контрибьюции);
Процедура ДобавитьСтрокуВТаблицу(Имя, Фолловеры, Местоположение, Контрибьюции)

Строка = Таблица.Добавить();
Строка.Имя = Имя;
Строка.Фолловеры = Фолловеры;

Строка.Имя = Имя;
Строка.Фолловеры = Фолловеры;
Строка.Местоположение = Местоположение;
Строка.Контрибьюции = Контрибьюции;
КонецПроцедуры
Строка.Контрибьюции = Контрибьюции;

Процедура Обработчик_ФильтрацияПоМестоположению(РезультатФильтрации, ДополнительныеПараметры) Экспорт
РезультатФильтрации = ДополнительныеПараметры.Элемент.Местоположение = "Россия";
КонецПроцедуры

Процедура Обработчик_СортировкаПоФолловерам(РезультатСравнения, ДополнительныеПараметры) Экспорт
РезультатСравнения = ДополнительныеПараметры.Элемент1.Фолловеры < ДополнительныеПараметры.Элемент2.Фолловеры;
КонецПроцедуры
Функция Обработчик_ФильтрацияПоМестоположению(Элемент) Экспорт
Возврат Элемент.Местоположение = "Россия";
КонецФункции

Процедура Обработчик_СортировкаПоКонтрибьюциям(РезультатСравнения, ДополнительныеПараметры) Экспорт
РезультатСравнения = ДополнительныеПараметры.Элемент1.Контрибьюции < ДополнительныеПараметры.Элемент2.Контрибьюции;
КонецПроцедуры
Функция Обработчик_СортировкаПоФолловерам(Первый, Второй) Экспорт

Если Первый.Фолловеры > Второй.Фолловеры Тогда
Возврат 1;
ИначеЕсли Второй.Фолловеры > Первый.Фолловеры Тогда
Возврат -1;
Иначе
Возврат 0;
КонецЕсли;

ФильтрацияПоМестоположению = Новый ОписаниеОповещения("Обработчик_ФильтрацияПоМестоположению", ЭтотОбъект);
СортировкаПоФолловерам = Новый ОписаниеОповещения("Обработчик_СортировкаПоФолловерам", ЭтотОбъект);
СортировкаПоКонтрибьюциям = Новый ОписаниеОповещения("Обработчик_СортировкаПоКонтрибьюциям", ЭтотОбъект);
КонецФункции

Функция Обработчик_СортировкаПоКонтрибьюциям(Первый, Второй) Экспорт

Если Первый.Контрибьюции > Второй.Контрибьюции Тогда
Возврат 1;
ИначеЕсли Второй.Контрибьюции > Первый.Контрибьюции Тогда
Возврат -1;
Иначе
Возврат 0;
КонецЕсли;

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

ФильтрацияПоМестоположению = Новый Действие(ЭтотОбъект, "Обработчик_ФильтрацияПоМестоположению");
СортировкаПоФолловерам = Новый Действие(ЭтотОбъект, "Обработчик_СортировкаПоФолловерам");
СортировкаПоКонтрибьюциям = Новый Действие(ЭтотОбъект, "Обработчик_СортировкаПоКонтрибьюциям");

Таблица = Новый ТаблицаЗначений;
Таблица.Колонки.Добавить("Имя");
Expand All @@ -43,7 +60,6 @@
ДобавитьСтрокуВТаблицу("Лавочкин", 10, "Россия", 68);
ДобавитьСтрокуВТаблицу("Яковлев", 12, "Россия", 99);


ПроцессорКоллекций = ПроцессорыКоллекций.ИзКоллекции(Таблица);
Результат = ПроцессорКоллекций
.Фильтровать(ФильтрацияПоМестоположению)
Expand All @@ -58,12 +74,28 @@
КонецЦикла;

ПроцессорыКоллекций.ИзКоллекции(Таблица)
.Фильтровать("Результат = Элемент.Местоположение = ""Россия""")
.Сортировать("Результат = Элемент1.Фолловеры < Элемент2.Фолловеры")
.Фильтровать("Элемент -> Элемент.Местоположение = ""Россия""")
.Сортировать("Первый, Второй ->
| Если Первый.Фолловеры > Второй.Фолловеры Тогда
| Возврат 1;
| ИначеЕсли Второй.Фолловеры > Первый.Фолловеры Тогда
| Возврат -1;
| Иначе
| Возврат 0;
| КонецЕсли;"
)
.Первые(5)
.Сортировать("Результат = Элемент1.Контрибьюции < Элемент2.Контрибьюции")
.Сортировать("Первый, Второй ->
| Если Первый.Контрибьюции > Второй.Контрибьюции Тогда
| Возврат 1;
| ИначеЕсли Второй.Контрибьюции > Первый.Контрибьюции Тогда
| Возврат -1;
| Иначе
| Возврат 0;
| КонецЕсли;"
)
.Первые(3)
.ДляКаждого("Сообщить(Элемент.Имя)");
.ДляКаждого("Элемент -> Сообщить(Элемент.Имя)");

// githubUsers
// .filter(_.location == 'Russia')
Expand Down
53 changes: 20 additions & 33 deletions examples/test.os
Original file line number Diff line number Diff line change
@@ -1,25 +1,22 @@
#Использовать ".."
#Использовать notify

Процедура ОбработчикФильтрации(Результат, ДополнительныеПараметры) Экспорт
Элемент = ДополнительныеПараметры.Элемент;
Результат = Элемент > 3;
КонецПроцедуры
Функция ОбработчикФильтрации(Элемент) Экспорт
Возврат Элемент > 3;
КонецФункции

Процедура ОбработчикОбработки(Результат, ДополнительныеПараметры) Экспорт
Элемент = ДополнительныеПараметры.Элемент;
Функция ОбработчикОбработки(Элемент) Экспорт
Результат = Элемент + 1;
Сообщить("Я - операция map, и это мое послание миру: элемент " + Элемент + " превратился в " + Результат);
КонецПроцедуры
Возврат Результат;
КонецФункции

Процедура ОбработчикСокращения(Результат, ДополнительныеПараметры) Экспорт
Элемент = ДополнительныеПараметры.Элемент;
Результат = Результат + Элемент;
КонецПроцедуры
Функция ОбработчикСокращения(Результат, Элемент) Экспорт
Возврат Результат + Элемент;
КонецФункции

ФункцияФильтрации = Новый ОписаниеОповещения("ОбработчикФильтрации", ЭтотОбъект);
ФункцияОбработки = Новый ОписаниеОповещения("ОбработчикОбработки", ЭтотОбъект);
ФункцияСокращения = Новый ОписаниеОповещения("ОбработчикСокращения", ЭтотОбъект);
ФункцияФильтрации = Новый Действие(ЭтотОбъект, "ОбработчикФильтрации");
ФункцияОбработки = Новый Действие(ЭтотОбъект, "ОбработчикОбработки");
ФункцияСокращения = Новый Действие(ЭтотОбъект, "ОбработчикСокращения");

Массив = Новый Массив;
Массив.Добавить(3);
Expand All @@ -46,7 +43,7 @@
ПроцессорКоллекций = ПроцессорыКоллекций.ИзКоллекции(Массив);
ПроцессорКоллекций
.Сортировать()
.ДляКаждого(ПроцессорыКоллекций.СтандартнаяФункцияОбработки_Сообщить());
.ДляКаждого("Элемент -> Сообщить(Элемент)");

Массив = Новый Массив;
Массив.Добавить(4);
Expand All @@ -59,7 +56,7 @@
ПроцессорКоллекций = ПроцессорыКоллекций.ИзКоллекции(Массив);
ПроцессорКоллекций
.Различные()
.ДляКаждого(ПроцессорыКоллекций.СтандартнаяФункцияОбработки_Сообщить());
.ДляКаждого("Элемент -> Сообщить(Элемент)");

ПроцессорКоллекций = ПроцессорыКоллекций.ИзКоллекции(Массив);
Результат = ПроцессорКоллекций
Expand All @@ -73,19 +70,19 @@
.ИзКоллекции(Массив)
.Сортировать()
.Первые(1)
.ДляКаждого(ПроцессорыКоллекций.СтандартнаяФункцияОбработки_Сообщить());
.ДляКаждого("Элемент -> Сообщить(Элемент)");
Сообщить(Массив[0]);

Строка = "ФЫВА";
ПроцессорыКоллекций
.ИзСтроки(Строка)
.Сортировать()
.ДляКаждого(ПроцессорыКоллекций.СтандартнаяФункцияОбработки_Сообщить());
.ДляКаждого("Элемент -> Сообщить(Элемент)");

Строка = "Я строка с пробелами";
ПроцессорыКоллекций
.ИзСтроки(Строка, " ")
.ДляКаждого(ПроцессорыКоллекций.СтандартнаяФункцияОбработки_Сообщить());
.ДляКаждого("Элемент -> Сообщить(Элемент)");

Строка = "Я
|строка
Expand All @@ -94,19 +91,9 @@
ПроцессорыКоллекций
.ИзСтроки(Строка, Символы.ПС)
.Сортировать()
.ДляКаждого(ПроцессорыКоллекций.СтандартнаяФункцияОбработки_Сообщить());
.ДляКаждого("Элемент -> Сообщить(Элемент)");

ПроцессорыКоллекций
.ИзСтроки(Строка, Символы.ПС)
.Фильтровать("Результат = СтрДлина(Элемент) > 1")
.ДляКаждого("Сообщить(Элемент)");

// Структура = Новый Структура;
// Структура.Вставить("Элемент1", 0);
// Структура.Вставить("Элемент2", 1);
// Структура.Вставить("Элемент3", 2);

// ПроцессорыКоллекций
// .ИзКоллекции(Структура)
// .Фильтровать("Результат = Элемент.Значение > 0")
// .Получить(Тип("Структура"));
.Фильтровать("Элемент -> СтрДлина(Элемент) > 1")
.ДляКаждого("Элемент -> Сообщить(Элемент)");
6 changes: 5 additions & 1 deletion packagedef
Original file line number Diff line number Diff line change
@@ -1,14 +1,18 @@

Описание.Имя("fluent")
.Версия("0.5.0")
.Версия("0.6.0")
.Описание("Библиотека для работы с коллекциями в ""текучем"" стиле")
.Автор("Nikita Gryzlov")
.АдресАвтора("nixel2007@gmail.com")
.ВерсияСреды("1.0.18")
.ЗависитОт("logos")
.ЗависитОт("notify", "0.2.0")
.ЗависитОт("lambdas", "0.1.2")
.ЗависитОт("strings")
.ЗависитОт("tempfiles")
.РазработкаЗависитОт("1commands")
.РазработкаЗависитОт("1testrunner")
.РазработкаЗависитОт("coverage")
.ВключитьФайл("examples")
.ВключитьФайл("src")
.ВключитьФайл("tasks")
Expand Down
2 changes: 1 addition & 1 deletion sonar-project.properties
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,4 @@ sonar.sources=./src
# Encoding of the source code. Default is default system encoding
sonar.sourceEncoding=UTF-8

sonar.coverageReportPaths=coverage/genericCoverage.xml
sonar.coverageReportPaths=build/coverage/genericCoverage.xml
Loading