-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Реализация прилепляемых коллекций для ОСени
- Loading branch information
0 parents
commit baaff82
Showing
20 changed files
with
562 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
name: Тестирование | ||
|
||
on: | ||
push: | ||
pull_request: | ||
workflow_dispatch: | ||
|
||
jobs: | ||
test: | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
oscript_version: ['1.8.5', 'stable', 'dev', 'lts-dev'] | ||
uses: autumn-library/workflows/.github/workflows/test.yml@main | ||
with: | ||
oscript_version: ${{ matrix.oscript_version }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
build/ | ||
.vscode/ | ||
oscript_modules/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
The MIT License (MIT) | ||
===================== | ||
|
||
Copyright © `2023` `Kirill Chernenko <faqer2012@gmail.com>` | ||
|
||
Permission is hereby granted, free of charge, to any person | ||
obtaining a copy of this software and associated documentation | ||
files (the “Software”), to deal in the Software without | ||
restriction, including without limitation the rights to use, | ||
copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
copies of the Software, and to permit persons to whom the | ||
Software is furnished to do so, subject to the following | ||
conditions: | ||
|
||
The above copyright notice and this permission notice shall be | ||
included in all copies or substantial portions of the Software. | ||
|
||
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, | ||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES | ||
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT | ||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, | ||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | ||
OTHER DEALINGS IN THE SOFTWARE. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
# autumn-collections | ||
|
||
Модуль реализует функциональность прилепляемых коллекций для [ОСени](https://github.com/autumn-library/autumn) | ||
|
||
Поставляются прилепляемые коллекции для типов: | ||
* [Массив](https://oscript.io/syntax/page/Массив) | ||
* [Соответствие](https://oscript.io/syntax/page/Соответствие) | ||
* [ТаблицаЗначений](https://oscript.io/syntax/page/ТаблицаЗначений) | ||
* [Список](https://github.com/sfaqer/collectionos) | ||
* [Множество](https://github.com/sfaqer/collectionos) | ||
* [Карта](https://github.com/sfaqer/collectionos) | ||
|
||
Так же имеется возможность добавить собственную прилепляемую коллекцию реализовав класс по примеру ниже: | ||
|
||
```bsl | ||
Перем Коллекция; | ||
Процедура Добавить(Желудь, ОпределениеЖелудя) Экспорт | ||
Коллекция.Добавить(Желудь); | ||
КонецПроцедуры | ||
Функция Получить() Экспорт | ||
Возврат СтрСоединить(Коллекция, ", "); | ||
КонецФункции | ||
&ПрилепляемаяКоллекция("Строка") | ||
Процедура ПриСозданииОбъекта() | ||
Коллекция = Новый Массив(); | ||
КонецПроцедуры | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
Описание.Имя("autumn-collections") | ||
.Версия("0.1.0") | ||
.Автор("Кирилл Черненко") | ||
.АдресАвтора("https://github.com/sfaqer") | ||
.Описание("Модуль прилепляемых коллекций для ОСени") | ||
.ВерсияСреды("1.8.3") | ||
.ВключитьФайл("src") | ||
.РазработкаЗависитОт("1testrunner") | ||
.РазработкаЗависитОт("coverage") | ||
.РазработкаЗависитОт("fs") | ||
.РазработкаЗависитОт("json") | ||
.РазработкаЗависитОт("asserts") | ||
.ЗависитОт("collectionos", "0.3.1") | ||
.ЗависитОт("annotations", "0.1.0") | ||
; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
Перем _ИмяКоллекции; | ||
|
||
&Аннотация("ПрилепляемаяКоллекция") | ||
Процедура ПриСозданииОбъекта(Значение) | ||
_ИмяКоллекции = Значение; | ||
КонецПроцедуры |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
#Использовать collectionos | ||
|
||
Перем Коллекция; | ||
|
||
Процедура Добавить(Желудь, ОпределениеЖелудя) Экспорт | ||
Коллекция.Вставить(ОпределениеЖелудя.Имя(), Желудь); | ||
КонецПроцедуры | ||
|
||
Функция Получить() Экспорт | ||
Возврат Новый ФиксированнаяКарта(Коллекция); | ||
КонецФункции | ||
|
||
&ПрилепляемаяКоллекция("Карта") | ||
Процедура ПриСозданииОбъекта() | ||
Коллекция = Новый КартаСоответствие(); | ||
КонецПроцедуры |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
Перем Коллекция; | ||
|
||
Процедура Добавить(Желудь, ОпределениеЖелудя) Экспорт | ||
Коллекция.Добавить(Желудь); | ||
КонецПроцедуры | ||
|
||
Функция Получить() Экспорт | ||
Возврат Новый ФиксированныйМассив(Коллекция); | ||
КонецФункции | ||
|
||
&ПрилепляемаяКоллекция("Массив") | ||
Процедура ПриСозданииОбъекта() | ||
Коллекция = Новый Массив(); | ||
КонецПроцедуры |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
#Использовать collectionos | ||
|
||
Перем Коллекция; | ||
|
||
Процедура Добавить(Желудь, ОпределениеЖелудя) Экспорт | ||
Коллекция.Добавить(Желудь); | ||
КонецПроцедуры | ||
|
||
Функция Получить() Экспорт | ||
Возврат Новый ФиксированноеМножество(Коллекция); | ||
КонецФункции | ||
|
||
&ПрилепляемаяКоллекция("Множество") | ||
Процедура ПриСозданииОбъекта() | ||
Коллекция = Новый МножествоСоответствие(); | ||
КонецПроцедуры |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
Перем Коллекция; | ||
|
||
Процедура Добавить(Желудь, ОпределениеЖелудя) Экспорт | ||
Коллекция.Вставить(ОпределениеЖелудя.Имя(), Желудь); | ||
КонецПроцедуры | ||
|
||
Функция Получить() Экспорт | ||
Возврат Новый ФиксированноеСоответствие(Коллекция); | ||
КонецФункции | ||
|
||
&ПрилепляемаяКоллекция("Соответствие") | ||
Процедура ПриСозданииОбъекта() | ||
Коллекция = Новый Соответствие(); | ||
КонецПроцедуры |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
#Использовать collectionos | ||
|
||
Перем Коллекция; | ||
|
||
Процедура Добавить(Желудь, ОпределениеЖелудя) Экспорт | ||
Коллекция.Добавить(Желудь); | ||
КонецПроцедуры | ||
|
||
Функция Получить() Экспорт | ||
Возврат Новый ФиксированныйСписок(Коллекция); | ||
КонецФункции | ||
|
||
&ПрилепляемаяКоллекция("Список") | ||
Процедура ПриСозданииОбъекта() | ||
Коллекция = Новый СписокМассив(); | ||
КонецПроцедуры |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
Перем Коллекция; | ||
|
||
Процедура Добавить(Желудь, ОпределениеЖелудя) Экспорт | ||
|
||
Строка = Коллекция.Добавить(); | ||
|
||
Строка.Имя = ОпределениеЖелудя.Имя(); | ||
Строка.Желудь = Желудь; | ||
Строка.ОпределениеЖелудя = ОпределениеЖелудя; | ||
|
||
КонецПроцедуры | ||
|
||
Функция Получить() Экспорт | ||
Возврат Коллекция.Скопировать(); | ||
КонецФункции | ||
|
||
&ПрилепляемаяКоллекция("ТаблицаЗначений") | ||
Процедура ПриСозданииОбъекта() | ||
|
||
Коллекция = Новый ТаблицаЗначений(); | ||
|
||
Коллекция.Колонки.Добавить("Имя"); | ||
Коллекция.Колонки.Добавить("Желудь"); | ||
Коллекция.Колонки.Добавить("ОпределениеЖелудя"); | ||
|
||
КонецПроцедуры |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
#Использовать annotations | ||
#Использовать collectionos | ||
#Использовать reflector | ||
|
||
Перем ПрилепляемыеКоллекции; | ||
Перем ИнтерфейсПрилепляемойКоллекции; | ||
Перем Рефлектор; | ||
|
||
Процедура ПриСозданииОбъекта() | ||
|
||
ПрилепляемыеКоллекции = Новый КартаСоответствие(); | ||
|
||
ИнтерфейсПрилепляемойКоллекции = Новый ИнтерфейсОбъекта() | ||
.ПроцедураИнтерфейса("Добавить", 2) | ||
.ФункцияИнтерфейса("Получить", 0); | ||
|
||
Рефлектор = Новый Рефлектор(); | ||
|
||
КонецПроцедуры | ||
|
||
Процедура ДобавитьПрилепляемуюКоллекцию(Тип) Экспорт | ||
|
||
РефлекторОбъекта = Новый РефлекторОбъекта(Тип); | ||
|
||
Методы = РефлекторОбъекта.ПолучитьТаблицуМетодов("ПрилепляемаяКоллекция", Ложь); | ||
|
||
Аннотация = РаботаСАннотациями.ПолучитьАннотацию( | ||
Методы[0], | ||
"ПрилепляемаяКоллекция" | ||
); | ||
|
||
Имя = РаботаСАннотациями.ПолучитьЗначениеПараметраАннотации(Аннотация); | ||
|
||
Если ЕстьПрилепляемаяКоллекция(Имя) Тогда | ||
ВызватьИсключение СтрШаблон("Прилепляемая коллекция %1 уже зарегистрирована", Имя); | ||
КонецЕсли; | ||
|
||
РефлекторОбъекта.РеализуетИнтерфейс( | ||
ИнтерфейсПрилепляемойКоллекции, | ||
Истина | ||
); | ||
|
||
ПрилепляемыеКоллекции.Вставить(Имя, Тип); | ||
|
||
КонецПроцедуры | ||
|
||
Функция ПолучитьПрилепляемуюКоллекцию(Имя) Экспорт | ||
|
||
Возврат Новый( | ||
ПрилепляемыеКоллекции | ||
.Получить(Имя) | ||
.ИначеВызватьИсключение("Неизвестная прилепляемая коллекция " + Имя) | ||
); | ||
|
||
КонецФункции | ||
|
||
Функция ЕстьПрилепляемаяКоллекция(Имя) Экспорт | ||
Возврат ПрилепляемыеКоллекции.Получить(Имя).СодержитЗначение(); | ||
КонецФункции |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
#Использовать coverage | ||
#Использовать 1commands | ||
#Использовать fs | ||
|
||
СистемнаяИнформация = Новый СистемнаяИнформация; | ||
ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0; | ||
|
||
ФС.ОбеспечитьПустойКаталог(ОбъединитьПути("build", "coverage")); | ||
ПутьКСтат = "build/coverage/stat.json"; | ||
|
||
Команда = Новый Команда; | ||
Команда.УстановитьКоманду("oscript"); | ||
Если НЕ ЭтоWindows Тогда | ||
Команда.ДобавитьПараметр("-encoding=utf-8"); | ||
КонецЕсли; | ||
Команда.ДобавитьПараметр(СтрШаблон("-codestat=%1", ПутьКСтат)); | ||
Команда.ДобавитьПараметр("tasks/test.os"); | ||
Команда.ПоказыватьВыводНемедленно(Истина); | ||
|
||
КодВозврата = Команда.Исполнить(); | ||
|
||
ФайлСтатистики = Новый Файл(ПутьКСтат); | ||
|
||
ПроцессорГенерации = Новый ГенераторОтчетаПокрытия(); | ||
|
||
ПроцессорГенерации.ОтносительныеПути() | ||
.РабочийКаталог("build/coverage") | ||
.КаталогИсходников(ТекущийКаталог()) | ||
.ФайлСтатистики(ФайлСтатистики.ПолноеИмя) | ||
.GenericCoverage() | ||
.Cobertura() | ||
.Сформировать(); | ||
|
||
ЗавершитьРаботу(КодВозврата); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
lib.system=../oscript_modules |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
#Использовать 1testrunner | ||
#Использовать fs | ||
|
||
Функция ПрогнатьТесты() | ||
|
||
Тестер = Новый Тестер; | ||
Тестер.УстановитьФорматЛогФайла(Тестер.ФорматыЛогФайла().GenericExec); | ||
Тестер.ПодробныеОписанияОшибок(Истина); | ||
|
||
ПутьКТестам = "tests"; | ||
ПутьКОтчетуJUnit = ОбъединитьПути("build", "testsResults"); | ||
|
||
ФС.ОбеспечитьПустойКаталог(ПутьКОтчетуJUnit); | ||
|
||
РезультатТестирования = Тестер.ТестироватьКаталог( | ||
Новый Файл(ПутьКТестам), | ||
Новый Файл(ПутьКОтчетуJUnit) | ||
); | ||
|
||
Успешно = РезультатТестирования = 0; | ||
|
||
Возврат Успешно; | ||
|
||
КонецФункции // ПрогнатьТесты() | ||
|
||
// основной код | ||
|
||
ТекКаталог = ТекущийКаталог(); | ||
|
||
Попытка | ||
ТестыПрошли = ПрогнатьТесты(); | ||
Исключение | ||
ТестыПрошли = Ложь; | ||
Сообщить(СтрШаблон("Тесты через 1testrunner выполнены неудачно | ||
|%1", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()))); | ||
КонецПопытки; | ||
|
||
УстановитьТекущийКаталог(ТекКаталог); | ||
|
||
Если Не ТестыПрошли Тогда | ||
ВызватьИсключение "Тестирование завершилось неудачно!"; | ||
Иначе | ||
Сообщить(СтрШаблон("Результат прогона тестов <%1> | ||
|", ТестыПрошли)); | ||
КонецЕсли; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
Процедура Добавить(Желудь) Экспорт | ||
КонецПроцедуры | ||
|
||
&ПрилепляемаяКоллекция("Сломанная") | ||
Процедура ПриСозданииОбъекта() | ||
КонецПроцедуры |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
Перем Коллекция; | ||
|
||
Процедура Добавить(Желудь, ОпределениеЖелудя) Экспорт | ||
Коллекция.Добавить(Желудь); | ||
КонецПроцедуры | ||
|
||
Функция Получить() Экспорт | ||
Возврат СтрСоединить(Коллекция, ", "); | ||
КонецФункции | ||
|
||
&ПрилепляемаяКоллекция("Строка") | ||
Процедура ПриСозданииОбъекта() | ||
Коллекция = Новый Массив(); | ||
КонецПроцедуры |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
Функция Имя() Экспорт | ||
Возврат "Тест"; | ||
КонецФункции |
Oops, something went wrong.