Блоки кода#

Используемая разметка примеров кода основана на синтаксических возможностях MyST. Более подробная информация: https://myst-parser.readthedocs.io/en/latest/syntax/code_and_apis.html

Строчный (inline) код#

Строчные (inline) кодовые элементы обычно используются внутри строки текста (без выделения в отдельный абзац) для выделения `названий параметров`, `переменных`, `функций`, `команд`, `методов` и т. п.

В качестве идентификатора языка можно использовать любое значение, указанное в колонке Short name(s) в таблице [Pygments syntax highlighter - Languages](https://pygments.org/languages/).

Inline Java code: `a = "some string;"`{l=java}

Inline JS code: `document.getElementById("hello").innerHTML = "Hello, world!";`{l=js}

Строчные (inline) кодовые элементы обычно используются внутри строки текста (без выделения в отдельный абзац) для выделения названий параметров, переменных, функций, команд, методов и т. п.

В качестве идентификатора языка можно использовать любое значение, указанное в колонке Short name(s) в таблице Pygments syntax highlighter - Languages.

Inline Java code: a = "some string;"

Inline JS code: document.getElementById("hello").innerHTML = "Hello, world!";

Блок кода#

{lineno-start=1 emphasize-lines="10,14"}
```yaml
server:
  port: 8080
liquibase:
  base: &base
    user: <admin>
    password: <admin_password>
  test:
    <<: *base
    default-schema: ds
    url: ${database.test.url}
  access-control:
    <<: *base
    default-schema: test_access_control
    url: ${database.access-control.url}
```
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
server:
  port: 8080
liquibase:
  base: &base
    user: <admin>
    password: <admin_password>
  test:
    <<: *base
    default-schema: ds
    url: ${database.test.url}
  access-control:
    <<: *base
    default-schema: test_access_control
    url: ${database.access-control.url}

Вставка кода из файла#

Код примера может быть размещен в отдельном файле, а его фрагменты (диапазон строк) можно включать в текст документа как кодовые блоки c помощью директивы literalinclude. Путь до файла может быть относительным или абсолютным (корнем в данном случае является папка, где расположен doc-config.ini). Для указания языка используйте опцию :language:.

Весь файл#

```{literalinclude} resources/application-local.yml
:language: yaml
```
server:
  port: 8080
liquibase:
  base: &base
    user: admin_user
    password: admin_password
  test:
    <<: *base
    default-schema: test
    url: ${database.test.url}
  access-control:
    <<: *base
    default-schema: test_access_control
    url: ${database.access-control.url}
database:
  base: &base
    username: app_user
    password: app_password
    ip: 10.0.0.1
    port: 5432
    instance: test
  test:
    <<: *base
    schema: test
    url: jdbc:postgresql://${database.test.ip}:${database.test.port}/${database.test.instance}?currentSchema=${database.test.schema}&stringtype=unspecified&prepareThreshold=0
  access-control:
    <<: *base
    schema: test_access_control
    url: jdbc:postgresql://${database.access-control.ip}:${database.access-control.port}/${database.access-control.instance}?currentSchema=${database.access-control.schema}&stringtype=unspecified&prepareThreshold=0
keycloak:
  url: http://10.0.0.1:8081/auth
  login: kc_user
  password: kc_password
togglz:
  console:
    enabled: false
springdoc:
  api-docs:
    enabled: false
  swagger-ui:
    enabled: false
test:
  core:
    unit:
      confidential:
        mask:
          enabled: true
  file-srv:
    #Обратите внимание: изменение данных параметров в промышленной среде может привести к потере файлов
    tenants:
      DEFAULT:
        functions:
          STANDART:
            storageName: s3test
            bucketName: test_bucket
            rootFolder: temp_folder
    storages:
      s3test:
        type: S3
        url: https://test_bucket.ru-moscow.sbercloud.ru
        disableSsl: true
        accessKeyId: key
        secretKey: secret
        signingRegion: "ru"
  event:
    kafka:
      enabled: true
      servers: 10.0.0.1:9092
      stand.name: dev
      clientId: local-notifications-consumer
    notifications:
      producer:
        mainNotificationProducer:
          # Deprecated(since = 0.17)
          topicName: notifications
          topicNameV2: notifications
      consumer:
        mainNotificationConsumer:
          # Deprecated(since = 0.17)
          topicName: notifications
          topicNameV2: notifications
          groupName: notifications-group
          concurrency: 1
  email:
    host: 10.0.0.1
    port: 25
    mailFrom: "noreply@sbt.test"
    properties:
  domain: http://10.0.0.1/test/
  auth:
    context-token-mapping:
      tenant: organization
      externalId: sberpdi
      firstName: given_name
      lastName: family_name
      middleName: patronymic
      login: sberpdi
      email: email
    role-to-powers:
      ROLE_USER: >
        unit:read,
        unit:write,
        unit:create,
        unit:update,
        unit:delete,
        unit_type:read,
        space:read,
        space:write,
        user:read,
        space_type:read,
        user_group:read
      ROLE_TENANT_ADMIN: >
        unit_type:read,
        unit_type:write,
        link_type:write,
        permission:write,
        space_type:write,
        space_type:read,
        notification_schema:write,
        notification_schema:read,
        user_group:read,
        user_group:write,
        board:write

Часть файла#

Чтобы включить определенные фрагменты кода из файла, можно использовать следующие опции:

  • start-at или start-after

  • end-at или end-before

  • lines

Пример 1#

Блок настроек между liquibase: и database::

```{literalinclude} resources/application-local.yml
:language: yaml
:start-at: "liquibase:"
:end-at: "database:"
```
liquibase:
  base: &base
    user: admin_user
    password: admin_password
  test:
    <<: *base
    default-schema: test
    url: ${database.test.url}
  access-control:
    <<: *base
    default-schema: test_access_control
    url: ${database.access-control.url}
database:

Пример 2#

Блок настроек на 15-29 строке:

```{literalinclude} resources/application-local.yml
:language: yaml
:lines: 15-29
```
database:
  base: &base
    username: app_user
    password: app_password
    ip: 10.0.0.1
    port: 5432
    instance: test
  test:
    <<: *base
    schema: test
    url: jdbc:postgresql://${database.test.ip}:${database.test.port}/${database.test.instance}?currentSchema=${database.test.schema}&stringtype=unspecified&prepareThreshold=0
  access-control:
    <<: *base
    schema: test_access_control
    url: jdbc:postgresql://${database.access-control.ip}:${database.access-control.port}/${database.access-control.instance}?currentSchema=${database.access-control.schema}&stringtype=unspecified&prepareThreshold=0

Интерактивные аннотации строк кода#

С помощью синтаксиса rST есть возможность динамически показывать аннотации к строкам кода и оформлять содержимое аннотаций в произвольном виде. Используйте rST директиву code-annotations для создания аннотаций. Внутри code-annotations каждая аннотация идентифицируется как конкретный элемент упорядоченного списка. В комментируемой строке кода ссылка на аннотацию указывается после символа комментария характерного для используемого языка программирования.

```{eval-rst}
.. code-block:: python

    width = 300;  # (1)
    height = 500; # (2)

.. code-annotations::

    1. Задаем ширину области.

    2. .. admonition:: Внимание
           :class: attention

           Высота не должна быть больше чем 500.
```
width = 300;  # (1)
height = 500; # (2)
  1. Задаем ширину области.

  2. Внимание

    Высота не должна быть больше чем 500.