Skip to content

Commit 07ae00d

Browse files
committed
Ссылки, код-группы
1 parent fa1bd23 commit 07ae00d

21 files changed

+134
-82
lines changed

docs/index.md

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,6 @@ hero:
1313
- theme: brand
1414
text: Перейти в документацию
1515
link: /getting-started/about-autumn
16-
# - theme: alt
17-
# text: GitHub
18-
# link: https://github.com/autumn-library/autumn
1916
features:
2017

2118
- title: Компонентный подход
@@ -41,12 +38,12 @@ features:
4138
- title: Annotations
4239
details: Библиотека для работы с аннотациями, может использоваться отдельно от экосистемы ОСени
4340
icon: 🍁
44-
link: https://autumn-library.github.io/annotations
41+
link: /annotations
4542
linkText: Документация
4643
- title: Autumn-collections
4744
details: Модуль реализует функциональность прилепляемых коллекций для ОСени.
4845
icon: 🐿️
49-
link: https://autumn-library.github.io/autumn-collections
46+
link: /autumn-collections
5047
linkText: Документация
5148

5249
- title: "Дополнительные модули общего назначения"
@@ -91,7 +88,7 @@ features:
9188
- title: Winow
9289
details: Веб-сервер на чистом OneScript.
9390
icon: 🍷
94-
link: https://autumn-library.github.io/winow
91+
link: /winow
9592
linkText: Документация
9693
- title: ovm
9794
details: Менеджер версий OneScript на базе autumn-cli.

docs/products/autumn/framework-elements/010-component-declaration.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ title: Объявление компонента
88

99
Основной способ обозначения класса как желудя - это навешивание аннотации `&Желудь` над конструктором объекта. Вроде такого:
1010

11-
```bsl
12-
// file: Классы/ПроверяторВерсий.os
11+
::: code-group
1312

13+
```bsl [Классы/ПроверяторВерсий.os]
1414
&Желудь
1515
Процедура ПриСозданииОбъекта()
1616
@@ -19,4 +19,6 @@ title: Объявление компонента
1919
... прочая очень нужная, но абсолютно не интересная логика класса.
2020
```
2121

22+
:::
23+
2224
Главной характеристикой желудя является его имя. По умолчанию имя берется из имени типа (`ПроверяторВерсий` для случая выше), но может быть переопределено в параметре аннотации `&Желудь`.

docs/products/autumn/framework-elements/020-component-instance.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,14 @@ title: Получение экземпляра компонента
88

99
В создании компонентов нам поможет `Поделка`. Зря что ли мы накидывали в нее желудей?
1010

11-
```bsl
12-
// file: main.os
11+
::: code-group
1312

13+
```bsl [main.os]
1414
ПроверяторВерсий = Поделка.НайтиЖелудь("ПроверяторВерсий");
1515
1616
ПроверяторВерсий.ЧтоНибудьПроверить();
1717
```
1818

19+
:::
20+
1921
В результате выполнения куска кода выше в переменную `ПроверяторВерсий` прилетит свеженький блестящий желудь, добавленный ранее под именем "ПроверяторВерсий". Легко и просто, не правда ли?

docs/products/autumn/framework-elements/030-components-binding.md

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ title: Связывание компонентов между собой
88

99
Для указания зависимостей желудя служит аннотация `&Пластилин`.
1010

11-
```bsl
12-
// file: Классы/ОбновляторВерсий.os
11+
::: code-group
1312

13+
```bsl [Классы/ОбновляторВерсий.os]
1414
Перем _ПроверяторВерсий;
1515
Перем _Логин;
1616
Перем _Пароль;
@@ -27,16 +27,20 @@ title: Связывание компонентов между собой
2727
КонецПроцедуры
2828
```
2929

30-
Как же создать такой сложный желудь, сверху донизу обмазанный пластилином? Точно так же.
30+
:::
3131

32-
```bsl
33-
// file: main.os
32+
Как же создать такой сложный желудь, сверху донизу обмазанный пластилином? Точно так же.
3433

34+
::: code-group
35+
36+
```bsl [main.os]
3537
ОбновляторВерсий = Поделка.НайтиЖелудь("ОбновляторВерсий");
3638
3739
ОбновляторВерсий.ОбновисьЧтоБыТамНеСтояло();
3840
```
3941

42+
:::
43+
4044
Заметьте, никаких зависимостей передавать не нужно. "ОСень" все взяла на себя - по именам параметров нашла зарегистрированные желуди и передала их в конструктор объекта.
4145

4246
Если вы начитались Овидия в оригинале или в вас вселился СОТОНА, а может просто потеряли совесть и захотели греческих букв в именах переменных, вы можете подсказать "ОСени", что за зависимость нужна в данном конкретном случае.

docs/products/autumn/framework-elements/040-components-factory.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ title: Фабрика компонентов
1212

1313
Итак, мы хотим передать Обновлятору логин и пароль в виде желудей. Для этого в новом классе, помеченном аннотацией `&Дуб`, нужно объявить два метода, помеченные аннотацией `&Завязь`. На дубе завязи, из завязей получатся желуди. Логично? Логично. Поехали!
1414

15-
```bsl
16-
// file: Классы/ДанныеАвторизации.os
15+
::: code-group
1716

17+
```bsl [Классы/ДанныеАвторизации.os]
1818
&Дуб
1919
Процедура ПриСозданииОбъекта()
2020
КонецПроцедуры
@@ -34,6 +34,8 @@ title: Фабрика компонентов
3434
КонецФункции
3535
```
3636

37+
:::
38+
3739
В листинге выше объявляются две функции-конструктора, возвращающие желуди. Как вы видите, желудь может быть чем угодно, а что угодно (в данном случае - строка) может быть желудем.
3840

3941
Т. к. `Дуб` - это тоже желудь, а методы с "Завязью" - это псевдо-конструкторы, то такой метод может быть скреплен пластилином с другими желудями. Плохие желуди могут даже хардкодить значения паролей, но мы закроем на это глаза.

docs/products/autumn/framework-elements/050-dependency-injection.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ title: Внедрение зависимостей в поля и функции
66

77
Не всегда бывает удобно пихать желуди прямо в конструктор. Например, желуди могут так сильно зависеть друг от друга, что образуют циклическую зависимость. Как Заяц-Волк, только Желудь-Желудь. В таком случае внедрить зависимости через конструктор не получится. На помощь нам придут внедрение желудей через поля и функции, принимающие значения.
88

9-
```bsl
10-
// file: Классы/Обновлятор1С.os
9+
::: code-group
1110

11+
```bsl [Классы/Обновлятор1С.os]
1212
&Пластилин
1313
Перем Логин;
1414
@@ -24,6 +24,8 @@ title: Внедрение зависимостей в поля и функции
2424
КонецПроцедуры
2525
```
2626

27+
:::
28+
2729
При получении желудя `Обновлятор1С` зависимость `Логин` будет внедрена в поле напрямую, а зависимость `Пароль` установлена через процедуру `УстановитьПароль`.
2830

2931
Как и в случае с подстановкой желудей в конструктор, имя конкретного желудя может быть переопределено в параметре аннотации `&Пластилин`. По умолчанию имя внедряемого желудя берется либо из имени поля ("Логин") либо из имени метода, из которого отбрасывается префикс "Установить": `УстановитьПароль` `->` `Пароль`.

docs/products/autumn/framework-elements/060-app-settings-injection.md

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@ title: Внедрение настроек приложения
1414
1515
Конфигурационный файл может быть в виде `json`, `yaml` или `ini` файла, называется `autumn-properties.json`/`autumn-properties.yml`/`autumn-properties.ini` соответственно и ищется ОСенью в каталоге запуска приложения или в подкаталоге `src`.
1616

17-
```json
17+
::: code-group
18+
19+
```json [autumn-properties.json]
1820
{
1921
"Логин": "user",
2022
"Пароль": "pass",
@@ -24,11 +26,14 @@ title: Внедрение настроек приложения
2426
}
2527
```
2628

29+
:::
30+
31+
2732
А вот так их можно использовать в жёлуде:
2833

29-
```bsl
30-
// file: Классы/Обновлятор1С.os
34+
::: code-group
3135

36+
```bsl [Классы/Обновлятор1С.os]
3237
&Деталька
3338
Перем Логин;
3439
@@ -46,6 +51,8 @@ title: Внедрение настроек приложения
4651
КонецПроцедуры
4752
```
4853

54+
:::
55+
4956
Вы можете добавлять к желудю любые детальки вне зависимости от того, есть они в конфигурационном файле или нет.
5057

5158
По умолчанию "ОСень" будет пытаться найти значение настройки по имени параметра конструктора: в json есть параметры "Логин" и "Пароль", в конструкторе есть параметры "Логин" и "Пароль", искра, буря, безумие!

docs/products/autumn/framework-elements/070-custom-arguments.md

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ title: Произвольные аргументы конструктора
88

99
Для таких случаев в ОСени есть аннотация `&Блестяшка`.
1010

11-
```bsl
12-
// file: Классы/ЛенивыйЖелудь.os
11+
::: code-group
1312

13+
```bsl [Классы/ЛенивыйЖелудь.os]
1414
&Желудь
1515
Процедура ПриСозданииОбъекта(
1616
&Пластилин ПроверяторВерсий
@@ -19,6 +19,8 @@ title: Произвольные аргументы конструктора
1919
КонецПроцедуры
2020
```
2121

22+
:::
23+
2224
Как ее использовать? Двумя способами. Первый - это передать все параметры конструктора в виде массива в метод `Поделка.НайтиЖелудь()`:
2325

2426
```bsl
@@ -46,9 +48,9 @@ title: Произвольные аргументы конструктора
4648

4749
`&Блестяшки` можно внедрять только в конструктор желудя. Внедрение в поля и методы жёлудя не поддерживается. Однако вы можете объявить `&Дуб` и `&Завязь`, куда `&Блестяшку` передать таки можно:
4850

49-
```bsl
50-
// file: Классы/ДубСЛенивымЖелудем.os
51+
::: code-group
5152

53+
```bsl [Классы/ДубСЛенивымЖелудем.os]
5254
&Дуб
5355
Процедура ПриСозданииОбъекта()
5456
КонецПроцедуры
@@ -65,11 +67,13 @@ title: Произвольные аргументы конструктора
6567
КонецПроцедуры
6668
```
6769

70+
:::
71+
6872
И в заключение темы, `ЛенивыйЖелудь` (не важно, созданный конструктором или `&Завязью`) можно внедрить в другой желудь, воспользовавшись повторяемым параметром `Блестяшка` в аннотации `&Пластилин`:
6973

70-
```bsl
71-
// file: Классы/ЛюбительЛенивыхЖелудей.os
74+
::: code-group
7275

76+
```bsl [Классы/ЛюбительЛенивыхЖелудей.os]
7377
&Пластилин(Блестяшка = "Шестью девять?")
7478
Перем ЛенивыйЖелудь;
7579
@@ -78,6 +82,8 @@ title: Произвольные аргументы конструктора
7882
КонецПроцедуры
7983
```
8084

85+
:::
86+
8187
При поиске любителя ленивых желудей в него будет прилеплен `ЛенивыйЖелудь` с вопросом `Шестью девять?`.
8288

8389
Повторяемые параметры аннотаций позволяют указывать один и тот же параметр аннотации несколько раз с разными значениями. Например, если у желудя в конструктор принимается несколько блестяшек, то и внедрить такой желудь можно указав несколько блестяшек в аннотации `&Пластилин`:

docs/products/autumn/framework-elements/080-instance-generator.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ title: Генератор экземпляров компонентов
66

77
Иногда возникает необходимость получить желудь-зависимость отложено. Например, по какому-то условию или с передачей произвольных параметров. Эту задачу можно решить через внедрение в желудь `Поделки` целиком, но умные книжки учат нас, что зависеть от глобального контекста приложения - это вообще-то фу-фу-фу и не надо так. Для уменьшения связывания полезного кода с инфраструктурным в ОСени есть дополнительная аннотация `&Табакерка`. Если ее навесить над полем или параметром метода, над которым уже висит `&Пластилин`, `&Деталька` или `&Блестяшка`, то вместо внедрения в поле или параметр непосредственно нужного значения будет внедрен специальный объект типа `Табакерка`, который позволяет достать желудь/детальку/блестяшку по требованию.
88

9-
```bsl
10-
// file: Классы/КлассСТабакеркой.os
9+
::: code-group
1110

11+
```bsl [Классы/КлассСТабакеркой.os]
1212
&Табакерка
1313
&Пластилин
1414
Перем ПроверяторВерсий;
@@ -24,6 +24,8 @@ title: Генератор экземпляров компонентов
2424
КонецПроцедуры
2525
```
2626

27+
:::
28+
2729
В примере выше в поле `ПроверяторВерсий` будет внедрен объект типа `Табакерка`, который позволит получить желудь `ПроверяторВерсий` по требованию.
2830

2931
В метод `Табакерка.Достать()` можно передать параметр-массив с прилепляемыми частицами, аналогично тому, как это делается для `Поделка.НайтиЖелудь(ИмяЖелудя, МассивПрилепляемыхЧастиц)`. Таким образом, можно получить желудь с прилепленными к нему блестяшками или другими рассчитываемыми желудями.

docs/products/autumn/framework-elements/090-aliases.md

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,25 +6,29 @@ title: Алиасы компонентов
66

77
У желудей все как у людей. Есть свои увлечения, субкультуры и даже может быть `&Прозвище`. Желудь `Василий` в силу своего темного прошлого "у своих" зовется не иначе как `Васян`. Как это отразить в ОСени?
88

9-
```bsl
10-
// file: Классы/Василий.os
9+
::: code-group
1110

11+
```bsl [Классы/Василий.os]
1212
&Желудь
1313
&Прозвище("Васян")
1414
Процедура ПриСозданииОбъекта()
1515
КонецПроцедуры
1616
1717
```
1818

19+
:::
20+
1921
Как же разные группы желудей могут обращаться к нашему Василию? Сделать это можно и по имени и по прозвищу. И отзовётся при этом один и тот же желудь:
2022

21-
```bsl
22-
// file: main.os
23+
::: code-group
2324

25+
```bsl [main.os]
2426
Василий = Поделка.НайтиЖелудь("Василий");
2527
Васян = Поделка.НайтиЖелудь("Васян");
2628
2729
Ожидаем.Что(Василий).Равен(Васян);
2830
```
2931

32+
:::
33+
3034
Василий может иметь много прозвищ. Поэтому аннотация &Прозвище повторяемая, т. е. на желудь ее можно навесить несколько раз с разными значениями и величать кого угодно и как угодно.

0 commit comments

Comments
 (0)