Skip to content

Commit e845b33

Browse files
committed
Refactor: Замена "&Наследует" на "&Расширяет" в интерфейсах и обновление зависимостей
- Заменены все использования "&Наследует" на "&Расширяет" в определениях интерфейсов для миграции на extends - Обновлена версия пакета collectionos с 0.8.1 до 0.8.2. - Обновлена версия зависимости разработки "decorator" с 2.0.2 до 2.0.3. - Добавлена зависимость разработки "extends" версии 0.2.0. - Обновлена документация README.md для описания коллекций и представлений. - Обновлен тест "ПроверитьРеализациюИнтерфейсов.os" для использования валидатора реализации из extends. bugfix: Для тестов подтягивать локальные зависимости Fix: Сборка на 1.x - Изменен тест `ПроверитьРеализациюИнтерфейсов.os` на `ПовторяемыйТест(1)` для скрытия от 1testrunner. - Закомментирована зависимость разработки `extends` в `packagedef`, ввиду того что extends требует 2.0 fix: Пытаемся заставить 1testrunner не падать Fix: Сборка на 1.x в тесте ПроверитьРеализациюИнтерфейсов.os - Добавлен комментарий для совместимости с 1.x - Закомментирована директива #Использовать extends, так как она требует 2.0
1 parent fa6a7ee commit e845b33

17 files changed

+91
-151
lines changed

.github/workflows/testing.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,10 @@ jobs:
1717
test_engine: '1testrunner'
1818
- oscript_version: 'dev'
1919
test_engine: 'oneunit'
20+
additional_oscript_packages: extends
21+
2022
uses: autumn-library/workflows/.github/workflows/test.yml@oneunit
2123
with:
2224
oscript_version: ${{ matrix.oscript_version }}
2325
test_engine: ${{ matrix.test_engine }}
26+
additional_oscript_packages: ${{ matrix.additional_oscript_packages }}

README.md

Lines changed: 52 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,35 +2,64 @@
22

33
КоллекшонОС это фреймворк коллекций для OneScript
44

5-
## Особенности
6-
Начиная с версии OneScript 2.0 появилась возможность обходить собственные классы коллекции циклом `Для каждого`, особенность описанная ниже актуальна для более ранних версий движка:
5+
## Коллекции
76

8-
Так как в OneScript нет возможности сделать класс обходимым, то все представленные коллекции нельзя обойти циклом `Для каждого`, вместо этого вы можете воспользоваться итератором:
7+
Фреймворк предоставляет следующие коллекции
98

10-
```bsl
11-
СписокМассив = Новый СписокМассив;
12-
СписокМассив.Добавить(1);
13-
СписокМассив.Добавить(2);
14-
СписокМассив.Добавить(3);
9+
### Множества
1510

16-
Итератор = СписокМассив.Итератор();
11+
Множества - неиндексированные коллекции уникальных элементов.
1712

18-
Пока Итератор.ЕстьСледующий() Цикл
13+
1. МножествоСоответствие - Множество, реализованное на базе соответствия.
14+
1. МножествоКарта - Множество, реализованное на базе карты.
1915

20-
Элемент = Итератор.Следующий();
16+
### Списки
2117

22-
Сообщить(Элемент);
18+
Спики - индексированные коллекции элементов.
2319

24-
КонецЦикла;
20+
1. СписокМассив - Список, реализованный на базе массива.
2521

26-
// > 1
27-
// > 2
28-
// > 3
29-
```
22+
### Карты
23+
24+
Карты - Коллекции пар ключ-значение.
25+
26+
1. КартаСоответствие - Карта, реализованная на базе соответствия.
27+
28+
### Очереди
29+
30+
Очереди - коллекции элементов, в которых элементы добавляются в конец и извлекаются из начала.
31+
32+
1. ОчередьМассив - Очередь, реализованная на базе массива.
33+
1. ПриоритетнаяОчередь - Очередь, реализованная на базе массива, которая сортируются элементы в порядке заданным компаратором.
34+
1. ОчередьОтложенных - Потокобезопасная очередь, частный случай приоритетной очереди, элементы которой должны иметь метод `Задержка` которые возвращает количество миллисекунд до того как элемент станет доступным для извлечения, элементы очереди сортируются в порядке возрастания задержек.
35+
36+
## Представления
37+
38+
Представления - специальные объекты "обёртки" для коллекций, в конструктор которой передаётся коллекция, и которая предоставляет дополнительные гарантии.
39+
40+
### Синхронизированные
41+
42+
Синхронизированные представления предоставляют потокобезопасные обёртки для коллекций.
3043

31-
## Диаграмма классов:
44+
1. СинхронизированнаяКоллекция - Представление реализующее интерфейс `Коллекция`.
45+
1. СинхронизированноеМножество - Объект реализующий интерфейс `Множество`.
46+
1. СинхронизированныйСписок - Объект реализующий интерфейс `Список`.
47+
1. СинхронизированнаяКарта - Объект реализующий интерфейс `Карта`.
48+
1. СинхронизированнаяОчередь - Объект реализующий интерфейс `Очередь`.
49+
50+
### Фиксированные
51+
52+
Фиксированные представления предоставляют неизменяемые обёртки для коллекций.
53+
54+
1. ФиксированнаяКоллекция - Представление реализующее интерфейс `ЧитаемаяКоллекция`.
55+
1. ФиксированноеМножество - Объект реализующий интерфейс `ЧитаемоеМножество`.
56+
1. ФиксированныйСписок - Объект реализующий интерфейс `ЧитаемыйСписок`.
57+
1. ФиксированнаяКарта - Объект реализующий интерфейс `ЧитаемаяКарта`.
58+
59+
## Диаграмма классов
3260

3361
### Обходимое
62+
3463
---
3564

3665
```mermaid
@@ -80,6 +109,7 @@ class СинхронизированнаяКоллекция {
80109
```
81110

82111
### Множество
112+
83113
---
84114

85115
```mermaid
@@ -115,6 +145,7 @@ class СинхронизированноеМножество {
115145
```
116146

117147
### Список
148+
118149
---
119150

120151
```mermaid
@@ -161,6 +192,7 @@ class СинхронизированныйСписок {
161192
```
162193

163194
### Очередь
195+
164196
---
165197

166198
```mermaid
@@ -205,6 +237,7 @@ class СинхронизированнаяОчередь {
205237
```
206238

207239
### Карта
240+
208241
---
209242

210243
```mermaid
@@ -261,6 +294,7 @@ class СинхронизированнаяКарта {
261294
```
262295

263296
### Итератор
297+
264298
---
265299

266300
```mermaid

packagedef

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
Описание.Имя("collectionos")
2-
.Версия("0.8.1")
2+
.Версия("0.8.2")
33
.Автор("Кирилл Черненко")
44
.АдресАвтора("https://github.com/sfaqer")
55
.Описание("Фреймворк коллекций для OneScript")
@@ -20,5 +20,8 @@
2020
.РазработкаЗависитОт("coverage", "0.7.0")
2121
.РазработкаЗависитОт("fs", "1.2.0")
2222
.РазработкаЗависитОт("asserts", "1.4.0")
23-
.РазработкаЗависитОт("decorator", "2.0.2")
23+
.РазработкаЗависитОт("decorator", "2.0.3")
24+
// Вообще разработка конечно зависит, но ввиду того что extends требует 2.0+,
25+
// а нужен он только для одного теста, то пока так.
26+
// .РазработкаЗависитОт("extends", "0.2.0")
2427
;

src/internal/Классы/Интерфейсы/Итератор.os

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
КонецПроцедуры
55

66
&Интерфейс
7-
&Наследует("ЧитающийИтератор")
7+
&Расширяет("ЧитающийИтератор")
88
Процедура ПриСозданииОбъекта()
99
ВызватьИсключение "Нельзя создать экземпляр интерфейса";
1010
КонецПроцедуры

src/internal/Классы/Интерфейсы/Карта.os

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@
242242
КонецФункции
243243

244244
&Интерфейс
245-
&Наследует("ЧитаемаяКарта")
245+
&Расширяет("ЧитаемаяКарта")
246246
Процедура ПриСозданииОбъекта()
247247
ВызватьИсключение "Нельзя создать экземпляр интерфейса";
248248
КонецПроцедуры

src/internal/Классы/Интерфейсы/Коллекция.os

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@
8484
КонецФункции
8585

8686
&Интерфейс
87-
&Наследует("ЧитаемаяКоллекция")
87+
&Расширяет("ЧитаемаяКоллекция")
8888
Процедура ПриСозданииОбъекта()
8989
ВызватьИсключение "Нельзя создать экземпляр интерфейса";
9090
КонецПроцедуры
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
&Интерфейс
2-
&Наследует("ЧитаемоеМножество")
3-
&Наследует("Коллекция")
2+
&Расширяет("ЧитаемоеМножество")
3+
&Расширяет("Коллекция")
44
Процедура ПриСозданииОбъекта()
55
ВызватьИсключение "Нельзя создать экземпляр интерфейса";
66
КонецПроцедуры

src/internal/Классы/Интерфейсы/Очередь.os

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@
2020
КонецФункции
2121

2222
&Интерфейс
23-
&Наследует("ЧитаемаяОчередь")
24-
&Наследует("Коллекция")
23+
&Расширяет("ЧитаемаяОчередь")
24+
&Расширяет("Коллекция")
2525
Процедура ПриСозданииОбъекта()
2626
ВызватьИсключение "Нельзя создать экземпляр интерфейса";
2727
КонецПроцедуры

src/internal/Классы/Интерфейсы/Список.os

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,8 @@
105105
КонецФункции
106106

107107
&Интерфейс
108-
&Наследует("ЧитаемыйСписок")
109-
&Наследует("Коллекция")
108+
&Расширяет("ЧитаемыйСписок")
109+
&Расширяет("Коллекция")
110110
Процедура ПриСозданииОбъекта()
111111
ВызватьИсключение "Нельзя создать экземпляр интерфейса";
112112
КонецПроцедуры

src/internal/Классы/Интерфейсы/СписокИтератор.os

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
КонецПроцедуры
1616

1717
&Интерфейс
18-
&Наследует("Итератор")
18+
&Расширяет("Итератор")
1919
Процедура ПриСозданииОбъекта()
2020
ВызватьИсключение "Нельзя создать экземпляр интерфейса";
2121
КонецПроцедуры

0 commit comments

Comments
 (0)